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. Android 显示和隐藏软键盘的方法

       前言:因为项目要求做一个类似贴吧一样的东西,可以评论,所以必不可少地需要用到软键盘的隐藏和显示. Step 1 废话不多说,先上封装好的代码. public class CommonUtils ...

  2. python协程--yield和yield from

    字典为动词“to yield”给出了两个释义:产出和让步.对于 Python 生成器中的 yield 来说,这两个含义都成立.yield item 这行代码会产出一个值,提供给 next(...) 的 ...

  3. Core Java的那点事儿之ArrayList

    Core Java的那点事儿之ArrayList 万丈高楼平地起,Java基础要拿起.今天就从我看的Core Java里找了些小基础点来分享一下. 首先隆重介绍一下专业级龙套演员---Employee ...

  4. 【Best Time to Buy and Sell Stock】cpp

    题目: Say you have an array for which the ith element is the price of a given stock on day i. If you w ...

  5. 使用 Spirit 类在 XNA 中创建游戏中的基本单位精灵(十三)

    平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛.在这里分享一下经验,仅为了和各位朋友交流经验.平方会逐步将自己编写的类上传到托管项目中,没有什么好名字,就叫 WPXN ...

  6. Linux之如何进行固定IP、DNS等设置

    前提:虚拟机Linux centOS6.6 Linux如何设置固定IP.dns.网关 1.切换到root账号 2.#cd  /etc/sysconfig/network-scripts 进入网卡的设置 ...

  7. Python学习-day14-前台总结

    以下博客为转载 http://www.cnblogs.com/evilliu/p/5760232.html HTML和CSS总结   一:针对上节作业: 1:

  8. jquery实现跨域请求(复制)

    很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了.近日在进行开 发时,因为要和第三方公司的一个项目进行数据的共享,因为考虑多 ...

  9. Lua 语法要点

    table 默认键值都是从1开始 table array = { "A", "B" } array2 = array array[] = "D&quo ...

  10. linux系统ssh远程连接检查脚本

    脚本用于检查Linux系统云服务器出现的常见远程不能连接问题,脚本可以提前放到服务器里,出现问题时可以web vnc登陆上去执行试试. 附:管理控制台终端web vnc 方式登录,参考:http:// ...