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 ...
随机推荐
- Linux下查看mysql路径
ps -ef|grep mysql
- 20165330 2017-2018-2 《Java程序设计》第1周学习总结
教材学习内容总结 java的历史,地位,特点. java的平台介绍 java应用程序的开发及源文件的编写规则 java反编译特点 安装JDK Windows上 在安装JDK后设置系统环境变量,因为我的 ...
- Abp Uow 设计
初始化入口 在AbpKernelModule类中,通过UnitOfWorkRegistrar.Initialize(IocManager) 方法去初始化 /// <summary> /// ...
- flask中current_app._get_current_object()与current_app有什么区别?
https://segmentfault.com/q/1010000005865632/a-1020000005865704
- Spring AOP和事务的相关陷阱
1.前言 2.嵌套方法拦截失效 2.1 问题场景 2.2 解决方案 2.3 原因分析 2.3.1 原理 2.3.2 源代码分析 3.Spring事务在多线程环境下失效 3.1 问题场景 3.2 解决方 ...
- c++主程这种事情,就是这样,看人先看人品,没人品,他的能力与你何关?
这就是人品的重要性........ 接手别人的代码,说困难,也困难,说容易也容易 想把别人代码都读通,理顺,在改原代码BUG,在完美的加功能,那项目越大,越难 想把别人代码里面,加点坑,随便找个模块, ...
- birt 日志打印
在birt初始initialize 方法里,定义日志输出方法 importPackage(Packages.java.util.logging); importPackage(Packages.log ...
- Lepus_天兔的安装
一.安装平台 Centos 32位 二.依赖软件 依赖软件包:mysql.php.apache集成在xampp中,python,MySQLdb模块安装包在lepus安装包目录中 以下标红软件是必须安装 ...
- ui-select : There is no "X"(delete button) with selectize theme, when allow-clear="true"
but add allow-clear="true"For Bootstrap and Select2 themes, it's working perfectly. reason ...
- Java将数据写进excel
Java将数据写进excel Java将数据写进excel class User { private String name ; private String password; public Use ...