视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
salt+自定义returner+fluent+mysql进行结果采集
2020-11-09 13:07:10 责编:小采
文档


背景:salt自带的有很多可选的returner,但是都需要在minion做配置,我感觉这点挺操蛋,而且正好我们平台上在使用fluent做采集,于是就自定义一个reutren,然后用fluent采集,处理,入库 过程如下: 1:mysql表结构: CREATE TABLE `fluent`;CREATE TABLE `salt_returns

背景: salt自带的有很多可选的returner,但是都需要在minion做配置,我感觉这点挺操蛋, 而且正好我们平台上在使用fluent做采集,于是就自定义一个reutren,然后用fluent采集,处理,入库

过程如下:

1:mysql表结构:

CREATE TABLE `fluent`;
CREATE TABLE `salt_returns` (
 `id` mediumint(9) NOT NULL AUTO_INCREMENT,
 `jid` char(20) DEFAULT NULL,
 `host_id` varchar(48) DEFAULT NULL,
 `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `fun` varchar(30) DEFAULT NULL,
 `return` text,
 `success` char(5) DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `idx_host_id` (`host_id`)
)

2:自定义returners

创建默认自定义return的目录,这个目录虽然是默认的,但是默认并没有创建 :(

 mkdir /srv/salt/_returners

自定义reuters:

主要就是returner(ret) 这个函数的定义

cat /srv/salt/_returners/lcoal_return.py
#coding=utf8
import json
def __virtual__():
 return 'local_return'
def returner(ret):
 '''
 Return data to the local file
 '''
 result_file = '/var/local/salt/returner'
 result = file(result_file,'a+')
 result.write(str(json.dumps(ret.values()))[1:-1]+'\n')
 result.close()

同步到所有节点:

salt '*' saltutil.sync_returners

执行命令

salt '*' cmd.run 'ls /var' --return local_return

查看结果:

cat /var/log/salt/returner
"cmd.run", "20130524052158870765", "cache\ncvs\ndb\nempty\ngames\nlib\nlocal\nlock\nlog\nmail\nnis\nopt\npreserve\nrun\nspool\ntmp\nwww\nyp", "minion1", true

3fluent采集

客户端配置:


 type tail
 path /var/log/salt/returner
 pos_file /tmp/return_pos.log
 tag os.salt
 format /\"(?.*)\", \"(?\d+)\", (?.*), \"(?.*)\", (?.*)/
 type forward
 flush_interval 1s
 host 
 port 

服务端配置:


 type forward
 port 24224
 bind 0.0.0.0
 type mysql
 host localhost
 database fluent
 username fluent
 password fluent
 key_names jid,id,fun,return,success
 sql INSERT INTO salt_returns (jid,host_id,fun,`return`,success) VALUES (?,?,?,?,?)
 flush_interval 5s

结果查询:

select * from salt_returns where success is not NULL and fun='cmd.run' limit 1;
+------+----------------------+-----------------------------------------+---------------------+---------+---------+---------+
| id | jid | host_id | time | fun | return | success |
+------+----------------------+-----------------------------------------+---------------------+---------+---------+---------+
| 2571 | 20130531184127393793 | test | 2013-05-31 10:38:29 | cmd.run | "/root" | true |
+------+----------------------+-----------------------------------------+---------------------+---------+---------+---------+
下载本文
显示全文
专题