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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 从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日志并进行多维度分析。
相关文章
|
21天前
|
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. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
4月前
|
存储 数据库 OceanBase
想问一下OceanBase数据库这个的日志都能删除么?clog
是的,OceanBase数据库企业版确实支持performance_schema。performance_schema是一个集合了数据库服务器性能参数信息的数据字典,它能够帮助我们收集和存储数据库服务器的性能参数信息,以便于我们对数据库进行更好的优化和管理。
81 5
|
3月前
|
关系型数据库 MySQL 数据库
Mysql数据库redo log及binlog的写入
Mysql数据库redo log及binlog的写入
|
2月前
|
关系型数据库 MySQL 数据库
MySQL员工打卡日志表——数据库练习
MySQL员工打卡日志表——数据库练习
136 0
EMQ
|
2月前
|
JSON 安全 API
EMQX Enterprise 5.3 发布:审计日志、Dashboard 访问权限控制与 SSO 一站登录
EMQX Enterprise 5.3.0 版本已正式发布! 新版本带来多个企业特性的更新,包括审计日志,Dashboard RBAC 权限控制,以及基于 SSO(单点登录)的一站式登录,提升了企业级部署的安全性、管理性和治理能力。此外,新版本还进行了多项改进以及 BUG 修复,进一步提升了整体性能和稳定性。
EMQ
285 1
|
2月前
|
监控 安全 数据库
Binlog vs. Redo Log:数据库日志的较劲【高级】
Binlog vs. Redo Log:数据库日志的较劲【高级】
79 0
|
2月前
|
存储 缓存 关系型数据库
Binlog vs. Redo Log:数据库日志的较劲【基础】
Binlog vs. Redo Log:数据库日志的较劲【基础】
158 0
|
2月前
|
SQL 监控 关系型数据库
数据库日志解析:深入了解MySQL中的各类日志
数据库日志解析:深入了解MySQL中的各类日志
193 0
|
3月前
|
canal 消息中间件 关系型数据库
大数据数据库增量日志采集之Canal
大数据数据库增量日志采集之Canal
|
4月前
|
SQL 弹性计算 监控
构建多账号云环境的解决方案|多账号云上操作日志统一审计
操作审计(ActionTrail)是阿里云提供的云账号资源操作记录的查询和投递服务,可用于安全分析、资源变更追踪以及合规性审计等场景。企业在阿里云采用多账号的资源结构时,如何满对跨账号跨地域的云上操作日志进行统一归集留存和分析,是企业上云管云过程的必备环节。此次分享为您介绍如何使用操作审计产品进行中心化的审计,提升云上多账号操作的可控可见性,及时发现问题、响应问题,规避潜在风险。
251 0

推荐镜像

更多