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.
Peticions d'API ####
Després d'haver iniciat la sessió, podeu fer qualsevol petició d'API cridant mètodes descrits a l'API de Zabbix referència de mètode.
Els mètodes API s'anomenen utilitzant el següent format:
api_instance.zabbix_object.method(paràmetres)
Alguns mètodes de l'API de Zabbix o noms d'objectes utilitzen paraules clau reservades en Python (per exemple, importar).
Per evitar errors de Python, afegiu un subratllat al mètode o nom de l'objecte quan l'utilitzeu en Python (per exemple, api.configuration.import_).
::
Per exemple, per veure una llista d'eequips amb host.get:
# 1. Importació ZabbixAPI des de zabbix_utils:
de zabbix_utils importació ZabbixAPI
# 2. Creeu la instància ZabbixAPI i inicieu 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»: [
«Servidor Zabbix».
«Servidor Linux».
]
}
)
# 4. Itera sobre els equips retornats i imprimeix les dades de cada equip:
for host in hosts:
print(host)
# 5. Tanca la sessió de l'API per tancar la sessió:
api.logout()
Mode asíncron
El mode asíncron permet que el vostre script enviï peticions d'API sense esperar que acabi cadascuna. Això pot fer que el vostre script sigui més eficient quan ha de fer moltes peticions d'API o quan algunes peticions triguen molt de temps.
Quan s'utilitza el mode asíncron, hi ha diferències importants en comparació amb el mode síncron:
- Importar el mòdul
asynciode Python (primer heu d'instal·lar les dependències requerides). - Importació
AsyncZabbixAPIen lloc deZabbixAPI. - Escriu el teu codi dins d'una funció
async. - Utilitzeu
awaitquan es cridi mètodes de l'API, incloentlogin()ilogout().
Quan creeu una instància AsyncZabbixAPI, no podeu iniciar sessió durant la inicialització.
::
Per exemple, per veure un llistat d'equips amb host.get en mode asíncron:
# 1. Importa asyncio per al mode asíncron, i AsyncZabbixAPI de zabbix_utils:
importó asyncio
from zabbix_utils import AsyncZabbixAPI
# 2. Definiu la funció principal de sincronització on s'executaran totes les operacions de l'API:
async def main():
# 3. Creeu una instància AsyncZabbixAPI i inicieu sessió (ha d'esperar):
api = AsyncZabixAPI(url="127.0.0.1")
await api.login(user="User", password="zabbix")
# 4. Recuperar els amfitrions que coincideixen amb un filtre (ha d'esperar):
hosts = await api.host.get(
filter={
«Host»: [
«Servidor Zabbix».
«Servidor Linux».
]
}
)
# 5. Itera sobre els equips retornats i imprimeix les dades de cada equip:
per a l'equip en els equips:
print(host)
# 6. Tanca la sessió des de l'API per tancar la sessió (cal esperar):
await api.logout()
# 7. Executeu 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.