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. php 单冒号 、双冒号的用法

    单冒号: 常用与三元运算,如:$result = $str ? $str : $str1; 双冒号: 1,当调用静态属性和静态方法时 2,当调用自身类或者父类的属性或者方法时

  2. jquery/js/a标签实现当前页面跳转的两种方法

    在逛购物网站首页时经常看到侧边导航栏,当我们点击导航栏中某一项时会跳转到当前页面的某一处 有两种方法实现,一种是利用js计算好各位置的高度,通过绑定事件使页面跳转到指定位置,另一种是利用a标签进行当前 ...

  3. 【css】cursor鼠标指针光标样式知识整理

    在前端开发中,我们经常需要对对象鼠标指针光标进行控制,比如鼠标经过超链接时变成手指形状.在这里整理一下cursor鼠标指针光标样式的知识,记录与方便以后查找. 1.常用cursor光标 div( cu ...

  4. yii2 RUL的生成

    通常情况下,会使用 yii\helpers\Url 使用Url类来生成想要的URL地址(链接) Url提供的方法大都是静态方法,不需要对类进行实例化 1.1 最常用的 Url::to() 1.2. b ...

  5. 2017 ACM-ICPC网络赛 H.Skiing 有向图最长路

    H.Skiing In this winter holiday, Bob has a plan for skiing at the mountain resort. This ski resort h ...

  6. dialog BLE SDK 学习(1)

    dialog DA14580 SDK版本:5.0.4. 本文介绍了SDK的运行流程,剖析arch_main.c的工作过程. dialog的BLE协议栈,本来是想学习一下,看看是否能够移植到其他平台上, ...

  7. input type=file输入框

    <div class="row"> <!--选择图片按钮--> <div class="col-xs-12" align=&quo ...

  8. 笔记-python-standard library-17.2 multiprocessing

    笔记-python-standard library-17.2 multiprocessing 1.      multiprocessing source code:Lib/multiprocess ...

  9. 【Python Selenium】简单数据生成脚本

    最近因工作需要,写了一个简单的自动化脚本,纯属学习,顺便学习下selenium模块. 废话不多说,直接上代码!! 这里一位大神重写了元素定位.send_keys等方法,咱们直接进行调用. 适用Pyth ...

  10. 使用 htaccess 重写 url,隐藏查询字符串

    例如我们有如下 URL: http://example.com/users.php?name=tania 但是我们想要让 URL 变成如下: http://example.com/users/tani ...