Ricerca nel sito web

Come installare Prometheus System Monitoring Tool su Debian 11


Su questa pagina

  1. Prerequisiti
  2. Installa Prometeo
  3. Crea un file di servizio Systemd per Prometheus
  4. Configura Nginx come proxy inverso per Prometheus
  5. Accedi alla dashboard di Prometheus
  6. Installa e configura node_exporter
  7. Aggiungi node_exporter al server Prometheus
  8. Verifica Prometheus e node_exporter
  9. Conclusione

Prometheus è un'applicazione di monitoraggio gratuita, open source e basata sul Web che raccoglie le metriche dai tuoi servizi e le archivia in un database di serie temporali. La configurazione predefinita di Prometheus esporta solo le metriche relative a se stessa. Ma puoi estenderlo installando esportatori e altri programmi. Supporta un modello di dati multidimensionale, più modalità di rappresentazione grafica e dashboard.

In questo post, ti mostreremo come installare il monitoraggio Prometheus su Debian 11.

Prerequisiti

  • Un server che esegue Debian 11.
  • Sul server è configurata una password di root.

Installa Prometeo

Prima di iniziare, si consiglia di creare un utente e un gruppo dedicati per Prometheus. Puoi crearlo usando il seguente comando:

groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus

Successivamente, scarica l'ultima versione di Prometheus eseguendo il seguente comando:

curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -

Una volta scaricato Prometheus, puoi vedere il file scaricato usando il seguente comando:

ls -l

Dovresti vedere il seguente output:

-rw-r--r-- 1 root root 72638078 Oct  5 16:46 prometheus-2.30.3.linux-amd64.tar.gz

Quindi, estrai il file scaricato utilizzando il seguente comando:

tar -xvf prometheus*.tar.gz

Successivamente, modifica la directory nella directory estratta con il seguente comando:

cd prometheus-2.30.3.linux-amd64

Successivamente, crea alcune directory richieste utilizzando il seguente comando:

mkdir /etc/prometheus
mkdir /var/lib/prometheus

Successivamente, copia i file di configurazione e gli strumenti richiesti con i seguenti comandi:

mv prometheus.yml /etc/prometheus/prometheus.yml
mv consoles/ console_libraries/ /etc/prometheus/
mv prometheus promtool /usr/local/bin/

Al termine, puoi procedere al passaggio successivo.

Crea un file di servizio Systemd per Prometheus

Successivamente, dovrai creare un file di servizio systemd per gestire il servizio Prometheus. Puoi crearlo eseguendo il seguente comando:

nano /etc/systemd/system/prometheus.service

Aggiungi le seguenti righe:

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries \
  --web.listen-address=0.0.0.0:9090 \
  --web.external-url=

SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target

Salva e chiudi il file, quindi imposta la proprietà e l'autorizzazione corrette per la directory di configurazione di Prometheus:

chown -R prometheus:prometheus /etc/prometheus/
chmod -R 775 /etc/prometheus/
chown -R prometheus:prometheus /var/lib/prometheus/

Successivamente, ricarica il demone systemd per applicare le modifiche:

systemctl daemon-reload

Successivamente, avvia il servizio Prometheus e abilitalo per l'avvio al riavvio del sistema utilizzando il seguente comando:

systemctl start prometheus
systemctl enable prometheus

Puoi controllare lo stato del Prometheus con il seguente comando:

systemctl status prometheus

Otterrai il seguente output:

? prometheus.service - Prometheus
     Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-16 14:06:39 UTC; 4s ago
       Docs: https://prometheus.io/docs/introduction/overview/
   Main PID: 18415 (prometheus)
      Tasks: 5 (limit: 2341)
     Memory: 19.6M
        CPU: 79ms
     CGroup: /system.slice/prometheus.service
             ??18415 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.cons>

Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.172Z caller=head.go:513 component=tsdb msg="On-disk memory mappa>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.172Z caller=head.go:519 component=tsdb msg="Replaying WAL, this >
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.174Z caller=head.go:590 component=tsdb msg="WAL segment loaded" >
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.174Z caller=head.go:596 component=tsdb msg="WAL replay completed>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.177Z caller=main.go:849 fs_type=EXT4_SUPER_MAGIC
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.177Z caller=main.go:852 msg="TSDB started"
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.178Z caller=main.go:979 msg="Loading configuration file" filenam>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.178Z caller=main.go:1016 msg="Completed loading of configuration>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.179Z caller=main.go:794 msg="Server is ready to receive web requ>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.179Z caller=tls_config.go:191 component=web msg="TLS is disabled>

Per impostazione predefinita, Prometheus è in ascolto sulla porta 9090. Puoi verificarlo utilizzando il seguente comando:

ss -antpl | grep 9090

Dovresti vedere il seguente output:

LISTEN 0      4096               *:9090            *:*    users:(("prometheus",pid=18415,fd=7))

Una volta terminato, puoi procedere al passaggio successivo.

Configura Nginx come proxy inverso per Prometheus

