这段时间一直再研究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"} |

------------------------------------------------------------------------------------+

好了这个到此结束,研究了一晚好累,休息一下。

本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1612133,如需转载请自行联系原作者

saltstack return数据实时返回收集相关推荐

  1. Spark项目实战:大数据实时流处理日志(非常详细)

    实战概览 一.实战内容 二.大数据实时流处理分析系统简介 1.需求 2.背景及架构 三.实战所用到的架构和涉及的知识 1.后端架构 2.前端框架 四.项目实战 1.后端开发实战 1.构建项目 2.引入 ...

  2. 基于HBase+ ElasticSearch的海量交通数据实时存取方案设计

    董长青,任女尔,张庆余,田玉靖 北京卡达克数据技术中心软件业务本部,天津 300300 摘要:交通流数据具有数据海量.存储和交互速率快等特征,因此其数据的采集.存储及检索成为了车辆远程监控平台中的关键 ...

  3. 优雅地实现一个高效、异步数据实时刷新的列表

    今日科技快讯 2月11日消息,据CNBC报道,当特斯拉公司于2019年1月宣布第二轮裁员以控制成本时,一个关键部门受到的打击尤为沉重.两名被裁汰的员工表示,负责向北美地区客户交付Model 3电动汽车 ...

  4. 使用WebSocket解决页面数据实时同步

    功能: 一个页面需要在不同的PC端访问,在某一PC端对网页内容发生改变时,其他PC端页面数据实时更新显示. 实现: 采用webSocket+AOP通知的方式实现 思路: 当页面数据修改时,会通过后端保 ...

  5. web端数据实时更新是如何实现的?

    web端数据实时更新是如何实现的? 为了实现Web端数据的实时更新,我们可以使用两种方式. Ajax 轮询,通过定时器,定时刷新数据,但是实时性不够,且造成服务器的压力比较大 HTTP协议工作于客户端 ...

  6. binlog流程 mysql_小米 MySQL 数据实时同步到大数据数仓的架构与实践

    背景MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓:如果这时还有实时BI展示的需求,对于mysql来说 ...

  7. 【大数据实时计算框架】Storm框架

    一.大数据实时计算框架 1.什么是实时计算?流式计算? (一)什么是Storm? Storm为分布式实时计算提供了一组通用原语,可被用于"流处理"之中,实时处理消息并更新数据库.这 ...

  8. 使用php+swoole对client数据实时更新

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇提到了swoole的基本使用,现在通过几行基本的语句来实现比较复杂的逻辑操作: 先说一下业务场景.我们目前的大多数应用都 ...

  9. mysql增量同步kafka_MySQL数据实时增量同步到Kafka - Flume

    写在前面的话 需求,将MySQL里的数据实时增量同步到Kafka.接到活儿的时候,第一个想法就是通过读取MySQL的binlog日志,将数据写到Kafka.不过对比了一些工具,例如:Canel,Dat ...

最新文章

  1. server sql 数据c盘迁移d盘_oracle 11g dbf数据文件从C盘迁移到D盘
  2. BZOJ 2142 礼物(拓展Lucas,中国剩余定理)【BZOJ修复工程】
  3. 「尖峰对话」问题征集:向张宏江和John Hopcroft 近距离提问
  4. 抢鲜!华硕240MIMOWL-566gM
  5. 第7篇-JAVA面向对象Ⅲ
  6. 信息资源管理的标准与法规
  7. zuul在zuulFilter获取返回值后,接口获取不到数据
  8. 详细记录如何在跨域请求中携带cookie
  9. ios 返回不会自动刷新页面问题
  10. 【转】我的第一个Python小程序
  11. hashmap为什么线程不安全_什么时候线程不安全?怎样做到线程安全?怎么扩展线程安全的类?...
  12. conda使用报错:ImportError:DLL load failed
  13. java8 stringbuilder_有了Java8的“+”真的可以不要StringBuilder了吗
  14. Java基础之字符串详细比较
  15. oracle删除列的限制,深入理解Oracle索引(10):索引列字符类型统计信息的32位限制...
  16. Django组件 中间件
  17. Failed installing 'Tomcat9' service
  18. 模块化的ESP8266小电视设计与制作
  19. 密信(MeSince) — 免费的全自动邮件加密软件
  20. Java ArrayList集合案例(上课笔记)

热门文章

  1. 盘阵多路径学习(转)
  2. LC 231 power of 2
  3. centos磁盘满了,查找大文件并清理
  4. 深度学习开源项目学习
  5. 【主机】软件(程序)的运行机制
  6. 用 radial-gradient 实现波浪效果
  7. “数据结构+算法”视角的Asprova
  8. 50行代码实现3D模拟真实撒金币动效
  9. 【18】Python半成品购物车
  10. maven笔记(2)-- 构建Java Project 及 Maven命令使用