转自:http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=24213&fromuid=15864

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

过程如下:

# 1:mysql表结构:

<pre>
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`)
)
</pre>
#2:自定义returner

创建默认自定义return的目录,这个目录虽然是默认的,但是默认并没有创建 
<pre>
      mkdir /srv/salt/_returners
</pre>
## 自定义reuters:
主要就是returner(ret) 这个函数的定义
<pre>
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()
</pre>
同步到所有节点:
<pre>
salt '*' saltutil.sync_returners
</pre>
执行命令
<pre>
salt '*' cmd.run 'ls /var' --return local_return
</pre>

查看结果:
<pre>
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
</pre>

# 3fluent采集

## 客户端配置:
<pre>
<source>
  type tail
  path /var/log/salt/returner
  pos_file /tmp/return_pos.log
  tag os.salt
  format /\"(?<fun>.*)\", \"(?<jid>\d+)\", (?<return>.*), \"(?<id>.*)\", (?<success>.*)/
</source>

<match os.*>
    type forward
    flush_interval 1s
    <server>
        host {{ pillar['host'] }}
        port {{ pillar['port'] }}
    </server>
</match>
</pre>

服务端配置:
<pre>
<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>

<match host.os.salt>
  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
</match>
</pre>

结果查询:
<pre>
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 |
+------+----------------------+-----------------------------------------+---------------------+---------+---------+---------+
</pre>

salt自定义returner+fluent+mysql进行数据采集相关推荐

  1. 最稳定的Nginx绿色环境,可无限自定义PHP和mysql版本、同时运行N个版本

    应学生要求,我最近更新了PHPWAMP,新版PHPWAMP添加了强大的Nginx站点管理 核心经过重新编译.完美解决不同版本和不同组件间的兼容,自动智能匹配系统所需的组件. 纯绿色解压即可使用,默认集 ...

  2. 数据库连接池之自定义连接池(mysql)

    数据库连接池之自定义连接池(mysql) 上一篇博文是"基于mysql的JDBC的增删改查的封装":点击可查看 今天本仙在昨天JDBC封装增删改查的基础上实现自定义的数据库连接池: ...

  3. 混合云备份利用自定义Workflow保护MySQL的实践

    众所周知数据库的保护面临着诸多问题,其中之一就是维护数据底层文件的一致性.除了与数据库应用的深度集成的备份方案(如SAP HANA Backint等),松耦合的通用备份软件较难做到完美的数据库的一致性 ...

  4. mysql 8.0 自定义函数_PHP+Mysql防止SQL注入的方法(life)

    这篇文章介绍的内容是关于PHP+Mysql防止SQL注入的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 我的官方群点击此处. 方法一: mysql_real_escape_str ...

  5. mysql写入监控_zabbix 自定义key 监控mysql增删查改

    vim /etc/zabbix/zabbix_agentd.d/mysql.conf ##zabbix_agentd.d在这个文件夹下的.conf,都会被agent读取,我们这里新建的一个配置文件方便 ...

  6. 5-13自定义sink到MySQL.

    addSink - Invokes a custom sink function. Flink comes bundled with connectors to other systems (such ...

  7. kafka结合mysql_logstash集成kafka,mysql实现数据采集

    logstash是一个非常灵活好用的数据采集框架工具,可以通过简单的配置满足绝大多数数据采集场景的需求. 采集数据一个非常典型的场景就是将数据先放到kafka队列里削峰,然后从kafka队列里读取数据 ...

  8. mysql 自定义查询函数,mysql自定义函数与动态查询

    摘要 腾兴网为您分享:mysql自定义函数与动态查询,智学网,夜读小说,小睡眠,西餐菜谱等软件知识,以及猫语翻译器,江西校讯通,刷qq业务的网站,房洽洽,学士服照,爱站seo工具包,虚拟声卡驱动,隐藏 ...

  9. SpringBoot中Logback常用配置以及自定义输出到MySql数据库

    之前基于SpringBoot开发的项目运行一段时间后,客户使用网站偶尔会出现接口调用失败的情况,每次产品经理询问是怎么回事的时候,都需要让运维提下最近的日志才能分析具体原因,这样时效性和便利性不能满足 ...

  10. zabbix自定义key监控mysql主从同步超简单!

    原理:利用在slave上运行show slave status获取Slave_IO_Running和Slave_SQL_Running的值 1.在zabbix客户端配置文件中加入: 首先要对mysql ...

最新文章

  1. Delphi真的没落了吗?_说Delphi母语Pascal的另一个应用
  2. Jenkins+Gradle+Git+Pyger+二维码搭建Android自动打包平台
  3. 六十八、SpringBoot连接MongoDB操作
  4. 【easy】206. Reverse Linked List 链表反转
  5. 完整的JS表单验证封装类
  6. xay loves trees
  7. SQL Server 2008 R2:error 26 开启远程连接详解
  8. Git中的“起源”是什么?
  9. 神经网络 测试集loss不下降_代码实践 | 全连接神经网络回归---房价预测
  10. 网上阅卷系统服务器,网上阅卷系统是什么?
  11. 【frida】lxhToolHTTPDecrypt安装使用问题
  12. Android开发之自定义DataTimePicker(日期时间选择器)
  13. 谷歌io大会 android p,十年最大革新 Android P现身谷歌I/O大会
  14. 蓝牙(BLE)自动配对
  15. 解决!适用黑苹果解决充电和使用电池中黑苹果自动睡眠
  16. Invalid header signature; read 0x3C0A0D0A0DBFBBEF, expected 0xE11AB1A1E011CFD0
  17. Vue官网2文档笔记
  18. AcWing 217. 绿豆蛙的归宿(期望dp)
  19. 20世纪最好的10个算法(转)
  20. Python由来以及用途

热门文章

  1. 支付宝客户端拉起支付
  2. mysql5.7.26搭建MGR单主及多主模式
  3. CSDN版主考核方案
  4. Android AdMob教程
  5. UVa 106 Fermat vs. Pythagoras(毕达哥拉斯定理)
  6. 论文阅读--SAP-SSE: Protecting Search Patterns and Access Patterns in Searchable Symmetric Encryption
  7. 如何把录音生成二维码,用微信扫一下就能听?分享语音音频转二维码的方法和技术原理
  8. 游戏手柄(JoyStick)的延时处理
  9. MATLAB神经网络工具箱(简单操作介绍)
  10. 网页版在线公式编辑器