Advertising:

Aplica dependencia de triggers vía API por Nombre

From Zabbix-ES
Revision as of 10:41, 30 November 2022 by Unknown user (talk)
Jump to navigation Jump to search
mkdir /usr/lib/zabbix/externalscripts/pyzabbix
cd /usr/lib/zabbix/externalscripts/pyzabbix
pipenv install -d --skip-lock
pipenv shell
pip install pyzabbix
vi settriggerdependency.py
#!/usr/bin/env python

import sys
import os
import logging
import argparse
from pyzabbix import ZabbixAPI

#stream = logging.StreamHandler(sys.stdout)
#stream.setLevel(logging.DEBUG)
#log = logging.getLogger('pyzabbix')
#log.addHandler(stream)
#log.setLevel(logging.DEBUG)

zapi = ZabbixAPI("http://192.168.1.1/zabbix/api_jsonrpc.php")
zapi.login(api_token='{API-TOKEN}')

def getTriggerId(host_name,trigger_desc):
   triggers = zapi.trigger.get(filter={"host": host_name, "value": 1}, search={"description": "*"+trigger_desc+"*"}, output=["triggerid","description","value","priority"], searchWildcardsEnabled=True,selectHosts=["host","hostid"])
   return(triggers[0]['triggerid'])

def settriggerDependecy(hijo,padre):
   triggers = zapi.trigger.update(triggerid=hijo,dependencies=[{"triggerid":padre}])

parser = argparse.ArgumentParser("settriggerdependency.py")
parser.add_argument('-n', '--hostname', help="Nombre del Host en Zabbix", type=str)
parser.add_argument('-a', '--hijo', help="Descripcion del trigger HIJO (HIJO Depende del PADRE)", type=str)
parser.add_argument('-b', '--padre', help="Descripcion del trigger PADRE (HIJO Depende del PADRE)", type=str)
args = parser.parse_args()

if args.hostname and args.padre and args.hijo:
   padre=getTriggerId(args.hostname,args.padre)
   hijo=getTriggerId(args.hostname,args.hijo)
   settriggerDependecy(hijo,padre)
else:
   print(parser.print_help())
/usr/lib/zabbix/externalscripts/pyzabbix/settriggerdependency.py -n "host21" -a "No iDrac data for" -b "Is unavailable by ICMP"