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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 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日志并进行多维度分析。
相关文章
|
3月前
|
SQL 监控 Java
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
这篇文章介绍了如何在IDEA和Spring Boot中使用AOP技术实现日志信息的记录到数据库的详细步骤和代码示例。
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
|
3月前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
363 2
|
3月前
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
|
1月前
|
存储 关系型数据库 数据库
数据库启用慢速查询日志如何增强 Postgres 可观测性
数据库启用慢速查询日志如何增强 Postgres 可观测性
32 1
|
2月前
|
存储 SQL 专有云
支持配置审计日志的存储数据库
审计日志作为企业监管平台的重要依据,同时也是“等保三级”认证的必要考察项之一。Dataphin V4.3版本支持设置平台日志的存储数据源,帮助用户快速获取审计日志,同时介绍了不同部署模式的Dataphin如何查看审计日志的方法。
110 5
|
3月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
3月前
|
SQL Oracle 关系型数据库
"揭秘!一键解锁Oracle日志清理魔法,让海量归档日志无处遁形,守护数据库健康,告别磁盘空间告急噩梦!"
【8月更文挑战第9天】随着Oracle数据库在企业应用中的普及,归档日志管理对保持数据库健康至关重要。归档日志记录所有更改,对数据恢复极为重要,但也可能迅速占用大量磁盘空间影响性能。利用Oracle提供的RMAN工具,可通过编写Shell脚本来自动清理归档日志。脚本包括设置环境变量、连接数据库、检查和删除指定时间前的日志,并记录执行情况。通过Cron作业定时运行脚本,可有效管理日志文件,确保数据库稳定运行。
94 7
|
2月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
110 0
|
3月前
|
SQL 安全 关系型数据库
【惊天秘密】破解数据库管理难题!——Yearning开源审计平台:你的数据库安全守护神,一键审计,轻松应对挑战!
【8月更文挑战第21天】Yearning是一款基于Python的开源数据库审计平台,简化数据库管理和审计流程,支持MySQL、PostgreSQL等。核心功能包括SQL审计、执行、回滚及备份,提升数据库管理效率。安装简便,支持通过pip安装并快速启动服务。Yearning提供智能SQL审查,确保安全性与合规性,同时还具备友好的用户界面及API客户端支持,适用于多种数据库操作场景。
117 0
|
3月前
|
监控 安全 Linux
在Linux中,如何查看和审计系统日志文件以检测异常活动?
在Linux中,如何查看和审计系统日志文件以检测异常活动?

推荐镜像

更多