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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 从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;

五、效果


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
3月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
271 6
|
4月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
755 5
|
4月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
298 0
|
10月前
|
存储 缓存 监控
【YashanDB数据库】数据库运行正常,日志出现大量错误metadata changed
数据库运行正常,日志出现大量错误metadata changed
|
5月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
563 0
|
存储 消息中间件 Kafka
聊一聊日志背后的抽象
本文从思考日志的本质开始,一览业界对日志使用的最佳实践,然后尝试给出分布式存储场景下对日志模块的需求抽象,最后是技术探索路上个人的一点点感悟。
666 81
|
10月前
|
数据库
【YashanDB数据库】YAS-02079 archive log mode must be enabled when database is in replication mode
YAS-02079 archive log mode must be enabled when database is in replication mode
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
366 3
|
3月前
|
监控 应用服务中间件 nginx
基于Zabbix的SLA监控体系构建与实践
本文由Zabbix社区专家褚凤彬分享,详解SLA在Zabbix中的应用。通过Trigger与Service联动,构建Web应用的多层级监控体系,并介绍SLA计算规则、维护期处理及升级注意事项,助力企业精准掌控服务可用性。
447 36
|
9月前
|
运维 监控 安全
【案例分享】中国通号卡斯柯公司:ZABBIX如何破解轨道交通监控难题
本文根据2023上海峰会上朱林贤的演讲整理,聚焦中国通号卡斯柯公司如何借助Zabbix实现轨道交通信号系统的智能化管理。作为中外合资企业,卡斯柯通过统一平台整合设备监控,大幅降低成本并提升灵活性,成功应用于国内外项目。文章探讨了传统监控系统的痛点、研发维护经验及国产化与开源技术挑战,为行业转型提供了宝贵启示。未来,开放协作将是推动轨道交通智能化发展的关键。
475 8

推荐镜像

更多