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 ...
随机推荐
- PHP file_get_contents和curl区别
一.file_get_contents 1.定义 file_get_contents() 函数将指定 URL 的文件读入一个字符串并返回. 2.语法 file_get_contents(path, i ...
- B. Mike and Fun---cf548B(暴力求解)
题目链接:http://codeforces.com/problemset/problem/548/B 有一个n*m的矩阵,里面只有0和1,现在有Q个改变,每次都把(x,y)这点变为相反的点(0变1, ...
- POJ1330Nearest Common Ancestors最近公共祖先LCA问题
用的离线算法Tarjan 该算法的详细解释请戳 http://www.cnblogs.com/Findxiaoxun/p/3428516.html 做这个题的时候,直接把1470的代码copy过来,改 ...
- linux伙伴系统接口alloc_page分析1
在内核中分配内存,最后要通过伙伴系统接口进行实际物理页面的分配,一个重要的接口便是alloc_page.本文介绍下alloc_page的主要流程,各个部分的执行.主要包含正常分配流程,当页面不足的时候 ...
- Django logging模块
一.Django logging配置 1.在setting.py中配置 # 日志文件存放路径 BASE_LOG_DIR = os.path.join(BASE_DIR, "log" ...
- Shiro Annotation保护实例
之前介绍了Shiro的Web訪问控制和缓存配置,事实上Shiro和Spring一样能够使用Annotation来配置方法级别的安全.省去自己每次获取Subject去做权限验证,比方在改动用户passw ...
- SpringMVC的@RequestParam
以前写controller层的时候都是默认带上 @RequestParam 的, 今天发现不加@RequestParam 也能接收到参数 下面我们来区分一下加与不加的区别 这里有两种写法 @Reque ...
- Oracle中查看建立索引和使用索引的注意点
一.查看和建立索引 select * from user_indexes where table_name = 'student' create index i_student_num on stud ...
- OpenGL1.0 线段
OpenGL1.0线段 DionysosLai2014-06-16 本篇作为我学习Opengl第一篇文档.希望自己能在图形学路上走得远一点,达到可以渲染游戏画质目的,现阶段是Box2 ...
- Java网络通信基础编程
一.同步阻塞方式(BIO) 方式一: 服务器端(Server): package com.ietree.basicskill.socket.mode1; import java.io.IOExcept ...