Advertising:
Aplica dependencia de triggers vía API por Nombre
Jump to navigation
Jump to search
cd /usr/lib/zabbix/externalscripts
python3.9 -m venv pyzabbix cd pyzabbix source bin/activate python -m pip install --upgrade pip pip install pyzabbix pip install python-dotenv pip install "python-dotenv[cli]" pip install distutils-strtobool
vi .env # Opsgenie Environment ops_api_key='<ACTUALIZAR>' ops_api_url='https://api.eu.opsgenie.com' ops_closer_user='sysadmin@zabbix-es.com.es' ops_closer_source='System' ops_closer_note='Alert was unnecessary, closed by System' # Zabbix Environment zbx_api_url='http://<ACTUALIZAR>/zabbix/api_jsonrpc.php' zbx_api_token='<ACTUALIZAR>' # Generales DEBUG=False
vi settriggerdependency.py #!/usr/lib/zabbix/externalscripts/pyzabbix/bin/python import sys import os import logging import argparse from distutils.util import strtobool from pyzabbix import ZabbixAPI from dotenv import load_dotenv load_dotenv(".env") DEBUG = bool(strtobool(os.environ.get('DEBUG','False'))) if(DEBUG): stream = logging.StreamHandler(sys.stdout) stream.setLevel(logging.DEBUG) log = logging.getLogger('pyzabbix') log.addHandler(stream) log.setLevel(logging.DEBUG) zapi = ZabbixAPI(os.environ.get('zbx_api_url')) zapi.login(api_token=os.environ.get('zbx_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())
usage: settriggerdependency.py [-h] [-n HOSTNAME] [-a HIJO] [-b PADRE] optional arguments: -h, --help show this help message and exit -n HOSTNAME, --hostname HOSTNAME Nombre del Host en Zabbix -a HIJO, --hijo HIJO Descripcion del trigger HIJO (HIJO Depende del PADRE) -b PADRE, --padre PADRE Descripcion del trigger PADRE (HIJO Depende del PADRE)
/usr/lib/zabbix/externalscripts/pyzabbix/settriggerdependency.py -n "host21" -a "No iDrac data for" -b "Is unavailable by ICMP"