[comment]: # translation:outdated

[comment]: # aside:2

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

Dopo aver [installato](/devel/python/installation) zabbix\_utils, puoi usarlo nel tuo script.

Questa guida rapida mostra come:

-   Recuperare il nome host da Zabbix agent.
-   Creare un host e un item trapper usando le API di Zabbix.
-   Inviare un valore all'item.

La guida presenta lo script passo dopo passo, spiegando ogni parte man mano che viene introdotta.
Lo [script completo](#complete-script) è fornito alla fine della pagina.

La guida presuppone inoltre che il tuo Zabbix server, agent e le API siano in esecuzione localmente.

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

[comment]: # ({8ff8a246-7917ae33})
#### Recuperare il nome host da Zabbix agent

Inizia recuperando il nome host del sistema su cui è in esecuzione Zabbix agent.
Ti servirà questo nome host per creare un host utilizzando Zabbix API.

1\. Importa la classe `Getter` da zabbix\_utils.
Questa classe funziona come [Zabbix get](/manual/concepts/get) e ti consente di richiedere dati da Zabbix agent.

2\. Crea un'istanza di `Getter` che si connetta a Zabbix agent locale all'indirizzo `127.0.0.1` sulla porta `10050`.

3\. Chiama il metodo `get()` sull'istanza `Getter` per richiedere il nome host da Zabbix agent.

-   Il metodo `get()` accetta come parametro una chiave item e invia una richiesta a Zabbix agent per quell'item.
-   Il metodo `get()` restituisce un oggetto e il nome host è memorizzato nell'attributo `value` di quell'oggetto.
-   [`system.hostname`](/manual/config/items/itemtypes/zabbix_agent#system.hostname) è una chiave integrata di Zabbix agent che restituisce il nome dell'host.

```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})
#### Connettersi e accedere alla API di Zabbix

Successivamente, connettiti alla API di Zabbix.
Questo consente al tuo script di gestire oggetti di Zabbix come host e item.

1\. Importa la classe `ZabbixAPI` da zabbix\_utils.

2\. Crea un'istanza di `ZabbixAPI` e fornisci l'URL della tua interfaccia web di Zabbix.

3\. Chiama il metodo `login()` sull'istanza `ZabbixAPI` e fornisci il tuo nome utente e la tua password.
L'account deve avere il [permesso](/manual/web_interface/frontend_sections/users/user_roles#default-permissions) di accedere alla API di Zabbix.

4\. Chiama il metodo `logout()` per chiudere la sessione dopo le operazioni 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})
#### Creare un host in Zabbix

Ora che hai il nome host da Zabbix agent e sei connesso alla Zabbix API, puoi creare un nuovo host in Zabbix.

1\. Chiama il metodo API [`host.create()`](/manual/api/reference/host/create) sull'istanza `ZabbixAPI` e fornisci i dettagli dell'host:

-   `host` - impostato sulla variabile `hostname` che contiene il nome host recuperato da Zabbix agent.
-   `interfaces` - contiene i dettagli di connessione per Zabbix agent in esecuzione sull'host.
-   `groups` - contiene almeno un gruppo di host a cui l'host deve appartenere.

2\. Poiché la Zabbix API restituisce l'ID dell'host appena creato, salva questo ID nella variabile `host_id` per usarlo in seguito.

3\. Stampa un messaggio per confermare che l'host è stato creato.

```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})
#### Creare un nuovo item in Zabbix

Dopo aver creato un host, puoi aggiungervi un item.

1\. Definisci una chiave univoca per l'item da creare.

2\. Chiama il metodo [`item.create()`](/manual/api/reference/item/create) sull'istanza `ZabbixAPI` e fornisci i dettagli dell'item:

-   `hostid` - impostato sulla variabile `host_id` che contiene l'ID dell'host appena creato.
-   `name` - un nome per l'item.
-   `key_` - impostato sulla variabile `item_key` che hai appena definito.
-   `type` - impostato su `2` ([trapper item](/manual/config/items/itemtypes/trapper)), necessario per ricevere i valori inviati dal tuo script nei passaggi successivi.
-   `value_type` - impostato su `3` (numerico senza segno), il tipo di dati memorizzati da questo item.

3\. Poiché l'API di Zabbix restituisce l'ID dell'item appena creato, salva questo ID nella variabile `item_id` per usarlo in seguito.

4\. Stampa un messaggio per confermare che l'item è stato creato.

```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})
#### Inviare un valore all'host

Ora che hai creato il tuo host e item, puoi inviargli dei dati.

1\. Importa la classe `time` e attendi alcuni secondi prima di inviare i dati.  
Questo garantisce che Zabbix abbia elaborato completamente il nuovo host e item.

2\. Importa la classe `Sender` da zabbix\_utils.  
Questa classe funziona come [Zabbix sender](/manual/concepts/sender) e consente al tuo script di inviare dati a Zabbix.

3\. Crea un'istanza di `Sender` che si connetta al server Zabbix locale all'indirizzo `127.0.0.1` sulla porta `10051`.

4\. Chiama il metodo `send_value()` sull'istanza `Sender` per inviare un valore all'item del tuo host e fornisci questi dettagli:

-   `hostname` - impostato sulla variabile `hostname` contenente il nome host recuperato da Zabbix agent.
-   `item_key` - impostato sulla variabile `item_key` che hai appena definito in precedenza nel tuo script.
-   `1` - il valore da inviare.

4\. Stampa un messaggio per confermare che il valore è stato inviato.

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

Dopo che questo codice è stato eseguito correttamente, dovresti vedere un messaggio di successo che indica che Zabbix ha ricevuto il tuo valore:

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

Ora puoi anche controllare l'interfaccia web di Zabbix (*Monitoring > [Latest data](/manual/web_interface/frontend_sections/monitoring/latest_data)*) per vedere il valore.

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

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

Di seguito è riportato lo script completo che combina tutti i passaggi: recupero del nome host, creazione del host e dell'item tramite Zabbix API e invio dei dati a Zabbix.

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

# Recupera il nome host da Zabbix agent
agent = Getter(host='127.0.0.1', port=10050)
hostname = agent.get('system.hostname').value

# Connessione e accesso a Zabbix API
api = ZabbixAPI(url='127.0.0.1/zabbix')
api.login(user='Admin', password='zabbix')

# Crea il 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"Host '{hostname}' creato con ID {host_id}")

# Crea l'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"Item '{item_key}' creato con ID {item_id}")

# Disconnessione da API
api.logout()

# Attende che Zabbix elabori il nuovo host
time.sleep(10)

# Invia il valore al host
sender = Sender(server='127.0.0.1', port=10051)
response = sender.send_value(hostname, item_key, 1)

print(f"Risposta del sender: {response}")
```

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