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. 用python给图片添加半透明水印

    # coding:utf-8 from PIL import Image, ImageDraw, ImageFont def add_text_to_image(image, text): font ...

  2. The 2016 ACM-ICPC Asia Shenyang Regional Contest

    A. Thickest Burger 大数 × 2 + 小数 #include <cstdio> #include <algorithm> using namespace st ...

  3. 最小生成树:HDU1863-畅通工程

    畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  4. Diycode开源项目 SettingActivity分析

    1.整体效果预览及布局分析 1.1.设置界面预览 1.2.主体对应关系 注意这里的线条用ImageView来实现 有一个TextView是检查更新,默认隐藏,具体出现时间还得之后确认. 最后一个Lin ...

  5. BZOJ 4247: 挂饰

    背包裸题 #include<cstdio> #include<algorithm> using namespace std; int F[2005]; struct node{ ...

  6. IOS开发学习笔记018- 一般控件的使用

    1.移动 2.动画 3.缩放 3.旋转 4.简化代码 5.总结 UIButton 的两种状态 normal highlighted  1.移动 OC语法规定:不允许直接修改某个对象中结构体属性的成员. ...

  7. Python+Selenium练习篇之4-利用link text定位元素

    本文介绍如何通过link text 来定位页面元素,我们打开网页,一些可以点击的链接跳转上面的文字,就是link text,用百度首页举例来看: 在上面图中,这一排上面的文字都是link text,例 ...

  8. Python学习-day11 RabbitMQ Redis

    这次文章包含两个内容: 1.RabbitMQ使用 2.Redis基础操作 代码部分为练习笔记和作业 概念部分转自Alex老师 RabbitMQ 安装 http://www.rabbitmq.com/i ...

  9. Redis 配置登录密码

    1. 通过配置文件进行配置 打开 redis.conf,找到 #requirepass foobared 去掉行前的注释,并修改密码为所需的密码,保存文件 重启redis sudo service r ...

  10. nyoj 题目19 擅长排列的小明

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...