Python调用Zabbix API如何过滤JSON输出并格式化uptime结果
Zabbix API提取指定监控项方案
核心问题处理逻辑
1. 指定监控项过滤
优先在API请求层面直接过滤,无需拉取全量监控项后本地筛选,性能更高。修改host.get接口的selectItems参数,传入过滤规则指定只返回key_为system.uptime的监控项即可。如果需要本地兼容多监控项筛选,也可以遍历返回的items列表,通过item['key_'] == 目标key的条件匹配。
2. 格式化处理
- 秒级时间转换:通过整除、取模运算拆分天、小时、分钟单位,拼接为易读格式
- 排版按照要求逐行输出主机名、监控项和对应值即可,额外加分隔线区分不同主机提升可读性
修改后可直接运行的完整代码
#!/usr/bin/python import requests import json ZABBIX_API_URL = "http://localhost/zabbix/api_jsonrpc.php" UNAME = "Admin" PWORD = "zabbix" TARGET_ITEM_KEY = "system.uptime" # 秒转易读时间格式 def sec_to_readable(seconds): seconds = int(seconds) day = seconds // 86400 hour = (seconds % 86400) // 3600 minute = (seconds % 3600) // 60 sec = seconds % 60 res = [] if day > 0: res.append(f"{day}天") if hour > 0: res.append(f"{hour}小时") if minute > 0: res.append(f"{minute}分钟") if sec > 0 or len(res) == 0: res.append(f"{sec}秒") return "".join(res) # 登录 r = requests.post(ZABBIX_API_URL, json={ "jsonrpc": "2.0", "method": "user.login", "params": { "user": UNAME, "password": PWORD}, "id": 1 }) AUTHTOKEN = r.json()["result"] # 查询主机+指定监控项,API层直接过滤 r = requests.post(ZABBIX_API_URL, json={ "jsonrpc": "2.0", "method": "host.get", "params": { "output": ["name"], "selectItems": { "output": ["name", "lastvalue", "key_"], "filter": {"key_": TARGET_ITEM_KEY} } }, "id": 2, "auth": AUTHTOKEN }) host_list = r.json()["result"] # 按要求格式输出 for host in host_list: hostname = host["name"] print(hostname) # 遍历匹配到的监控项(过滤后最多1条) for item in host["items"]: if item["key_"] == TARGET_ITEM_KEY: readable_val = sec_to_readable(item["lastvalue"]) print(f"{item['name']}({item['key_']}): {readable_val}") print("-"*30) # 登出 print("\nLogout user") r = requests.post(ZABBIX_API_URL, json={ "jsonrpc": "2.0", "method": "user.logout", "params": {}, "id": 2, "auth": AUTHTOKEN })
输出示例
Zabbix server System uptime(system.uptime): 2小时7分钟15秒 ------------------------------ Web01 System uptime(system.uptime): 12天3小时24分钟 ------------------------------ Logout user
如果需要提取其他监控项,直接修改代码里的TARGET_ITEM_KEY变量值即可。
内容的提问来源于stack exchange,提问作者seguence
相关产品推荐
相关产品推荐

