[comment]: # translation:outdated

[comment]: # aside:2

[comment]: # ({e4e166a4-ebcec779})
# Przewodnik szybkiego startu

Po [zainstalowaniu](/devel/python/installation) zabbix\_utils możesz używać go w swoim skrypcie.

Ten przewodnik szybkiego startu pokazuje, jak:

-   Pobierać nazwę hosta z Zabbix agent.
-   Tworzyć host i pozycja typu trapper za pomocą Zabbix API.
-   Wysyłać wartość do pozycji.

Przewodnik przedstawia skrypt krok po kroku, wyjaśniając każdą część w miarę jej wprowadzania.
Na końcu strony znajduje się [kompletny skrypt](#complete-script).

W przewodniku założono również, że Twój serwer Zabbix, agent i API działają lokalnie.

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

[comment]: # ({8ff8a246-7917ae33})
#### Pobieranie nazwy hosta z Zabbix agent

Zacznij od pobrania nazwy hosta systemu, na którym działa Zabbix agent.
Ta nazwa hosta będzie potrzebna do utworzenia hosta przy użyciu Zabbix API.

1\. Zaimportuj klasę `Getter` z zabbix\_utils.
Ta klasa działa podobnie jak [Zabbix get](/manual/concepts/get) i umożliwia żądanie danych z Zabbix agent.

2\. Utwórz instancję `Getter`, która łączy się z lokalnym Zabbix agent pod adresem `127.0.0.1` na porcie `10050`.

3\. Wywołaj metodę `get()` na instancji `Getter`, aby zażądać nazwy hosta z Zabbix agent.

-   Metoda `get()` przyjmuje klucz pozycji jako parametr i wysyła żądanie do Zabbix agent o tę pozycję.
-   Metoda `get()` zwraca obiekt, a nazwa hosta jest przechowywana w atrybucie `value` tego obiektu.
-   [`system.hostname`](/manual/config/items/itemtypes/zabbix_agent#system.hostname) to wbudowany klucz Zabbix agent, który zwraca nazwę hosta.

```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})
#### Połącz się i zaloguj do Zabbix API

Następnie połącz się z Zabbix API.
Pozwoli to Twojemu skryptowi zarządzać obiektami Zabbix, takimi jak hosty i pozycje.

1\. Zaimportuj klasę `ZabbixAPI` z zabbix\_utils.

2\. Utwórz instancję `ZabbixAPI` i podaj adres URL swojego interfejsu webowego Zabbix.

3\. Wywołaj metodę `login()` na instancji `ZabbixAPI` i podaj swoją nazwę użytkownika oraz hasło.
Konto musi mieć [uprawnienie](/manual/web_interface/frontend_sections/users/user_roles#default-permissions) do uzyskiwania dostępu do Zabbix API.

4\. Wywołaj metodę `logout()`, aby zamknąć sesję po zakończeniu operacji API.

```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})
#### Utwórz host w Zabbix

Teraz, gdy masz nazwę hosta z Zabbix agent i jesteś połączony z Zabbix API, możesz utworzyć nowy host w Zabbix.

1\. Wywołaj metodę API [`host.create()`](/manual/api/reference/host/create) na instancji `ZabbixAPI` i podaj szczegóły hosta:

-   `host` — ustaw na zmienną `hostname` zawierającą nazwę hosta pobraną z Zabbix agent.
-   `interfaces` — zawiera szczegóły połączenia dla Zabbix agent uruchomionego na hoście.
-   `groups` — zawiera co najmniej jedną grupę hostów, do której host powinien należeć.

2\. Ponieważ Zabbix API zwraca ID nowo utworzonego hosta, zapisz to ID w zmiennej `host_id` do późniejszego użycia.

3\. Wyświetl komunikat potwierdzający, że host został utworzony.

