saltstack return数据实时返回收集
这段时间一直再研究saltstack,折腾了两天终于把return数据返回数据库搞定了,这里写个博客备忘,前面的几个后面慢慢补充上来:
returners模块确实强大,他是把客户端执行命令返回的值可以直接返回到文件,或者保存到数据库里,这样我们做运维平台就可以有思路了,可以通过返回的数据库,平台的日志,或者通过返回的结果进行实时监控,把数据返回页面前端,好了开始。
步骤
1、mkdir /srv/salt/_returners #建立目录
2、cd /srv/salt/_returners
3、新建模块:
[root@mail ~]# cat /srv/salt/_returners/mysql_return.py
#!/usr/bin/python
import json
import MySQLdb
def __virtual__():
return 'mysql_return'
def returner(ret):
conn=MySQLdb.connect(host='192.168.10.205',user='salt',passwd='salt',db='salt',port=3306)
cursor=conn.cursor()
sql = 'INSERT INTO salt_returns(`fun`,`jid`,`return`,`id`,`success`,`full_ret`)VALUES (%s,%s,%s,%s,%s,%s)'
cursor.execute(sql % (str(json.dumps(ret['fun'])),str(json.dumps(ret['jid'])),str(json.dumps(ret['return'])),str(json.dumps(ret['id'])),'"'+str(ret['success'])+'"',"'"+json.dumps(ret)+"'"))
conn.commit()
cursor.close()
conn.close()
4、推送模块:
root@salt-master:~# salt '*' saltutil.sync_returners
5、建立数据库:(主要数据库的字段格式是固定的,跟官方一样)
CREATE DATABASE `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
建表
DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
`fun` varchar(50) NOT NULL,
`jid` varchar(255) NOT NULL,
`return` mediumtext NOT NULL,
`id` varchar(255) NOT NULL,
`success` varchar(10) NOT NULL,
`full_ret` mediumtext NOT NULL,
KEY `id` (`id`),
KEY `jid` (`jid`),
KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5、给数据库授权:
GRANT ALL PRIVILEGES ON salt.* TO 'salt'@'%' IDENTIFIED BY 'salt';
6、执行命令:
[root@mail ~]# salt 'mail.shihuasuan.com' cmd.run 'df -h ' --return mysql_return
mail.shihuasuan.com:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
50G 9.3G 38G 20% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/sda3 477M 73M 379M 17% /boot
/dev/mapper/VolGroup-lv_home
196G 3.6G 183G 2% /home
7、查看数据库返回的结果
mysql> select * from salt_returns;
+
| fun | jid | return | id | success | full_ret
| cmd.run | 20150205215339022527 | Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
50G 9.3G 38G 20% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/sda3 477M 73M 379M 17% /boot
/dev/mapper/VolGroup-lv_home
196G 3.6G 183G 2% /home | mail.shihuasuan.com | True | {"fun_args": ["df -h"], "jid": "20150205215339022527", "return": "Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
50G 9.3G 38G 20% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/sda3 477M 73M 379M 17% /boot
/dev/mapper/VolGroup-lv_home
196G 3.6G 183G 2% /home", "retcode": 0, "success": true, "fun": "cmd.run", "id": "mail.shihuasuan.com"} |
------------------------------------------------------------------------------------+
好了这个到此结束,研究了一晚好累,休息一下。
saltstack return数据实时返回收集相关推荐
- Spark项目实战:大数据实时流处理日志(非常详细)
实战概览 一.实战内容 二.大数据实时流处理分析系统简介 1.需求 2.背景及架构 三.实战所用到的架构和涉及的知识 1.后端架构 2.前端框架 四.项目实战 1.后端开发实战 1.构建项目 2.引入 ...
- 基于HBase+ ElasticSearch的海量交通数据实时存取方案设计
董长青,任女尔,张庆余,田玉靖 北京卡达克数据技术中心软件业务本部,天津 300300 摘要:交通流数据具有数据海量.存储和交互速率快等特征,因此其数据的采集.存储及检索成为了车辆远程监控平台中的关键 ...
- 优雅地实现一个高效、异步数据实时刷新的列表
今日科技快讯 2月11日消息,据CNBC报道,当特斯拉公司于2019年1月宣布第二轮裁员以控制成本时,一个关键部门受到的打击尤为沉重.两名被裁汰的员工表示,负责向北美地区客户交付Model 3电动汽车 ...
- 使用WebSocket解决页面数据实时同步
功能: 一个页面需要在不同的PC端访问,在某一PC端对网页内容发生改变时,其他PC端页面数据实时更新显示. 实现: 采用webSocket+AOP通知的方式实现 思路: 当页面数据修改时,会通过后端保 ...
- web端数据实时更新是如何实现的?
web端数据实时更新是如何实现的? 为了实现Web端数据的实时更新,我们可以使用两种方式. Ajax 轮询,通过定时器,定时刷新数据,但是实时性不够,且造成服务器的压力比较大 HTTP协议工作于客户端 ...
- binlog流程 mysql_小米 MySQL 数据实时同步到大数据数仓的架构与实践
背景MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓:如果这时还有实时BI展示的需求,对于mysql来说 ...
- 【大数据实时计算框架】Storm框架
一.大数据实时计算框架 1.什么是实时计算?流式计算? (一)什么是Storm? Storm为分布式实时计算提供了一组通用原语,可被用于"流处理"之中,实时处理消息并更新数据库.这 ...
- 使用php+swoole对client数据实时更新
2019独角兽企业重金招聘Python工程师标准>>> 上一篇提到了swoole的基本使用,现在通过几行基本的语句来实现比较复杂的逻辑操作: 先说一下业务场景.我们目前的大多数应用都 ...
- mysql增量同步kafka_MySQL数据实时增量同步到Kafka - Flume
写在前面的话 需求,将MySQL里的数据实时增量同步到Kafka.接到活儿的时候,第一个想法就是通过读取MySQL的binlog日志,将数据写到Kafka.不过对比了一些工具,例如:Canel,Dat ...
最新文章
- server sql 数据c盘迁移d盘_oracle 11g dbf数据文件从C盘迁移到D盘
- BZOJ 2142 礼物(拓展Lucas,中国剩余定理)【BZOJ修复工程】
- 「尖峰对话」问题征集:向张宏江和John Hopcroft 近距离提问
- 抢鲜!华硕240MIMOWL-566gM
- 第7篇-JAVA面向对象Ⅲ
- 信息资源管理的标准与法规
- zuul在zuulFilter获取返回值后,接口获取不到数据
- 详细记录如何在跨域请求中携带cookie
- ios 返回不会自动刷新页面问题
- 【转】我的第一个Python小程序
- hashmap为什么线程不安全_什么时候线程不安全?怎样做到线程安全?怎么扩展线程安全的类?...
- conda使用报错:ImportError:DLL load failed
- java8 stringbuilder_有了Java8的“+”真的可以不要StringBuilder了吗
- Java基础之字符串详细比较
- oracle删除列的限制,深入理解Oracle索引(10):索引列字符类型统计信息的32位限制...
- Django组件 中间件
- Failed installing 'Tomcat9' service
- 模块化的ESP8266小电视设计与制作
- 密信(MeSince) — 免费的全自动邮件加密软件
- Java ArrayList集合案例(上课笔记)