You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用Zabbix的problem.get获取主机名与问题描述,展示基础设施当前故障

解决Zabbix API problem.get获取主机名和故障描述的问题

嘿,我来帮你搞定这个需求!你现在用problem.get只拿到了基础事件信息,想要主机名和像「缺少可用交换空间」这种故障描述,只需要在API请求里加两个关键参数就行,具体如下:

修改后的API请求代码

problemlist = zapi.do_request('problem.get', {
    "output": "extend",
    "selectAcknowledges": "extend",
    "recent": "true",
    "sortfield": ["eventid"],
    "sortorder": "DESC",
    # 新增以下两个核心参数
    "selectHosts": "extend",  # 获取故障关联的主机完整信息
    "selectTrigger": "extend" # 获取触发故障的触发器详情(包含故障描述)
})

字段提取说明

返回的每个problem对象里,现在会包含hosts和trigger两个嵌套结构,你可以从中提取需要的信息:

  • 日期:把clock字段(时间戳)转换成目标格式,比如Python里用datetime.datetime.fromtimestamp(int(problem['clock'])).strftime("%d.%m")就能得到19.03这样的日期格式
  • 主机名:取problem['hosts'][0]['host'](大部分场景下一个故障只关联一台主机,直接取第一个元素即可)
  • 故障描述:取problem['trigger']['description'],这就是Zabbix仪表盘上显示的直观故障提示文本

示例处理代码

比如用Python遍历结果并输出你想要的格式:

import datetime

for problem in problemlist['result']:
    date_str = datetime.datetime.fromtimestamp(int(problem['clock'])).strftime("%d.%m")
    host_name = problem['hosts'][0]['host']
    problem_desc = problem['trigger']['description']
    print(f"{date_str} {host_name} {problem_desc}")

运行后就能得到你期望的输出效果:

19.03 hostsap1 缺少可用交换空间;18.03 hostsmb2 Zabbix_agentd is not running!

内容的提问来源于stack exchange,提问作者Karol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 22:47:48