Ātrās darba sākšanas ceļvedis
Pēc tam, kad esat instalējis zabbix_utils, varat to izmantot savā skriptā.
Šis ātrās darba sākšanas ceļvedis parāda, kā:
- Iegūt hosta nosaukumu no Zabbix aģenta.
- Izveidot hostu un trapper vienumu, izmantojot Zabbix API.
- Nosūtīt vērtību uz vienumu.
Ceļvedī skripts ir parādīts soli pa solim, izskaidrojot katru daļu tās ieviešanas brīdī. Līdz ar to pilnais skripts ir pieejams lapas beigās.
Ceļvedī arī tiek pieņemts, ka jūsu Zabbix serveris, aģents un API darbojas lokāli.
Iegūstiet hosta nosaukumu no Zabbix aģenta
Sāciet ar tās sistēmas hosta nosaukuma iegūšanu, kurā darbojas Zabbix aģents. Šis hosta nosaukums būs nepieciešams, lai, izmantojot Zabbix API, izveidotu hostu.
1. Importējiet Getter klasi no zabbix_utils.
Šī klase darbojas līdzīgi kā Zabbix get un ļauj pieprasīt datus no Zabbix aģenta.
2. Izveidojiet Getter instanci, kas izveido savienojumu ar lokālo Zabbix aģentu adresē 127.0.0.1, portā 10050.
3. Izsauciet get() metodi Getter instancei, lai pieprasītu hosta nosaukumu no Zabbix aģenta.
get()metode kā parametru pieņem vienuma atslēgu un nosūta pieprasījumu Zabbix aģentam šim vienumam.get()metode atgriež objektu, un hosta nosaukums tiek glabāts šī objekta atribūtāvalue.system.hostnameir iebūvēta Zabbix aģenta atslēga, kas atgriež hosta nosaukumu.
from zabbix_utils import Getter
agent = Getter(host='127.0.0.1', port=10050)
hostname = agent.get('system.hostname').value
Pievienojieties un piesakieties Zabbix API
Tālāk pievienojieties Zabbix API. Tas ļauj jūsu skriptam pārvaldīt Zabbix objektus, piemēram, hostus un vienumus.
1. Importējiet ZabbixAPI klasi no zabbix_utils.
2. Izveidojiet ZabbixAPI instanci un norādiet savas Zabbix tīmekļa lietotāja saskarnes URL.
3. Izsauciet login() metodi ZabbixAPI instancei un norādiet savu lietotājvārdu un paroli.
Kontam jābūt atļaujai piekļūt Zabbix API.
4. Izsauciet logout() metodi, lai pēc API darbībām aizvērtu sesiju.
from zabbix_utils import ZabbixAPI
api = ZabbixAPI(url='127.0.0.1/zabbix')
api.login(user='Admin', password='zabbix')
# API operations go here
api.logout()
Izveidojiet hostu Zabbix
Tagad, kad esat ieguvis hosta nosaukumu no Zabbix aģenta un esat izveidojis savienojumu ar Zabbix API, varat izveidot jaunu hostu Zabbix.
1. Izsauciet API metodi host.create() ZabbixAPI instancē un norādiet hosta informāciju:
host— iestatiet uz mainīgohostname, kas satur hosta nosaukumu, kuru ieguvāt no Zabbix aģenta.interfaces— satur savienojuma informāciju par Zabbix aģentu, kas darbojas hostā.groups— satur vismaz vienu hostu grupu, kurai hostam jāpieder.
2. Tā kā Zabbix API atgriež jaunizveidotā hosta ID, saglabājiet šo ID mainīgajā host_id, lai to izmantotu vēlāk.
3. Izdrukājiet ziņojumu, lai apstiprinātu, ka hosts tika izveidots.
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}")
Izveidojiet jaunu vienumu Zabbix
Pēc hosta izveides varat tam pievienot vienumu.
1. Definējiet unikālu atslēgu izveidojamajam vienumam.
2. Izsauciet item.create() metodi ZabbixAPI instancē un norādiet vienuma informāciju:
hostid- iestatiet uzhost_idmainīgo, kas satur tikko izveidotā hosta ID.name- vienuma nosaukums.key_- iestatiet uzitem_keymainīgo, kuru tikko definējāt.type- iestatiet uz2(trapper vienums); tas ir nepieciešams, lai saņemtu vērtības, ko jūsu skripts nosūtīs nākamajās darbībās.value_type- iestatiet uz3(bezparaksta skaitlisks), tas ir datu tips, ko šis vienums glabā.
3. Tā kā Zabbix API atgriež jaunizveidotā vienuma ID, saglabājiet šo ID mainīgajā item_id, lai to izmantotu vēlāk.
4. Izdrukājiet ziņojumu, lai apstiprinātu, ka vienums tika izveidots.
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}")
Nosūtiet vērtību uz hostu
Tagad, kad esat izveidojis savu hostu un vienumu, varat uz to nosūtīt datus.
1. Importējiet time klasi un pirms datu nosūtīšanas uzgaidiet dažas sekundes.
Tas nodrošina, ka Zabbix ir pilnībā apstrādājis jūsu jauno hostu un vienumu.
2. Importējiet Sender klasi no zabbix_utils.
Šī klase darbojas līdzīgi kā Zabbix sender un ļauj jūsu skriptam nosūtīt datus uz Zabbix.
3. Izveidojiet Sender instanci, kas pieslēdzas lokālajam Zabbix serverim 127.0.0.1 adresē, portā 10051.
4. Izsauciet send_value() metodi Sender instancē, lai nosūtītu vērtību uz jūsu hosta vienumu, un norādiet šādu informāciju:
hostname- iestatiet uzhostnamemainīgo, kas satur hosta nosaukumu, kuru saņēmāt no Zabbix aģents.item_key- iestatiet uzitem_keymainīgo, ko tikko iepriekš definējāt savā skriptā.1- nosūtāmā vērtība.
4. Izdrukājiet ziņojumu, lai apstiprinātu, ka vērtība tika nosūtīta.
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}")
Pēc tam, kad šis kods būs veiksmīgi izpildīts, jums vajadzētu redzēt veiksmes ziņojumu, kas norāda, ka Zabbix saņēma jūsu vērtību:
Sender response: {"processed": 1, "failed": 0, "total": 1, "time": "0.000151", "chunk": 1}
Tagad varat arī pārbaudīt savu Zabbix tīmekļa saskarni (Monitoring > Latest data), lai redzētu vērtību.
Pilns skripts
Zemāk ir pilns skripts, kas apvieno visas darbības: hosta nosaukuma iegūšanu, hosta un vienuma izveidi, izmantojot Zabbix API, un datu nosūtīšanu uz Zabbix.
import time
from zabbix_utils import Getter, ZabbixAPI, Sender
# Iegūt hosta nosaukumu no Zabbix aģenta
agent = Getter(host='127.0.0.1', port=10050)
hostname = agent.get('system.hostname').value
# Izveidot savienojumu ar Zabbix API un pieteikties
api = ZabbixAPI(url='127.0.0.1/zabbix')
api.login(user='Admin', password='zabbix')
# Izveidot hostu 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"Hosts '{hostname}' izveidots ar ID {host_id}")
# Izveidot vienumu 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"Vienums '{item_key}' izveidots ar ID {item_id}")
# Atteikties no API
api.logout()
# Gaidīt, līdz Zabbix apstrādā jauno hostu
time.sleep(10)
# Nosūtīt vērtību hostam
sender = Sender(server='127.0.0.1', port=10051)
response = sender.send_value(hostname, item_key, 1)
print(f"Sender atbilde: {response}")