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.
Recupera el nom d'equip de l'agent Zabbix
Comenceu recuperant el nom d'equip del sistema on s'està executant l'agent Zabbix. Necessitareu aquest nom d'equip per crear un equip mitjançant l'API de Zabbix.
1. Importa la classe Getter de zabbix_utils.
Aquesta classe funciona com Zabbix get i us permet demanar dades de l'agent Zabbix.
2. Creeu una instància Getter que es connecti amb l'agent local de Zabbix a 127.0.0.1 al port 10050.
3. Crideu al mètode get() a la instància Getter per demanar el nom d'equip a l'agent Zabbix.
- El mètode
get()pren una clau d'element com a paràmetre i envia una crida a l'agent Zabbix per a aquest element. - El mètode
get()retorna un objecte, i el nom d'equip s'emmagatzema dins de l'atributvalord'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 teniu el nom d'equip de l'agent Zabbix i sou connectat a l'API de Zabbix, podeu crear un nou equip a Zabbix.
1. Truqueu al mètode d'API host.create() a la instància ZabbixAPI i proporcioneu els detalls de l'equip:
host- establert a la variablehostnameque conté el nom d'equip que heu recuperat de l'agent Zabbix.interfaces- conté detalls de connexió per a l'agent Zabbix que s'està executant a l'equip.groups- conté almenys un grup d'acollida al qual hauria de pertànyer l'equip.
2. Com que l'API de Zabbix retorna l'ID de l'equip fet de nou, deseu aquest ID a la variable host_id per al seu ús posterior.
3. Imprimeix un missatge per confirmar que s'ha creat l'equip.
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 ID {host_id}")
Crear nou element a Zabbix
Després de crear un equip, podeu afegir-hi un element.
1. Definir una clau única per a la creació de l'element.
2. Crideu el mètode item.create() a la instància ZabbixAPI i proporcioneu els detalls de l'element:
hostid- establert a la variablehost_idque conté l'ID de l'equip que acabeu de crear.name- un nom per a l'element.key_- s'estableix a la variableitem_keyque acabeu de definir.type- establert a2(element trapper), necessari per rebre els valors enviats des de l'script a les passes següents.value_type- establert a3(numèric sense signar), el tipus de dades que aquest article emmagatzema.
3. Atès que l'API de Zabbix retorna l'ID de l'element de nova creació, deseu aquest ID a la variable item_id per al seu ús posterior.
4. Imprimeix un missatge per confirmar que s'ha creat l'element.
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 ID {item_id}")
Enviar valor a l'equip
Ara que heu creat el vostre equip i l'element, podeu enviar-hi dades.
1. Importeu la classe temps i espereu uns segons abans d'enviar les dades.
Això garanteix que Zabbix hagi processat completament el vostre nou equip i element.
2. Importeu la classe Sender de zabbix_utils.
Aquesta classe funciona com a emissor de Zabbix i permet que el vostre script enviï dades a Zabbix.
3. Creeu una instància Sender que es connecti al servidor local de Zabbix a 127.0.0.1 al port 10051.
4. Crideu al mètode send_value() a la instància Sender per enviar un valor a l'element de l'equip i proporcioneu aquests detalls:
hostname- establert a la variablehostnameque conté el nom d'equip que heu recuperat de l'agent Zabbix.item_key- establert a la variableitem_keyque acabeu de definir anteriorment a l'script.1- el valor a enviar.
4. Imprimiu un missatge per confirmar que s'ha enviat el valor.
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"Resposta: {response}")
Després que aquest codi s'executi correctament, hauríeu de veure un missatge d'èxit que indiqui que Zabbix ha rebut el vostre valor:
``bash Sender response: {"processat": 1, "fallit": 0, "total": 1, "temps": "0.000151", "tros": 1}
Ara també podeu comprovar la vostra interfície web de Zabbix (*Monitoratge > [Darreres dades](/manual/web_interface/frontend_sections/monitoring/latest_data)*) per veure el valor.
[comment]: # ({/6d0ff9a9-10296181})
[comment]: # ({a620a163-3872741b})
### # Escriptura completa
A continuació es mostra l'script complet que combina totes les passes: recuperar el nom d'equip, crear l'equip i l'element mitjançant l'API de Zabbix i enviar dades a Zabbix.
```python
import time
from zabbix_utils import Getter, ZabbixAPI, Sender
# Recuperar el nom d'equip des de l'agent Zabbix
agent = Getter(host='127.0.0.1', port=10050)
hostname = agent.get('system.hostname').value
# Connectar i entrar a l'API Zabbix
api = ZabbixAPI(url='127.0.0.1/zabbix')
api.login(user='Admin', password='zabbix')
# Crear un equip a 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 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 ID {item_id}")
# Sortir de l'API
api.logout()
# Esperar a Zabbix per processar equip nou
time.sleep(10)
# Enviar valor a l'equip
sender = Sender(server='127.0.0.1', port=10051)
response = sender.send_value(hostname, item_key, 1)
print(f"Resposta del servidor: {response}")