Advertising:

Aplica dependencia de triggers vía API por Nombre

From Zabbix-ES
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"