从Zabbix数据库入手,获取更详细的审计日志

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 从Zabbix数据库入手,获取更详细的审计日志

一、需求

应相关人员需求,需要导出zabbix的审计日志,但发现zabbix前端页面根本没有导出功能,因此就需要从数据库入手。

二、方案

解决此需求,涉及到users表、auditlog表、auditlog_details表,需要对这3个表进行关联查询,考虑到查询性能问题,使用外连接查询中的左连接(LEFT JOIN),之所以用左连接是因为要将users表作为基表,auditlog表和auditlog_details表作为参考表。

3个表的用途如下:

  • users表:用户信息表,存储账号、密码的表
  • auditlog表:审计日志多表
  • auditlog_details表:审计日志的详情表

三、查看表结构

当不知道表有哪些字段时,一定要通过查看表结构来分析有哪些字段,且你需要用到哪些字段。

# auditlog_details表
mysql> desc zabbix.auditlog_details;
+---------------+-----------------+------+-----+---------+-------+
| Field         | Type            | Null | Key | Default | Extra |
+---------------+-----------------+------+-----+---------+-------+
| auditdetailid | bigint unsigned | NO   | PRI | NULL    |       |
| auditid       | bigint unsigned | NO   | MUL | NULL    |       |
| table_name    | varchar(64)     | NO   |     |         |       |
| field_name    | varchar(64)     | NO   |     |         |       |
| oldvalue      | text            | NO   |     | NULL    |       |
| newvalue      | text            | NO   |     | NULL    |       |
+---------------+-----------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
# auditlog表
mysql> desc zabbix.auditlog;
+--------------+-----------------+------+-----+---------+-------+
| Field        | Type            | Null | Key | Default | Extra |
+--------------+-----------------+------+-----+---------+-------+
| auditid      | bigint unsigned | NO   | PRI | NULL    |       |
| userid       | bigint unsigned | NO   | MUL | NULL    |       |
| clock        | int             | NO   | MUL | 0       |       |
| action       | int             | NO   |     | 0       |       |
| resourcetype | int             | NO   | MUL | 0       |       |
| note         | varchar(128)    | NO   |     |         |       |
| ip           | varchar(39)     | NO   |     |         |       |
| resourceid   | bigint unsigned | YES  |     | NULL    |       |
| resourcename | varchar(255)    | NO   |     |         |       |
+--------------+-----------------+------+-----+---------+-------+
9 rows in set (0.00 sec)
# users表
mysql> desc zabbix.users;
+----------------+-----------------+------+-----+---------+-------+
| Field          | Type            | Null | Key | Default | Extra |
+----------------+-----------------+------+-----+---------+-------+
| userid         | bigint unsigned | NO   | PRI | NULL    |       |
| alias          | varchar(100)    | NO   | UNI |         |       |
| name           | varchar(100)    | NO   |     |         |       |
| surname        | varchar(100)    | NO   |     |         |       |
| passwd         | varchar(60)     | NO   |     |         |       |
| url            | varchar(255)    | NO   |     |         |       |
| autologin      | int             | NO   |     | 0       |       |
| autologout     | varchar(32)     | NO   |     | 15m     |       |
| lang           | varchar(5)      | NO   |     | en_GB   |       |
| refresh        | varchar(32)     | NO   |     | 30s     |       |
| type           | int             | NO   |     | 1       |       |
| theme          | varchar(128)    | NO   |     | default |       |
| attempt_failed | int             | NO   |     | 0       |       |
| attempt_ip     | varchar(39)     | NO   |     |         |       |
| attempt_clock  | int             | NO   |     | 0       |       |
| rows_per_page  | int             | NO   |     | 50      |       |
+----------------+-----------------+------+-----+---------+-------+
16 rows in set (0.08 sec)
mysql>

四、SQL语句

  • 以下sql在Mysql可正常查询,Oracle下待测试验证
