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.

  1. Importeu la classe Getter des 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 a l'agent Zabbix local a 127.0.0.1 al port 10050.

  3. Crideu el mètode get() a la instància Getter per 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'atribut value d'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.

  1. Importeu la classe ZabbixAPI des de zabbix_utils.

  2. Creeu una instància ZabbixAPI i proporcioneu l'URL de la vostra interfície web de Zabbix.

  3. Crideu el mètode login() a la instància ZabbixAPI i proporcioneu el vostre nom d'usuari i mot de pas. El compte ha de tenir permís per accedir a l'API de Zabbix.

  4. 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 variable hostname que 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.

  1. Importeu la classe time i espereu uns segons abans d'enviar les dades.

Això garanteix que Zabbix hagi processat completament el vostre nou equip i element.

  1. Importeu la classe Sender des de zabbix_utils. Aquesta classe funciona com Zabbix sender i permet que el vostre script enviï dades a Zabbix.

  2. Creeu una instància de Sender que es connecti al servidor Zabbix local a 127.0.0.1 al port 10051.

  3. Crideu el mètode send_value() a la instància de Sender per enviar un valor a l'element del vostre equip i proporcionar aquests detalls:

  • hostname - definiu-lo com a variable hostname que conté el nom d'equip que heu recuperat de l'agent Zabbix.
  • item_key - estableix la variable item_key que 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}")