```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})
#### Utwórz nową pozycję w Zabbix

Po utworzeniu hosta możesz dodać do niego pozycję.

1\. Zdefiniuj unikalny klucz dla pozycji, która ma zostać utworzona.

2\. Wywołaj metodę [`item.create()`](/manual/api/reference/item/create) na instancji `ZabbixAPI` i podaj szczegóły pozycji:

-   `hostid` - ustaw na zmienną `host_id` zawierającą ID hosta, który został właśnie utworzony.
-   `name` - nazwa pozycji.
-   `key_` - ustaw na zmienną `item_key`, którą właśnie zdefiniowano.
-   `type` - ustaw na `2` ([pozycja trapper](/manual/config/items/itemtypes/trapper)); jest to wymagane do odbierania wartości wysyłanych ze skryptu w kolejnych krokach.
-   `value_type` - ustaw na `3` (numeric unsigned), czyli typ danych przechowywanych przez tę pozycję.

3\. Ponieważ Zabbix API zwraca ID nowo utworzonej pozycji, zapisz to ID w zmiennej `item_id` do późniejszego użycia.

4\. Wyświetl komunikat potwierdzający utworzenie pozycji.

```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})
#### Wyślij wartość do hosta

Teraz, gdy utworzyłeś host i pozycję, możesz wysłać do niej dane.

1\. Zaimportuj klasę `time` i odczekaj kilka sekund przed wysłaniem danych.
Dzięki temu Zabbix w pełni przetworzy nowy host i pozycję.

2\. Zaimportuj klasę `Sender` z zabbix\_utils.
Ta klasa działa podobnie jak [Zabbix sender](/manual/concepts/sender) i umożliwia skryptowi wysyłanie danych do Zabbix.

3\. Utwórz instancję `Sender`, która łączy się z lokalnym serwerem Zabbix pod adresem `127.0.0.1` na porcie `10051`.

4\. Wywołaj metodę `send_value()` na instancji `Sender`, aby wysłać wartość do pozycji hosta, i podaj następujące szczegóły:

-   `hostname` — ustaw na zmienną `hostname` zawierającą nazwę hosta pobraną z Zabbix agent.
-   `item_key` — ustaw na zmienną `item_key`, którą właśnie wcześniej zdefiniowałeś w skrypcie.
-   `1` — wartość do wysłania.

4\. Wyświetl komunikat potwierdzający, że wartość została wysłana.

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

Po pomyślnym wykonaniu tego kodu powinien zostać wyświetlony komunikat o powodzeniu informujący, że Zabbix odebrał wartość:

```bash
Sender response: {"processed": 1, "failed": 0, "total": 1, "time": "0.000151", "chunk": 1}
```

Teraz możesz również sprawdzić wartość w interfejsie webowym Zabbix (*Monitoring > [Latest data](/manual/web_interface/frontend_sections/monitoring/latest_data)*).

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

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

Poniżej znajduje się kompletny skrypt, który łączy wszystkie kroki: pobranie nazwy hosta, utworzenie hosta i pozycji przy użyciu Zabbix API oraz wysłanie danych do Zabbix.

```python
import time
from zabbix_utils import Getter, ZabbixAPI, Sender

# Pobierz nazwę hosta z Zabbix agent
agent = Getter(host='127.0.0.1', port=10050)
hostname = agent.get('system.hostname').value

# Połącz z Zabbix API i zaloguj się
api = ZabbixAPI(url='127.0.0.1/zabbix')
api.login(user='Admin', password='zabbix')

# Utwórz host w 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"Host '{hostname}' created with ID {host_id}")

# Utwórz pozycję w 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"Item '{item_key}' created with ID {item_id}")

# Wyloguj się z API
api.logout()

# Poczekaj, aż Zabbix przetworzy nowy host
time.sleep(10)

# Wyślij wartość do hosta
sender = Sender(server='127.0.0.1', port=10051)
response = sender.send_value(hostname, item_key, 1)

print(f"Sender response: {response}")
```

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