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日志入库审计的更多相关文章

  1. ABP大型项目实战(2) - 调试与排错 - 日志 - 查看审计日志

    这是<ABP大型项目实战>系列文章的一篇.   项目发布到生产环境后难免会有错误. 那么如何进行调试和排错呢?   我看到俱乐部里有人是直接登陆生产服务器把数据库下载到开发机器进行调试排错 ...

  2. python高效解析日志入库

    python脚本解析日志文件入库一般有三个重要的步骤:读文件.解析文件.入库.在这三个方面下功夫,可确保我们获得最优的性能(这里不讨论并发) 1 读文件:一次读一行,磁盘IO太多,效率低下:一次性读如 ...

  3. 日志入库-log4j-mysql连接中断问题

    mysql5.6 druid1.0.17 log4j 1.2.16 一定时间后无法连接  CommunicationsException: Communications link failure 粗暴 ...

  4. SaltStack执行状态收集入库-第五篇

    实验目标 1.salt执行的状态然后结果写入MySQL可以方便查询执行salt执行的历史记录 实现方法 1.使用salt的return功能,是minion直接写入MySQL(相对比较麻烦) 2.使用m ...

  5. linux日志服务器审计客户端history记录

    https://blog.csdn.net/yanggd1987/article/details/70255179

  6. Abp + MongoDb 改造默认的审计日志存储位置

    一.背景 在实际项目的开发当中,使用 Abp Zero 自带的审计日志功能写入效率比较低.其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起.所以我们可以重新实现 Abp 的 IAuditi ...

  7. Kubernetes审计日志方案

    前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...

  8. 简单实现MySQL数据库的日志审计

    时间 2018-12-23 08:01:11  FreeBuf 原文  https://www.freebuf.com/articles/es/192062.html 主题 MySQL 0×0 背景 ...

  9. 最全Kubernetes审计日志方案

    前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...

随机推荐

  1. tcl之变量-简单变量

  2. linux-最最最最最常用的操作

    去除两个文件中相同的内容 比如我想把file1中不含文件file2的内容保留下来:(这个在抠一些内容的时候挺好用的) awk '{print $0}' file1 file2 |sort|uniq - ...

  3. Windows Server 2008 正式版下载汇总

    windows 2008是微软推出的新一代服务器专用系统版本, 具有良好的用户体验以及应用程序,windows 2008大幅提升了web服务以及应用程序的性能, 让企业在提供和维护资源服务的时候更加得 ...

  4. libevent源码分析1 ----evnet相关结构体分析

    位于代码event-internal.h中. event_base类似事件的集合,你创建一个事件,必须将该事件指定一个集合. struct event_base { 50     const stru ...

  5. Tomcat 在 Linux 下的自动启动脚本

    很多服务都需要设置为开机自启动.将下面代码复制到 /etc/rc.d/init.d/tomcat ,然后执行 chkconfig –add tomcat chkconfig tomcat on 就可以 ...

  6. P3805 【模版】manacher算法(manacher)

    P3805 [模版]manacher算法 题目描述 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 输入输出格式 输入格式: 一行小写英文字符a ...

  7. 【Next Permutation】cpp

    题目: Implement next permutation, which rearranges numbers into the lexicographically next greater per ...

  8. RSA进阶之两个N的公约数

    适用场景: 给你两个n,n1和n2. 两个数都很大,不好分解. 但是这数刚好有质数公因子(试试欧几里得辗转相除跑完之后,就是不断地相除就可以了,4000多位也是很快的),那不就相当于间接的分解出q或者 ...

  9. Monkey log异常分析说明

    以下主要针对在Android-Phone项目中进行Monkey log进行分析和说明,可以对bug提交作为参考. 要求熟悉,应用的包名.也就是说那个应用包出现问题,该属于那个模块,应用包名是判断依据. ...

  10. CSU-2031 Barareh on Fire

    CSU-2031 Barareh on Fire Description The Barareh village is on fire due to the attack of the virtual ...