[comment]: # translation:outdated

[comment]: # aside:2

[comment]: # ({e4e166a4-ebcec779})
# Ātrās darba sākšanas ceļvedis

Pēc tam, kad esat [instalējis](/devel/python/installation) 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](#complete-script) ir pieejams lapas beigās.

Ceļvedī arī tiek pieņemts, ka jūsu Zabbix serveris, aģents un API darbojas lokāli.

[comment]: # ({/e4e166a4-ebcec779})

[comment]: # ({8ff8a246-7917ae33})
#### 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](/manual/concepts/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.hostname`](/manual/config/items/itemtypes/zabbix_agent#system.hostname) ir iebūvēta Zabbix aģenta atslēga, kas atgriež hosta nosaukumu.

```python
from zabbix_utils import Getter

agent = Getter(host='127.0.0.1', port=10050)
hostname = agent.get('system.hostname').value
```

[comment]: # ({/8ff8a246-7917ae33})

[comment]: # ({8f96b279-7bec0e05})
#### 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](/manual/web_interface/frontend_sections/users/user_roles#default-permissions) piekļūt Zabbix API.

4\. Izsauciet `logout()` metodi, lai pēc API darbībām aizvērtu sesiju.

```python
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()
```

[comment]: # ({/8f96b279-7bec0e05})

[comment]: # ({8776420b-6f1a3be3})
#### 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()`](/manual/api/reference/host/create) `ZabbixAPI` instancē un norādiet hosta informāciju:

-   `host` — iestatiet uz mainīgo `hostname`, 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.

```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})
#### 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()`](/manual/api/reference/item/create) metodi `ZabbixAPI` instancē un norādiet vienuma informāciju:

-   `hostid` - iestatiet uz `host_id` mainīgo, kas satur tikko izveidotā hosta ID.
-   `name` - vienuma nosaukums.
-   `key_` - iestatiet uz `item_key` mainīgo, kuru tikko definējāt.
-   `type` - iestatiet uz `2` ([trapper vienums](/manual/config/items/itemtypes/trapper)); 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 uz `3` (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.

```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}")
```

[comment]: # ({/14e2596a-b8e7e66c})

[comment]: # ({6d0ff9a9-10296181})
#### 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](/manual/concepts/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 uz `hostname` mainīgo, kas satur hosta nosaukumu, kuru saņēmāt no Zabbix aģents.
-   `item_key` - iestatiet uz `item_key` mainī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.

```python
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:

```bash
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](/manual/web_interface/frontend_sections/monitoring/latest_data)*), lai redzētu vērtību.

[comment]: # ({/6d0ff9a9-10296181})

[comment]: # ({a620a163-3872741b})
#### 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.

```python
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}")
```

[comment]: # ({/a620a163-3872741b})
