我需要在 zabbix 中自动删除无法访问/关闭的主机。所有主机都使用以下方式进行监控活性剂因此,对我来说,网络发现自动删除并不方便/有用。
我编写了一个小型 Python 脚本,使用 zabbix-api 从 zabbix 中删除/移除主机。但是我想要实现的功能如下:
1:如果主机无法访问超过 2 小时,则查找所有主机
2:标记其状态并更新要删除的主机列表
三:24 小时循环后删除所有这些主机。
如果步骤 2 不可行,那么我现在非常乐意执行步骤 1 和步骤 3。
我无法找到正确的 zabbix api 响应来识别处于宕机状态或无法访问超过一小时或 xyz 时间的主机。
答案1
我使用触发值从 zabbix 中删除主机,检查下面的代码是否也适合您:
from zabbix_api import ZabbixAPI, Already_Exists
z = ZabbixAPI(server="https://zabbix.example.com/zabbix")
z.login("exampleuser", "exampleuser")
for trigger in z.trigger.get({"output": [ "triggerid", "description", "priority" ], "filter": { "value": 1 }, "sortfield": "priority", "sortorder": "DESC"}):
if trigger["description"] == 'Zabbix agent on {HOST.NAME} is unreachable for 5 minutes':
trigmsg = z.trigger.get({"triggerids": trigger["triggerid"], "selectHosts": "extend"})
for tm in trigmsg:
for l in tm['hosts']:
print l['name'], l['hostid']
print "Will kill host " + l['hostid'] + " " + l['host'] + trigger["description"]
z.host.delete( [int(l['hostid'])] )