SaltStack执行状态收集入库-第五篇
实验目标
1.salt执行的状态然后结果写入MySQL可以方便查询执行salt执行的历史记录
实现方法
1.使用salt的return功能,是minion直接写入MySQL(相对比较麻烦)
2.使用master的jobcache写入到MySQL
环境
node1 192.168.56.11 角色 salt-master salt-minon DB
node2 192.168.56.12 角色 salt-minon
步骤
一,在master的配置文件添加以下内容
[root@linux-node1 salt]# tail - /etc/salt/master
#return: mysql
master_job_cache: mysql
mysql.host: '192.168.56.11'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port:
二,安装数据库,这里用MariaDB
[root@linux-node1 salt]# yum install -y mariadb mariadb-server
[root@linux-node1 salt]# systemctl start mariadb
[root@linux-node1 salt]#mysql_secure_installation #删除anonymous 删除test库 设置root密码 刷新权限表 关闭root远程登录
三,登陆到数据库创建salt数据和表
[root@linux-node1 salt]# mysql -uroot -p123456 #下面是创建数据库和表语句
CREATE DATABASE `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci; USE `salt`; --
-- Table structure for table `jids`
-- DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
`jid` varchar() NOT NULL,
`load` mediumtext NOT NULL,
UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX jid ON jids(jid) USING BTREE; --
-- Table structure for table `salt_returns`
-- DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
`fun` varchar() NOT NULL,
`jid` varchar() NOT NULL,
`return` mediumtext NOT NULL,
`id` varchar() NOT NULL,
`success` varchar() NOT NULL,
`full_ret` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
KEY `id` (`id`),
KEY `jid` (`jid`),
KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; --
-- Table structure for table `salt_events`
-- DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar() NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar() NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
四,授权用户
如果是授权的新用户就不需要刷新用户表
MariaDB [salt]> grant all on salt.* to salt@192.168.56.11 identified by 'salt';
Query OK, rows affected (0.03 sec)
五,测试用户是否能正常登陆
[root@linux-node1 salt]# mysql -h 192.168.56.11 -usalt -psalt
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server Copyright (c) , , Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
六,重启salt-master
因为修改了master的配置文件
[root@linux-node1 ~]# systemctl restart salt-master
七,先看下salt_returns表信息,是空的
MariaDB [(none)]> use salt
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
MariaDB [salt]> select * from salt_returns\G;
Empty set (0.00 sec)
八,salt执行远程命令
[root@linux-node1 salt]# salt "*" test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True [root@linux-node1 salt]# salt "*" cmd.run "w"
linux-node1.example.com:
:: up :, user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 192.168.56.1 : .00s .55s .37s /usr/bin/python /usr/bin/salt * cmd.run w
linux-node2.example.com:
:: up :, user, load average: 0.01, 0.02, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 192.168.56.1 : : .00s .00s -bash
九,再次查看salt库的salt_returns表信息,执行的数据已经记录到MariaDB中
MariaDB [salt]> use salt
Database changed
MariaDB [salt]> select * from salt_returns\G;
*************************** . row ***************************
fun: test.ping
jid:
return: true
id: linux-node2.example.com
success:
full_ret: {"fun_args": [], "jid": "", "return": true, "retcode": , "success": true, "cmd": "_return", "_stamp": "2017-10-22T20:23:59.736379", "fun": "test.ping", "id": "linux-node2.example.com"}
alter_time: -- ::
*************************** . row ***************************
fun: test.ping
jid:
return: true
id: linux-node1.example.com
success:
full_ret: {"fun_args": [], "jid": "", "return": true, "retcode": , "success": true, "cmd": "_return", "_stamp": "2017-10-22T20:23:59.757709", "fun": "test.ping", "id": "linux-node1.example.com"}
alter_time: -- ::
*************************** . row ***************************
fun: cmd.run
jid:
return: " 16:25:01 up 10:48, 1 user, load average: 0.00, 0.01, 0.05\nUSER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\nroot pts/0 192.168.56.1 16:01 5.00s 0.55s 0.37s /usr/bin/python /usr/bin/salt * cmd.run w"
id: linux-node1.example.com
success:
full_ret: {"fun_args": ["w"], "jid": "", "return": " 16:25:01 up 10:48, 1 user, load average: 0.00, 0.01, 0.05\nUSER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\nroot pts/0 192.168.56.1 16:01 5.00s 0.55s 0.37s /usr/bin/python /usr/bin/salt * cmd.run w", "retcode": , "success": true, "cmd": "_return", "_stamp": "2017-10-22T20:25:01.867563", "fun": "cmd.run", "id": "linux-node1.example.com"}
alter_time: -- ::
*************************** . row ***************************
fun: cmd.run
jid:
return: " 16:25:02 up 10:48, 1 user, load average: 0.01, 0.02, 0.05\nUSER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\nroot pts/0 192.168.56.1 16:01 23:13 0.00s 0.00s -bash"
id: linux-node2.example.com
success:
full_ret: {"fun_args": ["w"], "jid": "", "return": " 16:25:02 up 10:48, 1 user, load average: 0.01, 0.02, 0.05\nUSER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\nroot pts/0 192.168.56.1 16:01 23:13 0.00s 0.00s -bash", "retcode": , "success": true, "cmd": "_return", "_stamp": "2017-10-22T20:25:01.882218", "fun": "cmd.run", "id": "linux-node2.example.com"}
alter_time: -- ::
rows in set (0.01 sec)
十,在salt执行命令时可用加上-v 显示作业ID
[root@linux-node1 salt]# salt '*' cmd.run 'w' -v
Executing job with jid
------------------------------------------- linux-node1.example.com:
:: up :, user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 192.168.56.1 : .00s .57s .35s /usr/bin/python /usr/bin/salt * cmd.run w -v
linux-node2.example.com:
:: up :, user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 192.168.56.1 : : .00s .00s -bash
总结
可以这样对SaltStack 做二次开发 :
1.Master Job cache将所有的job输出保存到MySQL
2.如果做管理平台,可以将User id和Jid做关联
3.使用List做目标选择
附:英文参考文档
https://www.unixhot.com/docs/saltstack/ref/returners/all/salt.returners.mysql.html#module-salt.returners.mysql
SaltStack执行状态收集入库-第五篇的更多相关文章
- 【Python五篇慢慢弹(4)】模块异常谈python
模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 第十五篇 Integration Services:SSIS参数
本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到S ...
- 【译】第十五篇 Integration Services:SSIS参数
本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到S ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 【Python五篇慢慢弹】数据结构看python
数据结构看python 作者:白宁超 2016年10月9日14:04:47 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...
- 【Python五篇慢慢弹(3)】函数修行知python
函数修行知python 作者:白宁超 2016年10月9日21:51:52 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...
- 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)
解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...
- 解剖SQLSERVER 第五篇 OrcaMDF里读取Bits类型数据(译)
解剖SQLSERVER 第五篇 OrcaMDF里读取Bits类型数据(译) http://improve.dk/reading-bits-in-orcamdf/ Bits类型的存储跟SQLSERVE ...
随机推荐
- make_ext4fs 失败
root@fengyun-server:/home/fmake_ext4fsengyun/android/reverse_engineer/rom制作# ./make_ext4fs -l 700M - ...
- ACME[free https] Linux中使用curl命令访问https站点4种常见错误和解决方法
free https certification generator https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E 每一种客户 ...
- Junit 3.8.1 源码分析之两个接口
1. Junit源码文件说明 runner framework:整体框架; extensions:可以对程序进行扩展; textui:JUnit运行时的入口程序以及程序结果的呈现方式; awtui:J ...
- 策略(strategy)模式
Head First一书中对于策略(strategy)模式的正式定义是:策略模式定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户. 为了介绍这个算法,书中讲了 ...
- 【JVM】程序调优
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 .... ...
- solr 查询
1.常用查询参数说明 q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用. rows - ...
- Navicat连接mysql8出现1251错误
我的博客:www.yuehan.online 因为加密方式的问题,在使用mysql8.0的时候需要修改加密规则才能连接navicat. 打开cmd,输入以下命令: ALTER USER 'root ...
- 21.如何将java类对象转化为json字符串
使用阿里巴巴的fastJson 下载链接: 链接: https://pan.baidu.com/s/1dHjLOm1 密码: rr3w 用法如下: User user = new User(); us ...
- 模块讲解----json与pickle模块的区别
1.在生产中,dumps和loads只进行一次,而且要用w把原来的数据冲掉,从而保证每次都是最新的. 2.虚拟机的快照,是每个快照都有一个文件,而不是全都不放在一起. 3.如果想生产好几个序列化,就生 ...
- 模块讲解----json模块(跨平台的序列化与反序列化)
一.json的特点 1.只能处理简单的可序列化的对象:(字典,列表,元祖) 2.json支持不同语言之间的数据交互:(python - go,python - java) 二.使用场景 1.玩 ...