Installazione di Prometheus
Prometheus è un software open source (github) che immagazzina metriche in un Time-Series DataBase (TSDB) e permette di eseguire query sui dati.
Introduzione: Cosa è Prometheus?
Prometheus è un software open source (github) che immagazzina metriche in un Time-Series DataBase (TSDB) e permette di eseguire query sui dati.
Un TSDB è un Database strutturato specificamente per storicizzare delle misurazioni che variano nel tempo. Per esempio, laddove la voce temperatura dell'oggetto balcone in un database normale ha un singolo valore, in un TSDB quella voce ha un valore diverso a seconda dell'istanza di tempo per cui viene effettuata la query.
Invece di cercare il valore della voce temperatura dell'oggetto balcone, infatti, in un TSDB si cerca il valore che quella voce aveva in uno specifico lasso di tempo.
Prometheus viene utilizzato spesso per ottenere metriche da Telegraf e renderle disponibili a Grafana per visualizzare dashboard user-friendly. In questa guida illustrerò come installare Prometheus e come configurarlo in modo da leggere i dati da Telegraf.
Scenario 1: Installazione in ambiente Linux
(testato su Ubuntu Server 24.04)
Copiare il link della versione più recente di Prometheus (linux - amd64) dalla pagina delle release
Collegandosi tramite SSH sulla macchina Linux, scaricare l'archivio
wget %LinkCopiatoPrecedentemente%Scompattare l'archivio
tar xvfz prometheus- ← fare TAB per l'autocompleteCancellare l'archivio
rm prometheus-%NomeDelFileCompresso%.tar.gzRinominare la cartella estratta
mv prometheus- prometheus
↑ fare TAB per l'autocompleteSpostarsi nella cartella estratta ed appena rinominata
cd prometheusModificare il file di configurazione prometheus.yml aggiungendo i Target desiderati (l'esempio di target per collegarsi a Telegraf è in fondo alla guida)
nano prometheus.ymlUna volta terminato, uscire e salvare le modifiche premendo CTRL + X seguiti da Y ed infine INVIO
Provare ad avviare prometheus manualmente per testare la correttezza della configurazione
./prometheusSe prometheus si avvia senza errori, procedere alla creazione del servizio in avvio automatico
Creazione del servizio usando Systemd
Creare il file del servizio
nano /etc/systemd/system/prometheus.serviceCompilare il file seguendo il seguente template
[Unit]
Description=Prometheus Monitoring
Wants=network-online.target
After=network-online.target
[Service]
User=root
Restart=on-failure
# Location of the prometheus executable
ExecStart=/home/%user%/prometheus/prometheus \
--config.file=/home/%user%/prometheus/prometheus.yml \
--storage.tsdb.retention.time=1y
[Install]
WantedBy=multi-user.target
Ricaricare systemd, abilitare il servizio appena creato ed avviarlo manualmente la prima volta
sudo systemctl daemon-reload
sudo systemctl enable prometheus.service
sudo systemctl start prometheus.serviceControllare lo stato del servizio
sudo systemctl status prometheus.serviceSe il servizio risulta avviato, provare ad accedere all'interfaccia web tramite
http://IndirizzoIPMacchinaLinux:9090
Scenario 2: Installazione su HomeAssistant
(testato su HomeAsisstant HASSIO 14.1)
Copiare il link della versione più recente di prometheus (linux - arm64 se si tratta di un Raspberry Pi) dalla pagina delle release
Accedere in SSH
Spostarsi nella cartella config di HomeAssistant
cd /root/configScaricare l'archivio
wget %LinkCopiatoPrecedentemente%Scompattare l'archivio
tar xvfz prometheus- ← fare TAB per l'autocompleteCancellare l'archivio
rm prometheus-%NomeDelFileCompresso%.tar.gzRinominare la cartella estratta
mv prometheus- prometheus
↑ fare TAB per l'autocompleteSpostarsi nella cartella estratta ed appena rinominata
cd prometheusModificare il file di configurazione prometheus.yml aggiungendo i Target desiderati
nano prometheus.ymlUna volta terminato, uscire e salvare le modifiche premendo CTRL + X seguiti da Y ed infine INVIO
Provare ad avviare prometheus manualmente per testare la correttezza della configurazione
./prometheusSe Prometheus si avvia senza errori, procedere come segue per creare una automazione per l'avvio automatico
Creazione dell'automazione di avvio automatico
Assicurarsi di stare nella cartella di Prometheus, altrimenti dare il seguente comando
cd /root/config/prometheusCreare un file che avvii Prometheus, dal File Editor di HomeAssistant, oppure dalla console col seguente comando
nano start.shCompilare il file .sh col seguente contenuto
#! /bin/sh
/config/prometheus/prometheus --config.file /config/prometheus/prometheus.ymlImpostare il flag "eseguibile" al file
chmod +x start.shmodificare il file configuration.yaml di HomeAssistant ed aggiungere in fondo al file la seguente riga
shell_command: !include shell_commands.yamlcreare il file shell_commands.yaml dentro alla cartella config di HomeAssistant (la stessa dove risiede configuration.yaml) col seguente contenuto:
shell_start_prometheus: 'sh /config/prometheus/start.sh'Riavviare HomeAssistant
Creare una nuova Automazione ed impostarla seguendo l'esempio in foto o copiando direttamente lo YAML
alias: "Schedule: Start Prometheus"
description: ""
triggers:
- trigger: homeassistant
event: start
conditions: []
actions:
- data: {}
action: shell_command.shell_start_prometheus
mode: single
Riavviare HomeAssistant e, terminato il boot, verificare che Prometheus sia raggiungibile all'indirizzo http://IndirizzoIPDiHomeAssistant:9090
Modificare il file di configurazione per aggiungere/rimuovere target
Entrare in modifica del file di configurazione
nano prometheus/prometheus.yml ← se si è posizionati nella home dell'utente
nano prometheus.yml ← se si è posizionati nella cartella dell'eseguibile di PrometheusEffettuare le dovute modifiche alla configurazione e salvare premendo CTRL + X seguiti da Y ed infine INVIO
Riavviare il servizio di Prometheus
sudo systemctl restart prometheus.serviceControllare che il servizio parta senza errori
sudo systemctl status prometheus.servicePer controllare il dettaglio di eventuali errori, leggere i log del journal
journalctl -xeu prometheus.serviceEsempio di target per Telegraf
controllare la corretta identazione del file .yml (in questo esempio, il segno "-" della prima riga ha due spazi che lo precedono)
- job_name: 'Telegraf01'
scrape_interval: 30s
scheme: http
static_configs:
- targets: ['%IndirizzoIpDiTelegraf%:9273']Controllare che un Target di Prometheus sia funzionante
Accedere alla pagina web di Prometheus andando col browser all'indirizzo IP della macchina di Prometheus, porta 9090.
Selezionare Status → Target Health dal menu in alto

lo stato è indicato dalla colonna State (per il singolo target) e da una riga verticale a sinistra (per l'intero job)

Inoltre, premendo sull'URL indicato alla colonna Endpoint è possibile controllare direttamente la risposta ricevuta dall'endpoint censito come target.
