Utilitzeu l'API de Zabbix
zabbix_utils us permet utilitzar l'API de Zabbix per gestionar objectes Zabbix, incloent-hi la creació d'amfitrions, l'actualització d'elements, la recuperació d'esdeveniments i més.
Les peticions a l'API es poden fer en mode síncron o asíncron:
- En mode síncron, el vostre script de Python envia una sol·licitud i espera una resposta abans de continuar, cosa que és adequada per a operacions senzilles, seqüencials i predictibles.
- En mode asíncron, l'script envia peticions sense esperar cada resposta, cosa que permet que altres operacions continuïn en paral·lel; això és més eficient per a peticions lentes o grans lots de dades.
Els exemples d'aquesta pàgina se centren en el mode síncron, tot i que el mode asíncron segueix patrons similars. Hi ha exemples addicionals disponibles al repositori de GitHub zabbix_utils.
Importació
Per utilitzar zabbix_utils per treballar amb l'API de Zabbix, importeu la classe ZabbixAPI al vostre script:
from zabbix_utils import ZabbixAPI
Si ja utilitzeu una biblioteca comunitària de Python, normalment podeu substituir aquesta importació per ZabbixAPI from zabbix_utils.
Inici de sessió
Abans de fer peticions a l'API, heu de crear una instància de ZabbixAPI i iniciar la sessió a l'API de Zabbix.
Trieu el mètode que millor s'adapti a la manera com gestioneu les credencials. Podeu utilitzar el vostre nom d'usuari i mot de pas o tokens d'API.
Durant la inicialització
Quan creeu una instància de ZabbixAPI, podeu proporcionar l'URL de la interfície web de Zabbix i les vostres credencials alhora:
# Nom d'usuari i mot de pas:
api = ZabbixAPI(url="127.0.0.1/zabbix", user="Admin", password="zabbix")
# Token de l'API:
api = ZabbixAPI(url="127.0.0.1/zabbix", token="your_api_token")
Si preferiu agrupar paràmetres de connexió, podeu passar-los com a diccionari de Python i desempaquetar-lo utilitzant la sintaxi d'arguments de paraules clau de Python:
ZABBIX_AUTH = {
"url": "127.0.0.1/zabbix",
"user": "Admin",
"password": "zabbix"
}
api = ZabbixAPI(**ZABBIX_AUTH)
Ús de login()
Primer podeu crear una instància de ZabbixAPI només amb l'URL de la interfície web de Zabbix i, més tard, utilitzar el mètode login() amb les vostres credencials:
# Nom d'usuari i mot de pas:
api = ZabbixAPI(url="127.0.0.1/zabbix")
api.login(user="Admin", password="zabbix")
# Token de l'API:
api = ZabbixAPI(url="127.0.0.1/zabbix")
api.login(token="your_api_token")
Ús de variables d'entorn
Primer podeu emmagatzemar les vostres credencials com a variables d'entorn, per exemple, mitjançant un terminal:
# Nom d'usuari i mot de pas:
export ZABBIX_USER="Admin"
export ZABBIX_PASSWORD="zabbix"
# Token:
export ZABBIX_TOKEN="your_api_token"
Aleshores, si inicieu el vostre script des de la mateixa sessió de terminal, la instància ZabbixAPI de l'script només requereix l'URL de la interfície web de Zabbix:
api = ZabbixAPI(url="127.0.0.1/zabbix")
També podeu emmagatzemar l'URL en una variable d'entorn:
# Nom d'usuari i mot de pas:
export ZABBIX_USER="Admin"
export ZABBIX_PASSWORD="zabbix"
export ZABBIX_URL="https://127.0.0.1/zabbix"
# Token:
export ZABBIX_TOKEN="your_api_token"
export ZABBIX_URL="https://127.0.0.1/zabbix"
Quan l'URL i les credencials són definides com a variables d'entorn, la instància ZabbixAPI a l'script no requereix cap argument:
api = ZabbixAPI()
Tanca la sessió
Si heu iniciat la sessió amb un nom d'usuari i un mot de pas, crideu el mètode logout() després de completar les operacions de l'API:
from zabbix_utils import ZabbixAPI
api = ZabbixAPI(url="127.0.0.1/zabbix")
api.login(user="Admin", password="zabbix")
# Les accions de l'API van aquí
api.logout()
No cal cridar el mètode logout() quan s'empren tokens de l'API.
Sol·licituds API
Després d'iniciar la sessió, podeu fer qualsevol petició API cridant els mètodes descrits a l'API de Zabbix mètode de referència.
Els mètodes API es criden amb el format següent:
api_instance.zabbix_object.method(parameters)
Alguns noms de mètodes o objectes de l'API de Zabbix utilitzen paraules que són paraules clau reservades a Python (per exemple, import).
Per evitar errors de Python, afegiu un subratllat al nom del mètode o de l'objecte quan l'utilitzeu a Python (per exemple, api.configuration.import_).
Per exemple, per veure un llistat d'equips amb host.get:
# 1. Importar ZabbixAPI des de zabbix_utils:
from zabbix_utils import ZabbixAPI
# 2. Crear la instància de ZabbixAPI i inicia la sessió:
api = ZabbixAPI(url="127.0.0.1/zabbix")
api.login(user="Admin", password="zabbix")
# 3. Recuperar els equips que coincideixen amb un filtre:
hosts = api.host.get(
filter={
"host": [
"Zabbix server",
"Linux server"
]
}
)
# 4. Iterar sobre els equips retornats i imprimeix els detalls de cada equip:
for host in hosts:
print(host)
# 5. Tancar la sessió de l'API per tancar la sessió:
api.logout()
Mode asíncron
El mode asíncron permet que el vostre script enviï sol·licituds API sense esperar que cadascuna acabi. Això pot fer que el vostre script sigui més eficient quan necessita realitzar moltes sol·licituds API o quan algunes peticions triguen molt de temps.
Quan utilitzeu el mode asíncron, hi ha diferències importants en comparació amb el mode síncron:
- Importeu el mòdul
asynciode Python (primer heu de instal·lar les dependències necessàries). - Importeu
AsyncZabbixAPIen lloc deZabbixAPI. - Escriviu el vostre codi dins d'una funció
async. - Utilitzeu
awaitquan crideu mètodes API, inclososlogin()ilogout().
Quan creeu una instància d'AsyncZabbixAPI, no podeu iniciar sessió durant la inicialització.
Per exemple, per veure una llista d'equip amb host.get en mode asíncron:
# 1. Importeu asyncio per al mode asíncron i AsyncZabbixAPI des de zabbix_utils:
import asyncio
from zabbix_utils import AsyncZabbixAPI
# 2. Defineu la funció asíncrona principal on s'executaran totes les operacions de l'API:
async def main():
# 3. Creeu una instància d'AsyncZabbixAPI i inicieu la sessió (cal esperar):
api = AsyncZabbixAPI(url="127.0.0.1")
await api.login(user="User", password="zabbix")
# 4. Recupereu els equip que coincideixin amb un filtre (cal esperar):
hosts = await api.host.get(
filter={
"host": [
"Zabbix server",
"Linux servidor"
]
}
)
# 5. Iterar sobre els hosts retornats i imprimir els detalls de cada equip:
for host in hosts:
print(host)
# 6. Tancar la sessió de l'API per tancar la sessió (cal esperar):
await api.logout()
# 7. Executar la funció async main() utilitzant el bucle d'esdeveniments d'asyncio:
asyncio.run(main())
Exemples
Els exemples següents mostren tasques comunes de l'API de Zabbix emprant la biblioteca zabbix_utils.
Hi ha exemples addicionals disponibles al directori examples del repositori de GitHub zabbix_utils.