Prometheus: Recupero delle metriche da Linux
Come recuperare le metriche di un server Linux in Prometheus utilizzando Node Exporter
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Prometheus cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:
Alert Managerincluso per inviare avvisi aSlack,Mattermost,PagerDuty, ecc.- Server email dedicato per inviare avvisi email illimitati.
Blackboxper sondareHTTP,ICMP,TCPe altro ancora.- Configurazione facile con editor di file di configurazione online.
- Aggiornamenti senza sforzo con un solo clic.
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
Risparmia tempo e semplifica la tua vita: bastano solo 5 minuti per provare la soluzione di Prometheus cloud hosting di Stackhero!
Cos'è Prometheus Node Exporter
Node Exporter è un software che si può installare sui kernel *NIX (Linux, OpenBSD, FreeBSD o Darwin) per esporre le metriche di sistema a Prometheus. È un componente essenziale per monitorare le prestazioni del server e la salute dell'infrastruttura.
Nella terminologia di Prometheus, Node Exporter agisce come un esportatore ed è aggiunto come target nella configurazione di Prometheus. Prometheus si connette a Node Exporter utilizzando la porta TCP 9100 tramite HTTP a intervalli regolari per recuperare le metriche.
In sintesi, Node Exporter consente di monitorare un sistema basato su Linux. Per i sistemi Windows, è possibile utilizzare il Windows Exporter.
Immagine generale di Stackhero per Prometheus
Installare Prometheus Node Exporter su un server Linux
È possibile scaricare Node Exporter dalla sua pagina di release su GitHub. È distribuito come binario che viene eseguito direttamente sul sistema. Poiché è progettato per funzionare continuamente, si consiglia di configurarlo per avviarsi automaticamente all'avvio del server.
Per impostazione predefinita, Node Exporter apre la porta 9100 al mondo senza autenticazione o crittografia. È altamente consigliato aggiungere sia l'autenticazione che la crittografia TLS (vedi sotto) e configurare un firewall per limitare l'accesso alla porta 9100 in modo che solo il server Prometheus o altri indirizzi IP autorizzati possano connettersi.
Come installare Prometheus Node Exporter su Ubuntu
È possibile seguire questi passaggi su Ubuntu:
# Vai su https://github.com/prometheus/node_exporter/releases per ottenere l'ultima versione.
node_exporter_version="1.2.0"
node_exporter_release="linux-amd64"
# Scarica e installa node_exporter
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v${node_exporter_version}/node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
tar xvfa node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
sudo mv node_exporter-${node_exporter_version}.${node_exporter_release}/node_exporter /usr/local/bin/
rm -rf node_exporter-${node_exporter_version}.${node_exporter_release} node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
# Crea un utente "node_exporter"
sudo useradd -rs /bin/false node_exporter
# Crea un servizio systemd per avviare node_exporter automaticamente all'avvio
sudo bash -c 'cat << EOF > /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.config=/etc/prometheus_node_exporter/configuration.yml
[Install]
WantedBy=multi-user.target
EOF'
# Crea una directory e un file di configurazione
sudo mkdir -p /etc/prometheus_node_exporter/
sudo touch /etc/prometheus_node_exporter/configuration.yml
sudo chmod 700 /etc/prometheus_node_exporter
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
# Avvia il demone node_exporter e verifica il suo stato
sudo systemctl start node_exporter
sudo systemctl status node_exporter
A questo punto, il binario node_exporter dovrebbe essere in esecuzione sul server. Per confermare che funzioni, è possibile connettersi e verificare se restituisce metriche:
curl http://localhost:9100/metrics
Node Exporter apre la porta 9100 alla rete pubblica. Ciò significa che chiunque può connettersi e recuperare le metriche del server! Al minimo, dovreste aggiungere autenticazione e crittografia TLS (vedi sotto) ed è fortemente consigliato configurare un firewall per bloccare le richieste alla porta 9100 da IP diversi dal server Prometheus.
Come installare Prometheus Node Exporter su Debian
Il processo di installazione di Node Exporter su Debian è identico al metodo Ubuntu descritto sopra. Seguite semplicemente le stesse istruzioni.
Come installare Prometheus Node Exporter su altri sistemi
I passaggi di installazione di Node Exporter dipendono dal sistema utilizzato. Sebbene non sia fornita documentazione dettagliata per ogni piattaforma, la procedura di base consiste nel scaricare il binario che corrisponde al sistema e configurarlo per avviarsi all'avvio.
Aggiungere autenticazione a Prometheus Node Exporter
Per impostazione predefinita, Node Exporter non esegue l'autenticazione, il che significa che chiunque può recuperare le metriche esposte. Per proteggere l'accesso, è possibile aggiungere un'autenticazione di base per un utente.
Generazione di una password casuale
Genera una password utilizzando i seguenti comandi:
password=`openssl rand -base64 32`
passwordHashed=`echo ${password} | htpasswd -inBC 10 "" | tr -d ':'`
echo "Password chiara da conservare per il server Prometheus: ${password}"
Se non si dispone del binario
htpasswd, è possibile installarlo su Debian/Ubuntu utilizzandoapt-get install --no-install-recommends apache2-utils.
Conservate la password chiara in sicurezza poiché sarà necessaria durante la configurazione di Prometheus.
Aggiunta dell'utente e riavvio di Node Exporter
Aggiungi le seguenti righe al file di configurazione per aggiungere un utente chiamato "prometheus" con l'hash della password generata:
sudo cat << EOF >> /etc/prometheus_node_exporter/configuration.yml
basic_auth_users:
prometheus: ${passwordHashed}
EOF
# Riavvia Node Exporter
sudo systemctl restart node_exporter
Infine, verifica che l'autenticazione funzioni correttamente:
- Eseguire
curl http://localhost:9100/metricsdovrebbe restituire "Unauthorized". - Eseguire
curl -u prometheus:${password} http://localhost:9100/metricsdovrebbe restituire l'elenco delle metriche.
Aggiungere crittografia TLS a Prometheus Node Exporter
Per impostazione predefinita, Node Exporter non cripta le comunicazioni. Ciò significa che le credenziali, inclusa la password definita in precedenza, sono trasmesse in chiaro. Per proteggere le comunicazioni, è possibile abilitare la crittografia TLS come segue.
Creazione di certificati TLS
Esegui i seguenti comandi per creare un certificato e una chiave TLS:
# Crea certificato TLS
cd /tmp
sudo openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 \
-keyout /etc/prometheus_node_exporter/tlsCertificate.key \
-out /etc/prometheus_node_exporter/tlsCertificate.crt \
-subj "/CN=`hostname`" \
-addext "subjectAltName = DNS:`hostname`"
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
Aggiornamento della configurazione
Aggiungi le seguenti righe al file di configurazione per aggiungere le impostazioni TLS e poi riavvia Node Exporter:
sudo cat << 'EOF' >> /etc/prometheus_node_exporter/configuration.yml
tls_server_config:
cert_file: /etc/prometheus_node_exporter/tlsCertificate.crt
key_file: /etc/prometheus_node_exporter/tlsCertificate.key
EOF
# Riavvia Prometheus Node Exporter
sudo systemctl restart node_exporter
È possibile verificare che TLS sia attivo connettendosi tramite HTTPS con il seguente comando:
curl -k -u prometheus:${password} https://localhost:9100/metrics
Si noti che questo metodo non utilizza un certificato CA, quindi è necessario passare l'opzione "-k" a cURL per bypassare la verifica del certificato.
Configurare il server Prometheus per recuperare i dati da Node Exporter
Dopo aver installato Node Exporter e averlo protetto, configurare il server Prometheus per recuperare le metriche a intervalli regolari.
Su Stackhero, selezionare il servizio Prometheus e andare all'URL "Prometheus configuration". Quindi aggiungere quanto segue alla sezione scrape_configs:
scrape_configs:
- job_name: "My servers pool"
static_configs:
- targets: [ "<yourLinuxServerDomain>:9100" ]
basic_auth:
username: "prometheus"
password: "<password>"
scheme: https
tls_config:
insecure_skip_verify: true
# Relabeling "instance" per rimuovere la parte ":9100"
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '([^:]+)(:[0-9]+)?'
replacement: '${1}'
Salvare il file e controllare i log di Prometheus per confermare che sia stato ricaricato con successo (è possibile visualizzare i log dal dashboard di Stackhero selezionando il servizio Prometheus e cliccando sulla scheda "Logs").
Infine, verificare che Prometheus stia recuperando le metriche accedendo all'interfaccia utente di Prometheus sul dashboard di Stackhero e navigando su Status > Targets. Il server Linux dovrebbe apparire nell'elenco dei target come UP.
Il target "myLinuxServer" è UP
Visualizzare i dati su Prometheus
Per visualizzare le metriche recuperate da Node Exporter, accedere a Prometheus tramite il dashboard di Stackhero utilizzando l'URL "Prometheus UI" o direttamente su https://<prometheusDomain>/.
Nel campo "Expression", digitare node_memory_MemTotal_bytes e premere invio. Se tutto è configurato correttamente, vedrete la RAM totale del server visualizzata in byte.
La quantità totale di RAM per questo server è di 4068794368 byte, ovvero 3.78GB
Configurare Grafana per visualizzare i dati di Prometheus recuperati da Node Exporter
Grafana può generare dashboard facilmente basati sui dati di Prometheus. Per istruzioni dettagliate sulla configurazione di Grafana per visualizzare i dati di Prometheus, si prega di fare riferimento alla documentazione di Grafana.
Esempio di dashboard generato da Grafana, basato sui dati di Prometheus Node Exporter