[SaltStack] Return日志入库审计
SaltStack日志return审计
在我们执行salt任务时, 默认日志是屏幕打印的, 对于我们审计任务运行情况带来很不方便, 因此我们对日志结果进行了二次开发, 将job日志处理后入库, 方便查询.
Master推送state
$ salt '<minion-id>' state.highstate --return mysql_return
这里指定使用mysql_return将结果日志入库审计
Master Job日志信息
<minion-id>:
----------
ID: /tmp/salt_test.cnf
Function: file.managed
Result: True
Comment: File /tmp/salt_test.cnf is in the correct state
Changes:
----------
ID: bash /u01/salt_script.sh 1>/tmp/salt_script.log 2>&1
Function: cron.present
Result: True
Comment: Cron bash /u01/salt_script.sh 1>/tmp/salt_script.log 2>&1 already present
Changes: Summary
------------
Succeeded: 2
Failed: 0
------------
Total: 2
日志中看到本次推送涉及2个子任务, 推送状态均成功.
想象一下, 这样的日志查看起来很费劲, 特别是成千上万的minion机器日志的时候, 那看的人得跪了 T.T
日志入库
这里我们展示一下日志入库后查询就特方便, 人性化 -_-
- 先看下我们总任务的信息
id gmt_created gray_job_id exec_role job_id func minion_id success full_ret ret_code 1924387 2015-07-03 12:44:07 0 master 20150703124403816971 state.highstate True {"fun_args": [], "jid": "20150703124403816971", "return": {"file_ -/tmp/salt_test.cnf_ 这里的job_id代表本次任务的id号, ret_code是所有子任务的状态信息
- 下来时所有子任务的结果状态
id gmt_created exec_role job_id minion_id name changes success comment 3856154 2015-07-03 12:44:07 master 20150703124403816971 /tmp/salt_test.cnf {} True File /tmp/salt_test.cnf is in the correct state 3856155 2015-07-03 12:44:07 master 20150703124403816971 bash /u01/salt_script.sh 1>/tmp/salt_script.log 2>&1 {} True Cron bash /u01/salt_script.sh 1>/tmp/salt_script.log 2>&1 already present 总结下:
- 总共涉及2个子任务
- exec_role表示master中心机器推送
- job_id是本次任务的唯一id
- 子任务的sucess均为True, 表示子任务推送成功
当然这是在master上做的日志入库审计, 对应的在minion上也可以做日志入库审计.
日志表schema如下:
return_log: 总任务表
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| gmt_created | datetime | NO | | NULL | |
| gray_job_id | bigint(20) unsigned | NO | | 0 | |
| exec_role | varchar(20) | NO | | NULL | |
| job_id | varchar(255) | NO | MUL | NULL | |
| func | varchar(255) | YES | | NULL | |
| minion_id | varchar(255) | NO | MUL | NULL | |
| success | varchar(10) | NO | | NULL | |
| full_ret | mediumtext | NO | | NULL | |
| ret_code | int(11) | YES | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
return_sublog: 子任务表
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| gmt_created | datetime | NO | | NULL | |
| exec_role | varchar(20) | NO | | NULL | |
| job_id | varchar(255) | NO | MUL | NULL | |
| minion_id | varchar(255) | NO | | NULL | |
| name | mediumtext | NO | | NULL | |
| changes | longtext | YES | | NULL | |
| success | varchar(10) | NO | | NULL | |
| comment | mediumtext | YES | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
return脚本:
- local_return.py
- mysql_minion_return.py
- mysql_return.py
From reno
2015-07-03 16:40:00
[SaltStack] Return日志入库审计的更多相关文章
- ABP大型项目实战(2) - 调试与排错 - 日志 - 查看审计日志
这是<ABP大型项目实战>系列文章的一篇. 项目发布到生产环境后难免会有错误. 那么如何进行调试和排错呢? 我看到俱乐部里有人是直接登陆生产服务器把数据库下载到开发机器进行调试排错 ...
- python高效解析日志入库
python脚本解析日志文件入库一般有三个重要的步骤:读文件.解析文件.入库.在这三个方面下功夫,可确保我们获得最优的性能(这里不讨论并发) 1 读文件:一次读一行,磁盘IO太多,效率低下:一次性读如 ...
- 日志入库-log4j-mysql连接中断问题
mysql5.6 druid1.0.17 log4j 1.2.16 一定时间后无法连接 CommunicationsException: Communications link failure 粗暴 ...
- SaltStack执行状态收集入库-第五篇
实验目标 1.salt执行的状态然后结果写入MySQL可以方便查询执行salt执行的历史记录 实现方法 1.使用salt的return功能,是minion直接写入MySQL(相对比较麻烦) 2.使用m ...
- linux日志服务器审计客户端history记录
https://blog.csdn.net/yanggd1987/article/details/70255179
- Abp + MongoDb 改造默认的审计日志存储位置
一.背景 在实际项目的开发当中,使用 Abp Zero 自带的审计日志功能写入效率比较低.其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起.所以我们可以重新实现 Abp 的 IAuditi ...
- Kubernetes审计日志方案
前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...
- 简单实现MySQL数据库的日志审计
时间 2018-12-23 08:01:11 FreeBuf 原文 https://www.freebuf.com/articles/es/192062.html 主题 MySQL 0×0 背景 ...
- 最全Kubernetes审计日志方案
前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...
随机推荐
- JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift
5184. [NOIP2017提高组模拟6.29]Gift (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- JZOJ 1267. 路障
1267. 路障(block.pas/c/cpp) (File IO): input:block.in output:block.out Time Limits: 1000 ms Memory Li ...
- 动态规划:HDU-2955-0-1背包问题:Robberies
解题心得: 这题涉及概率问题,所以要运用概率的知识进行解答.题目要求不被抓到的概率,但是给出的是被抓到的概率,所要用1减去后得到答案.最好使用double类型,避免精度问题导致WA. 先算出可以抢劫的 ...
- 图学java基础篇之集合工具
两个工具类 java.utils下又两个集合相关_(准确来说其中一个是数组的)_的工具类:Arrays和Collections,其中提供了很多针对集合的操作,其中涵盖了一下几个方面: 拷贝.填充.反转 ...
- jq相关细节-1
animate/动画 所有用于动画的属性必须是数字的,除非另有说明:这些属性如果不是数字的将不能使用基本的jQuery功能.(例如,width, height或者left可以执行动画,但是backgr ...
- 【 Sqrt(x) 】cpp
题目: Implement int sqrt(int x). Compute and return the square root of x. 代码: class Solution { public: ...
- IOS笔记047-代理传值和block传值
在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...
- Wordpress 数据库查询错误 Call to a member function get_results() on null
在插件中的一个文件使用如下代码,无法查询 <body> <?php global $wpdb; $sql = ""; $sql = "SELECT * ...
- Leetcode 564.寻找最近的回文数
寻找最近的回文数 给定一个整数 n ,你需要找到与它最近的回文数(不包括自身). "最近的"定义为两个整数差的绝对值最小. 示例 1: 输入: "123" 输出 ...
- [oldboy-django][6其他]微信二维码扫码登录注册
http://blog.csdn.net/maerdym/article/details/46380309 http://blog.csdn.net/jiang1013nan/article/deta ...