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 piattaforma Prometheus cloud completamente gestita, progettata per garantire affidabilità e semplicità:
Alert Managerè integrato, così potete inviare avvisi direttamente aSlack,Mattermost,PagerDutye altre destinazioni popolari.- Un server email dedicato vi consente di inviare avvisi email illimitati senza configurazioni aggiuntive.
Blackboxè incluso, permettendovi di effettuare probe su protocolli comeHTTP,ICMP,TCPe altri per un monitoraggio completo.- Configurate rapidamente la vostra istanza tramite l’editor online del file di configurazione. Non è necessario gestire manualmente i file YAML.
- Applicate gli aggiornamenti con un solo clic. Stackhero si occupa dell’intero processo di upgrade, riducendo al minimo i tempi di inattività e l’intervento manuale.
- Alte prestazioni e sicurezza avanzata sono garantite grazie a un’infrastruttura privata e dedicata.
Sarete operativi in circa 5 minuti. Stackhero si occupa della configurazione, così potete concentrarvi sul monitoraggio invece che sulla manutenzione. Provate Prometheus cloud hosting su Stackhero per ottimizzare i vostri flussi di lavoro di monitoring e alerting.
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