saltstack return mysql_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"} |

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
if(!function_exists('mysql_pconnect')){ function mysql_pconnect($dbhost, $dbuser, $dbpass){ global $dbport; global $dbname; global $linkid; $linkid = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); return $linkid; } function mysql_select_db($dbname){ global $linkid; return mysqli_select_db($linkid,$dbname); } function mysql_fetch_array($result, $type=''){ if ($type) { return mysqli_fetch_array($result, $type); }else{ return mysqli_fetch_array($result); } } function mysql_fetch_assoc($result){ return mysqli_fetch_assoc($result); } function mysql_fetch_row($result){ return mysqli_fetch_row($result); } function mysql_free_result($result){ return mysqli_free_result($result); } function mysql_query($cxn){ global $linkid; return mysqli_query($linkid,$cxn); } function mysql_insert_id(){ global $linkid; return mysqli_insert_id($linkid); } function mysql_affected_rows(){ global $linkid; return mysqli_affected_rows($linkid); } function mysql_escape_string($data){ global $linkid; return mysqli_real_escape_string($linkid, $data); } function mysql_real_escape_string($data){ global $linkid; return mysqli_real_escape_string($linkid, $data); } function mysql_close(){ global $linkid; return mysqli_close($linkid); } function mysql_get_server_info(){ global $linkid; return mysqli_get_server_info($linkid); } function mysql_num_rows($result){ return mysqli_num_rows($result); } } error_reporting(E_ERROR | E_PARSE); error_reporting(E_ALL ^ E_WARNING); error_reporting(E_ALL & ~E_NOTICE); error_reporting(E_ALL ^ E_DEPRECATED);给代码加上注释
06-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值