SELECT FROM_UNIXTIME(log.clock) '时间', log.alias '账号',log.name '别名',log.action_var '动作',log.resourcetype_var '资源类型',log.ip 'IP',log.resourcename '资源名称',log.table_name '操作的表',log.field_name '操作的字段',log.oldvalue '旧值',log.newvalue '新值',log.note '操作描述' FROM (
SELECT
a.clock,
u.alias,
u.name,
CASE a.action
 WHEN 0 THEN
 '增加'
 WHEN 1 THEN
 '更新'
 WHEN 2 THEN
 '删除'
 WHEN 3 THEN
 '登录'
 WHEN 4 THEN
 '登出'
 WHEN 5 THEN
 '启用'
 WHEN 6 THEN 
 '禁用'
 ELSE
 '未知操作'
END AS action_var,
CASE a.resourcetype
 WHEN 0 THEN 
 '用户'
 WHEN 2 THEN 
 '配置Zabbix'
 WHEN 3 THEN
 '媒介类型'
 WHEN 4 THEN 
 '主机'
 WHEN 5 THEN
 '动作'
 WHEN 6 THEN
 '图表'
 WHEN 7 THEN
 '图表元素'
 WHEN 11 THEN
 '用户组'
 WHEN 12 THEN
 '应用'
 WHEN 13 THEN
 '触发器'
 WHEN 14 THEN
 '主机组'
 WHEN 15 THEN
 '监控项'
 WHEN 16 THEN
 '图片'
 WHEN 17 THEN
 '值映射'
 WHEN 18 THEN
 '服务'
 WHEN 19 THEN
 '拓扑图'
 WHEN 20 THEN
 '聚合图形'
 WHEN 22 THEN
 'Web场景'
 WHEN 23 THEN
 '发现规则'
 WHEN 24 THEN
 '幻灯片放映'
 WHEN 25 THEN
 '脚本'
 WHEN 26 THEN
 '代理'
 WHEN 27 THEN
 '维护期'
 WHEN 28 THEN
 '正则表达式'
 WHEN 29 THEN
 '宏'
 WHEN 30 THEN
 '模板'
 WHEN 31 THEN
 '触发器原型'
 WHEN 32 THEN
 '图标映射'
 WHEN 33 THEN
 '仪表板'
 WHEN 34 THEN
 '关联项事件'
 WHEN 35 THEN
 '图表原型'
 WHEN 36 THEN
 '监控项原型'
 WHEN 37 THEN
 '主机原型'
 WHEN 38 THEN
 '自动注册'
 WHEN 39 THEN
 '组件'
 ELSE
 '未知资源'
END AS resourcetype_var,
a.ip,
a.resourcename,
d.table_name,
d.field_name,
d.oldvalue,
d.newvalue,
a.note
FROM zabbix.users u LEFT JOIN zabbix.auditlog a ON u.userid=a.userid LEFT JOIN zabbix.auditlog_details d ON a.auditid=d.auditid
) AS log;

五、效果


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
118 1
|
5天前
|
关系型数据库 MySQL Java
ChaosBlade常见问题之安装日志中一直报错某个数据库表不存在如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
43 0
|
2天前
|
关系型数据库 MySQL 数据库
mysql数据库bin-log日志管理
mysql数据库bin-log日志管理
|
3天前
|
存储 关系型数据库 数据库
关系型数据库文件方式存储LOG FILE(日志文件)
【5月更文挑战第11天】关系型数据库文件方式存储LOG FILE(日志文件)
13 1
|
5天前
|
数据库
编程日记02:个人站优化数据库和日志
编程日记02:个人站优化数据库和日志
12 0
|
5天前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
|
5天前
|
存储 SQL 关系型数据库
mysql数据库日志
mysql数据库日志
|
3天前
|
运维 监控 安全
Java一分钟之-Log4j与日志记录的重要性
【5月更文挑战第16天】Log4j是Java常用的日志框架,用于灵活地记录程序状态和调试问题。通过设置日志级别和过滤器,可避免日志输出混乱。为防止日志文件过大,可配置滚动策略。关注日志安全性,如Log4j 2.x的CVE-2021-44228漏洞,及时更新至安全版本。合理使用日志能提升故障排查和系统监控效率。
20 0
|
5天前
|
C++
JNI Log 日志输出
JNI Log 日志输出
19 1
|
5天前
|
存储 运维 大数据
聊聊日志硬扫描,阿里 Log Scan 的设计与实践
泛日志(Log/Trace/Metric)是大数据的重要组成,伴随着每一年业务峰值的新脉冲,日志数据量在快速增长。同时,业务数字化运营、软件可观测性等浪潮又在对日志的存储、计算提出更高的要求。

推荐镜像

更多
http://www.vxiaotou.com