Successivamente, si consiglia di installare e configurare Nginx come proxy inverso per Prometheus. Innanzitutto, installa il pacchetto del server Web Nginx utilizzando il seguente comando:

apt-get install nginx -y

Una volta installato Nginx, crea un file di configurazione dell'host virtuale Nginx con il seguente comando:

nano /etc/nginx/conf.d/prometheus.conf

Aggiungi le seguenti righe:

server {
    listen 80;
    server_name prometheus.example.com;
    location / {
        proxy_pass http://localhost:9090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

}

Salva e chiudi il file, quindi verifica Nginx per eventuali errori di sintassi con il seguente comando:

nginx -t

Se tutto va bene, otterrai il seguente output:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Infine, riavvia il servizio Nginx per applicare le modifiche:

systemctl restart nginx

Puoi anche verificare lo stato del servizio Nginx usando il seguente comando:

systemctl status nginx

Dovresti ottenere il seguente output:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-16 14:08:15 UTC; 2s ago
       Docs: man:nginx(8)
    Process: 18792 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 18793 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 18794 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 2.5M
        CPU: 35ms
     CGroup: /system.slice/nginx.service
             ??18794 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??18795 nginx: worker process

Oct 16 14:08:15 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 16 14:08:15 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Oct 16 14:08:15 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

A questo punto, Nginx è installato e configurato per servire Prometheus. Ora puoi procedere al passaggio successivo.

Accedi alla dashboard di Prometheus

Ora apri il tuo browser web e accedi alla dashboard di Prometheus utilizzando l'URL http://prometheus.example.com. Dovresti vedere la seguente pagina:

Installa e configura node_exporter

node_exporter è un esportatore che monitorerà e otterrà la metrica del server Prometheus. Innanzitutto, scarica l'ultima versione di node_exporter utilizzando il seguente comando:

wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz

Una volta completato il download, estrai il file scaricato con il seguente comando:

tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz

Successivamente, sposta la directory estratta nella directory /etc/prometheus/:

mv node_exporter-1.2.2.linux-amd64 /etc/prometheus/node_exporter

Quindi, imposta la proprietà corretta con il seguente comando:

chown -R prometheus:prometheus /etc/prometheus/node_exporter

Successivamente, crea un file di servizio systemd per gestire il servizio node_exporter:

nano /etc/systemd/system/node_exporter.service

Aggiungi le seguenti righe:

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/etc/prometheus/node_exporter/node_exporter

[Install]
WantedBy=default.target

Salva e chiudi il file, quindi ricarica il demone systemd per applicare le modifiche:

systemctl daemon-reload

Successivamente, avvia il servizio node_exporter e abilitalo per l'avvio al riavvio del sistema:

systemctl start node_exporter
systemctl enable node_exporter

Puoi controllare lo stato di node_exporter con il seguente comando:

systemctl status node_exporter

Otterrai il seguente output:

? node_exporter.service - Node Exporter
     Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-10-17 05:38:20 UTC; 4s ago
   Main PID: 513 (node_exporter)
      Tasks: 4 (limit: 2341)
     Memory: 4.7M
        CPU: 11ms
     CGroup: /system.slice/node_exporter.service
             ??513 /etc/prometheus/node_exporter/node_exporter

Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=thermal_zone
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=time
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=timex
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=udp_queues
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=uname
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=vmstat
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=xfs
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=zfs
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.383Z caller=node_exporter.go:199 msg="Listening on" address=:91>
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.383Z caller=tls_config.go:191 msg="TLS is disabled." http2=false

Per impostazione predefinita, node_exporter è in ascolto sulla porta 9100. Puoi verificarlo con il seguente comando:

ss -antpl | grep 9100

Dovresti ottenere il seguente output:

LISTEN 0      4096               *:9100            *:*    users:(("node_exporter",pid=513,fd=3))

Aggiungi node_exporter al server Prometheus

Successivamente, dovrai aggiungere node_exporter al file di configurazione di Prometheus. Puoi farlo modificando il file di configurazione predefinito di Prometheus:

nano /etc/prometheus/prometheus.yml

Sotto la riga scrape_config, aggiungi new job_name node_exporter aggiungendo le seguenti righe.

  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9100']

Salva e chiudi il file, quindi riavvia il servizio Prometheus per applicare le modifiche:

systemctl restart prometheus

Verifica Prometheus e node_exporter

Ora vai alla dashboard di Prometheus e fai clic su Status => Target. Dovresti vedere il tuo node_exporter nella seguente schermata:

Ora, torna alla home page di Prometheus e digita node_memory_MemAvailable_bytes nel campo della query e fai clic sul pulsante Execute. Otterrai il seguente risultato:

Puoi anche ottenere i dati delle metriche node_exporter utilizzando l'URL http://your-server-ip:9100/metrics come mostrato di seguito:

Conclusione

Congratulazioni! hai installato con successo Prometheus con node_exporter su Debian 11. Sentiti libero di chiedermi se hai qualche domanda. Per ulteriori informazioni, consulta la documentazione prometheus ufficiale.