如何通过Zabbix API获取已解决问题历史记录
获取Zabbix已解决问题报表的两种方法
一、通过Zabbix API获取
你提到的problems.get方法其实支持获取已解决问题,只需添加特定参数即可:
- 设置
state参数为1,指定筛选已解决的问题 - 用
time_from和time_till定义目标时间段(如上月)的时间戳 - 可选:添加
sortfield和sortorder对结果排序
示例API请求(JSON格式):
{ "jsonrpc": "2.0", "method": "problems.get", "params": { "output": "extend", "time_from": 1698844800, // 替换为上月起始时间戳 "time_till": 1701523199, // 替换为上月结束时间戳 "state": 1, "sortfield": "r_clock", "sortorder": "DESC" }, "auth": "your_authentication_token", "id": 1 }
注:
r_clock是问题解决的时间戳,按此字段排序可优先看到最新解决的问题
二、直接查询Zabbix数据库
如果API方式满足不了需求,可直接查询Zabbix后端数据库(以MySQL为例):
已解决问题存储在problem表中,state=1标识已解决,r_clock字段为非0的解决时间。
示例SQL查询:
SELECT p.eventid AS 事件ID, FROM_UNIXTIME(p.clock) AS 问题出现时间, FROM_UNIXTIME(p.r_clock) AS 问题解决时间, p.name AS 问题描述, h.host AS 关联主机名, p.severity AS 问题级别 FROM problem p LEFT JOIN hosts h ON p.objectid = h.hostid WHERE p.state = 1 -- 替换为上月的时间范围 AND p.clock BETWEEN UNIX_TIMESTAMP('2023-11-01 00:00:00') AND UNIX_TIMESTAMP('2023-11-30 23:59:59') ORDER BY p.r_clock DESC;
注:若需获取更多字段,可参考Zabbix数据库表结构文档扩展查询字段
内容的提问来源于stack exchange,提问作者Alberto Medina
相关产品推荐
相关产品推荐

