Мне нужно автоматически удалить мой недоступный / неработающий хост в zabbix. Все хосты контролируются с помощью активный агент следовательно, автоматическое удаление сетевого обнаружения бесполезно / бесполезно в моем случае.
Я написал небольшой скрипт на Python для удаления / удаления хоста из zabbix с помощью zabbix-api. Однако я хочу достичь следующего:
1: Найти все хосты, если хост недоступен более 2 часов
2: Отметьте их статус и обновите список удаляемого хоста
3: Удалите все эти хосты после 24-часового цикла.
Если в случае, если шаг 2 невозможен, я сейчас очень доволен шагами 1 и 3.
Я не могу найти правильный ответ api zabbix для определения хоста, который не работает или недоступен более часа или xyz времени.
Я использовал значение триггера для удаления хоста из 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'])] )