Da SNMP ad InfluxDB con Telegraf

In questo nuovo post vedremo come acquisire i dati da un sensore remoto attraverso il protocollo SNMP e come memorizzarli in un database InfluxDB sfruttando Telegraf.

Si tratta di uno scenario abbastanza comune in ambito IoT e in generale in applicazioni di monitoraggio ambientale.

Per il nostro esperimento ci serviremo di una istanza “blank” su Cloud9 per impostare il nostro ambiente di lavoro e utilizzeremo il sensore Hwg-STE messo a disposizione dall’azienda all’indirizzo ste.hwg.cz.

Dopo aver avviato la VM di Cloud9 installiamo InfluxDB con

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.4.2_amd64.deb
sudo dpkg -i influxdb_1.4.2_amd64.deb

quindi avviamo il servizio con

sudo service influxdb start

Proseguiamo con l’installazione di Telegraf

wget https://dl.influxdata.com/telegraf/releases/telegraf_1.4.5-1_amd64.deb
sudo dpkg -i telegraf_1.4.5-1_amd64.deb

Prepariamo un file di configurazione più sintentico di quello di default specificando gli input e gli output strettamente necessari con il seguente comando

telegraf -sample-config -input-filter snmp -output-filter influxdb > telegraf.conf

In sostanza come input utilizziamo esclusivamente il protocollo SNMP mentre come output il database InfluxDB in cui andremo a memorizzare i dati.

Il file richiede alcune modifiche manuali in modo da settare opportunamente l’agent SNMP e gli OID che intendiamo acquisire e memorizzare.

# Retrieves SNMP values from remote agents
[[inputs.snmp]]
agents = [ "ste.hwg.cz:161" ]
## Timeout for each SNMP query.
timeout = "5s"
## Number of retries to attempt within timeout.
retries = 3
## SNMP version, values can be 1, 2, or 3
version = 2

## SNMP community string.
community = "public"

## measurement name
name = "temperature"

[[inputs.snmp.field]]
name = "sensor-id"
oid = ".1.3.6.1.4.1.21796.4.1.3.1.8.1"
[[inputs.snmp.field]]
name = "sensor-name"
oid = ".1.3.6.1.4.1.21796.4.1.3.1.2.1"
[[inputs.snmp.field]]
name = "sensor-state"
oid = ".1.3.6.1.4.1.21796.4.1.3.1.3.1"
[[inputs.snmp.field]]
name = "sensor-unit"
oid = ".1.3.6.1.4.1.21796.4.1.3.1.7.1"
[[inputs.snmp.field]]
name = "value"
oid = ".1.3.6.1.4.1.21796.4.1.3.1.5.1"

In questa sede mi limito a riportare solo la sezione specifica abbastanza autoesplicativa, mentre il file completo può essere scaricato dal mio repository GitHub.

Dopo aver effettuato delle modifiche al file di configurazione possiamo copiarlo nella posizione di default con

sudo cp telegraf.conf /etc/telegraf/telegraf.conf

e riavviare il servizio

sudo service telegraf restart

Se ci colleghiamo al database InfluxDB tramite CLI possiamo recuperare i dati appena salvati come è visibile nell’immagine allegata.

hwgste-influxdb

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'invio dei cookies da parte nostra. Maggiori informazioni

Questo sito utilizza i cookies per fornire la migliore esperienza di navigazione possibile. Continuando ad utilizzarlo senza modificare le impostazioni o cliccando su "Accetta" acconsenti al loro utilizzo.

Chiudi