背景:salt自带的有很多可选的returner,但是都需要在minion做配置,我感觉这点挺操蛋,而且正好我们平台上在使用fluent做采集,于是就自定义一个reutren,然后用fluent采集,处理,入库 过程如下: 1:mysql表结构: CREATE TABLE `fluent`;CREATE TABLE `salt_returns
背景:
salt自带的有很多可选的returner,但是都需要在minion做配置,我感觉这点挺操蛋,
而且正好我们平台上在使用fluent做采集,于是就自定义一个reutren,然后用fluent采集,处理,入库
过程如下:
1:mysql表结构:
1 2 3 4 5 6 7 8 9 10 11 12 | 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的目录,这个目录虽然是默认的,但是默认并没有创建 :(
1 | mkdir /srv/salt/_returners
|
自定义reuters:
主要就是returner(ret) 这个函数的定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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]+'
')
result.close()
|
同步到所有节点:
1 | salt '*' saltutil.sync_returners
|
执行命令
1 | salt '*' cmd.run 'ls /var' -- return local_return
|
查看结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | cat / var /log/salt/returner
"cmd.run" , "20130524052158870765" , "cache
cvs
db
empty
games
lib
local
lock
log
mail
nis
opt
preserve
run
spool
tmp
www
yp ", " minion1", true
|
3fluent采集
客户端配置:
1 2 3 4 5 6 7 8 9 10 | <source />
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
|
服务端配置:
1 2 3 4 5 6 7 8 9 10 11 12 | <source />
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
|
结果查询:
1 2 3 4 5 6 | 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 |
+------+----------------------+-----------------------------------------+---------------------+---------+---------+---------+
|
原文地址:salt+自定义returner+fluent+mysql进行结果采集, 感谢原作者分享。