Guia d'inici ràpid
Després d'haver instal·lat zabbix_utils, el podeu utilitzar al vostre script.
Aquesta guia d'inici ràpid us mostra com:
- Recuperar el nom de l'equip de l'agent Zabbix.
- Crear un equip i un element trapper mitjançant l'API de Zabbix.
- Enviar un valor a l'element.
La guia presenta l'script passa a passa, explicant cada part a mesura que s'introdueix. L'script complet es proporciona al final de la pàgina.
La guia també assumeix que el vostre servidor, agent i API Zabbix s'executen localment.
Recuperar el nom d'equip de l'agent Zabbix
Comenceu recuperant el nom d'equip del sistema on s'executa l'agent Zabbix. Necessitareu aquest nom d'amfitrió per crear un equip mitjançant l'API de Zabbix.
-
Importeu la classe
Getterdes de zabbix_utils. Aquesta classe funciona com Zabbix get i us permet demanar dades de l'agent Zabbix. -
Creeu una instància
Getterque es connecti a l'agent Zabbix local a127.0.0.1al port10050. -
Crideu el mètode
get()a la instànciaGetterper sol·licitar el nom d'amfitrió de l'agent Zabbix.
- El mètode
get()pren una clau d'element com a paràmetre i envia una petició a l'agent Zabbix per a aquest element. - El mètode
get()retorna un objecte, i el nom de l'amfitrió s'emmagatzema dins de l'atributvalued'aquest objecte. system.hostnameés una clau d'agent Zabbix integrada que retorna el nom de l'equip.
from zabbix_utils import Getter
agent = Getter(host='127.0.0.1', port=10050)
hostname = agent.get('system.hostname').value
Connectar i iniciar la sessió a l'API de Zabbix
Tot seguit, connecteu-vos a l'API de Zabbix. Això permet que el vostre script gestioni objectes de Zabbix com ara equips i elements.
-
Importeu la classe
ZabbixAPIdes de zabbix_utils. -
Creeu una instància
ZabbixAPIi proporcioneu l'URL de la vostra interfície web de Zabbix. -
Crideu el mètode
login()a la instànciaZabbixAPIi proporcioneu el vostre nom d'usuari i mot de pas. El compte ha de tenir permís per accedir a l'API de Zabbix. -
Crideu el mètode
logout()per tancar la sessió després de 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 operacions de l'API van aquí
api.logout()
Crear un equip a Zabbix
Ara que ja teniu el nom d'equip de l'agent Zabbix i esteu connectats a l'API de Zabbix, podeu crear un equip nou a Zabbix.
1. Crideu el mètode API host.create() a la instància ZabbixAPI i proporcioneu els detalls de l'equip:
host- definiu la variablehostnameque conté el nom d'equip que heu recuperat de l'agent Zabbix.interfaces- conté els detalls de connexió per a l'agent Zabbix que s'està executant a l'equip.groups- conté almenys un grup d'equips al qual hauria de pertànyer l'equip.
2. Com que l'API de Zabbix retorna l'ID de l'equip recentment creat, deseu aquest ID a la variable host_id per a un ús posterior.
3. Imprimiu un missatge per confirmar que l'host s'ha creat.```python api.host.create( host=hostname, interfaces=[{ 'type': 1, 'main': 1, 'useip': 1, 'ip': '127.0.0.1', 'dns': '', 'port': '10050', }], groups=[{'groupid': '2'}] )
host_id = host['hostids'][0]
print(f"Host '{hostname}' created with ID {host_id}")
[comment]: # ({/8776420b-6f1a3be3})
[comment]: # ({14e2596a-b8e7e66c})
#### Crea un element nou a Zabbix
Després de crear un equip, podeu afegir-hi un element.
1. Definiu una clau única per a l'element que es crearà.
2. Crideu el mètode [`item.create()`](/manual/api/reference/item/create) a la instància `ZabbixAPI` i proporcioneu els detalls de l'element:
- `hostid` - definiu-lo com a variable `host_id` que conté l'ID de l'equip que acabeu de crear.
- `name` - un nom per a l'element.
- `key_` - definiu-lo com a variable `item_key` que acabeu de definir.
- `type` - definiu-lo com a `2` ([trapper item](/manual/config/items/itemtypes/trapper)), necessari per rebre els valors enviats des del vostre script a les passes següents.
- `value_type` - definiu-lo com a `3` (numèric sense signe), el tipus de dades que emmagatzema aquest element.
3. Com que l'API de Zabbix retorna l'ID de l'element recentment creat, deseu aquest ID a la variable `item_id` per a un ús posterior.
4\. Imprimiu un missatge per confirmar que l'element s'ha creat.
```python
item_key = 'app.myservice.heartbeat'
item = api.item.create(
hostid=host_id,
name='App heartbeat',
key_=item_key,
type=2,
value_type=3,
)
item_id = item['itemids'][0]
print(f"Item '{item_key}' created with ID {item_id}")
Enviar valor a l'equip
Ara que ja heu creat l'equip i l'element, ja hi podeu enviar dades.
- Importeu la classe
timei espereu uns segons abans d'enviar les dades.
Això garanteix que Zabbix hagi processat completament el vostre nou equip i element.
-
Importeu la classe
Senderdes de zabbix_utils. Aquesta classe funciona com Zabbix sender i permet que el vostre script enviï dades a Zabbix. -
Creeu una instància de
Senderque es connecti al servidor Zabbix local a127.0.0.1al port10051. -
Crideu el mètode
send_value()a la instància deSenderper enviar un valor a l'element del vostre equip i proporcionar aquests detalls:
hostname- definiu-lo com a variablehostnameque conté el nom d'equip que heu recuperat de l'agent Zabbix.item_key- estableix la variableitem_keyque acabes de definir anteriorment al teu script.1- el valor a enviar.
4. Imprimeix un missatge per confirmar que el valor s'ha enviat.
import time
time.sleep(10)
from zabbix_utils import Sender
sender = Sender(server='127.0.0.1', port=10051)
response = sender.send_value(hostname, item_key, 1)
print(f"Sender response: {response}")
Després que aquest codi s'executi correctament, hauríeu de veure un missatge d'èxit que indica que Zabbix ha rebut el vostre valor:
Sender response: {"processed": 1, "failed": 0, "total": 1, "time": "0.000151", "chunk": 1}
Ara també podeu consultar la vostra interfície web de Zabbix (Monitorització > Dades més recents) per veure el valor.
Script complet
Tot seguit teniu l'script complet que combina totes les passes: recuperar el nom de l'equip, crear l'equip i l'element mitjançant l'API de Zabbix i enviar dades a Zabbix.
import time
from zabbix_utils import Getter, ZabbixAPI, Sender
# Retrieve host name from Zabbix agent
agent = Getter(host='127.0.0.1', port=10050)
hostname = agent.get('system.hostname').value
# Connect and log in to Zabbix API
api = ZabbixAPI(url='127.0.0.1/zabbix')
api.login(user='Admin', password='zabbix')
# Create host in Zabbix
host = api.host.create(
host=hostname,
interfaces=[{
'type': 1,
'main': 1,
'useip': 1,
'ip': '127.0.0.1',
'dns': '',
'port': '10050',
}],
groups=[{'groupid': '2'}]
)
host_id = host['hostids'][0]
print(f"Equip '{hostname}' creat amb l'ID {host_id}")
# Create item in Zabbix
item_key = 'app.myservice.heartbeat'
item = api.item.create(
hostid=host_id,
name='App heartbeat',
key_=item_key,
type=2,
value_type=3
)
item_id = item['itemids'][0]
print(f"Element '{item_key}' creat amb l'ID {item_id}")
# Log out from API
api.logout()
# Wait for Zabbix to process new host
time.sleep(10)
# Send value to host
sender = Sender(server='127.0.0.1', port=10051)
response = sender.send_value(hostname, item_key, 1)
print(f"Resposta del sender: {response}")