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.

Condividi
Installazione di Prometheus

❗
Se non l'hai ancora fatto, installa Telegraf tramite la guida presente in quest'altro articolo.

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'autocomplete

Cancellare l'archivio

rm prometheus-%NomeDelFileCompresso%.tar.gz

Rinominare la cartella estratta

mv prometheus-	prometheus
             ↑ fare TAB per l'autocomplete

Spostarsi nella cartella estratta ed appena rinominata

cd prometheus

Modificare il file di configurazione prometheus.yml aggiungendo i Target desiderati (l'esempio di target per collegarsi a Telegraf è in fondo alla guida)

nano prometheus.yml

Una 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

./prometheus

Se 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.service

Compilare 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
⚠️
sostituire "%user%" con il nome utente della macchina Linux
💡
per aumentare la retention dei dati all'interno del TSDB, modificare il parametro --storage.tsdb.retention.time

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.service

Controllare lo stato del servizio

sudo systemctl status prometheus.service

Se 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/config

Scaricare l'archivio

wget %LinkCopiatoPrecedentemente%

Scompattare l'archivio

tar xvfz prometheus-	← fare TAB per l'autocomplete

Cancellare l'archivio

rm prometheus-%NomeDelFileCompresso%.tar.gz

Rinominare la cartella estratta

mv prometheus-	prometheus
             ↑ fare TAB per l'autocomplete

Spostarsi nella cartella estratta ed appena rinominata

cd prometheus

Modificare il file di configurazione prometheus.yml aggiungendo i Target desiderati

nano prometheus.yml

Una 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

./prometheus

Se 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/prometheus

Creare un file che avvii Prometheus, dal File Editor di HomeAssistant, oppure dalla console col seguente comando

nano start.sh

Compilare il file .sh col seguente contenuto

#! /bin/sh
/config/prometheus/prometheus --config.file /config/prometheus/prometheus.yml

Impostare il flag "eseguibile" al file

chmod +x start.sh

modificare il file configuration.yaml di HomeAssistant ed aggiungere in fondo al file la seguente riga

shell_command: !include shell_commands.yaml

creare 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 Prometheus

Effettuare 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.service

Controllare che il servizio parta senza errori

sudo systemctl status prometheus.service

Per controllare il dettaglio di eventuali errori, leggere i log del journal

journalctl -xeu prometheus.service

Esempio 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']
❗
Se è stata impostata una porta differente dalla standard (9273) nell'output [[outputs.prometheus_client]] di Telegraf, indicarla nella riga targets

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.