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"