Ricerca nel sito web

Come monitorare PostgreSQL con Prometheus e Grafana su Ubuntu 22.04


In questo tutorial configurerai le piattaforme di monitoraggio Prometheus e Grafana per monitorare il server di database PostgreSQL. Installerai e configurerai postgres_exporter per raccogliere le matrici del server PostgreSQL ed esporle al server Prometheus. Alla fine di questo tutorial, configurerai il monitoraggio del dashboard per il server PostgreSQL tramite la piattaforma di visualizzazione dei dati Grafana.

Prerequisiti

Per completare questo tutorial, avrai bisogno dei seguenti requisiti:

  • Un server con Prometheus e Grafana installati sopra.
  • Un server di destinazione con un server di database PostgreSQL installato.
  • Un utente non root con privilegi di amministratore sudo/root.

Di seguito sono riportate alcune guide per l'installazione di ciascun componente.

Come installare la piattaforma di monitoraggio Prometheus e Grafana sul server Ubuntu 22.04.
Come installare il server di database PostgreSQL sul server Ubuntu 22.04.

Ora cominciamo quando tutti i prerequisiti saranno completati e a posto.

Configurazione del server PostgreSQL

Il server PostgreSQL fornisce due diversi metodi di crittografia della password: md5 e scram-sha-256. Entrambe le crittografie delle password possono essere configurate tramite il file di configurazione PostgreSQL 'postgresql.conf'.

In questo passaggio configurerai PostgreSQL per utilizzare la crittografia della password 'scram-sha-256'.

Questo esempio utilizza il server PostgreSQL v14 installato su un sistema Ubuntu, quindi i file di configurazione PostgreSQL sono archiviati nella directory "/etc/postgresql/14/main".

Passare alla directory di lavoro nella directory '/etc/postgresql/14/main' e aprire il file di configurazione 'postgresql.conf' tramite il comando dell'editor nano.

cd /etc/postgresql/14/main
sudo nano postgresql.conf

Decommenta l'opzione 'password_encryption' e modifica il valore in 'scram-sha-256'.

password_encryption = scram-sha-256     # scram-sha-256 or md5

Salva il file e esci dall'editor quando hai finito.

Successivamente, apri il file di configurazione 'pg_hba.conf' tramite il comando dell'editor nano riportato di seguito. Il file 'pg_hba.conf' è la configurazione in cui vengono definiti i metodi di autenticazione della password per host o indirizzi IP.

sudo nano pg_hba.conf

Modifica i metodi di autenticazione predefiniti per l'host '127.0.0.1/32' e '::1/128' in 'scram-sha-256 '. In questo modo, il metodo di autenticazione 'scram-sha-256' verrà utilizzato per ogni connessione client al server PostgreSQL '127.0.0.1'.

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Salva ed esci dall'editor quando hai finito.

Infine, esegui l'utilità di comando systemctl seguente per riavviare il servizio PostgreSQL e applicare le modifiche.

sudo systemctl restart postgresql

Con il server PostgreSQL configurato, installerai successivamente "postgres_exporter" che ti consente di raccogliere le metriche del server PostgreSQL.

Download di postgres_exporter

Il 'postgres_exporter' è un esportatore prometheus per le metriche del server PostgreSQL. Supporta più versioni di PostgreSQL come 9.4, 9.5, 9.6, 10, 11, 12, 13 e 14. 'postgres_exporter' è un'applicazione a file binario singolo, è scritta principalmente in Go.

In questi passaggi scaricherai "postgres_exporter" sul server PostgreSQL.

Per iniziare, esegui il comando seguente per creare un nuovo utente di sistema 'postgres_exporter' sul tuo server PostgreSQL.

sudo useradd -M -r -s /sbin/nologin postgres_exporter

Successivamente, scarica il file binario "postgres_exporter" tramite il comando wget riportato di seguito. Assicurati di controllare la pagina GitHub 'postgres_exporter' per ottenere l'ultima versione di 'postgres_exporter'. Al momento in cui scrivo, l'ultima versione di postgres_exporter è v0.12.

wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.12.0-rc.0/postgres_exporter-0.12.0-rc.0.linux-amd64.tar.gz

Successivamente, esegui il comando tar seguente per estrarre il pacchetto postgres_exporter. Quindi, sposta la directory estratta di postgres_exporter in '/opt/postgres_exporter'.

tar xvf postgres_exporter*.tar.gz
mv postgres_exporter*/ /opt/postgres_exporter

Infine, verifica l'elenco di file e directory nella directory "postgres_exporter". Dovresti vedere che il binario 'postgres_exporter' è disponibile.

ls /opt/postgres_exporter

Dopo aver scaricato il file binario 'postgres_exporter', configurerai quindi 'postgres_exporter' per raccogliere le metriche del server PostgreSQL.

Configurazione di postgres_exporter

In questo passaggio, configurerai "postgres_exporter" per raccogliere le metriche PostgreSQL e ciò può essere fatto definendo l'utente e la password PostgreSQL. Inoltre imposterai e configurerai il servizio systemd per "postgres_exporter".

Con "postgres_exporter", puoi esporre le metriche per tutti i database disponibili sul server PostgreSQL oppure puoi esporre database specifici che desideri monitorare. Puoi anche utilizzare la modalità SSL sicura o la modalità non SSL.

Sposta la directory di lavoro corrente in '/opt/postgres_exporter'. tramite il comando cd di seguito.

cd /opt/postgres_exporter

Ora crea un nuovo file '.env' utilizzando il comando dell'editor nano riportato di seguito.

nano .env

Aggiungi le seguenti righe al file. Inoltre, assicurati di modificare i dettagli dell'utente, della password e dell'host PostgreSQL. Con questo file ".env", potrai analizzare e raccogliere le metriche PostgreSQL da tutti i database disponibili. Puoi anche raccogliere parametri da uno specifico database PostgreSQL e modificare il seguente file di configurazione.

# Format
#DATA_SOURCE_NAME=postgresql://username:password@localhost:5432/postgres?sslmode=disable
# Monitor all databases via postgres_exporter
DATA_SOURCE_NAME="postgresql://postgres:strongpostgrespassword@localhost:5432/?sslmode=disable"
# Monitor specific databases on the PostgreSQL server
# DATA_SOURCE_NAME="postgresql://username:password@localhost:5432/database-name?sslmode=disable"

Salva il file e esci dall'editor quando hai finito.

Successivamente, esegui il comando chown seguente per modificare la proprietà della directory '/opt/postgres_exporter' nell'utente 'postgres_exporter'.

sudo chown -R postgres_exporter: /opt/postgres_exporter

Successivamente, esegui il comando seguente per creare un nuovo file di servizio systemd '/etc/systemd/system/postgres_exporter.service'. Con questo, puoi gestire facilmente 'postgres_exporter' tramite l'utilità di comando systemctl.

sudo tee /etc/systemd/system/postgres_exporter.service<<EOF
[Unit]
Description=Prometheus exporter for Postgresql
Wants=network-online.target
After=network-online.target
[Service]
User=postgres_exporter
Group=postgres_exporter
WorkingDirectory=/opt/postgres_exporter
EnvironmentFile=/opt/postgres_exporter/.env
ExecStart=/opt/postgres_exporter/postgres_exporter --web.listen-address=:9187 --web.telemetry-path=/metrics
Restart=always
[Install]
WantedBy=multi-user.target
EOF

Ora esegui il comando systemctl seguente per ricaricare il gestore systemd e applicare le modifiche.

sudo systemctl daemon-reload

Dopo aver ricaricato il gestore systemd, avviare e abilitare il servizio 'postgres_exporter' tramite l'utilità di comando systemctl di seguito.

sudo systemctl start postgres_exporter
sudo systemctl enable postgres_exporter

Il "postgres_exporter" dovrebbe essere in esecuzione e recuperare le metriche dal server PostgreSQL. Inoltre, dovrebbe essere abilitato e verrà eseguito automaticamente all'avvio.

Infine, esegui il comando seguente per verificare lo stato del servizio 'postgres_exporter'. Inoltre, assicurati che 'postgres_exporter' sia in esecuzione e abilitato.

sudo systemctl status postgres_exporter

Riceverai un output simile a questo: il servizio 'postgres_exporter' è in esecuzione ed è abilitato.

A questo punto, "postgres_exporter" è in esecuzione sulla porta TCP predefinita "9187" sul server PostgreSQL. Ciò espone le metriche PostgreSQL al server Prometheus, ma prima dovrai anche impostare il firewalld sul server PostgreSQL.

Configurazione del firewall

In questo passaggio, configurerai il firewall per aprire la porta predefinita di 'postgres_exporter' - TCP 9187. Successivamente, verificherai che le metriche "postgres_exporter" siano accessibili tramite il browser web.

Per i sistemi Ubuntu che utilizzavano UFW come firewall, esegui il comando ufw riportato di seguito per aggiungere la porta 9187 al firewall ufw. Quindi, ricarica il firewall per applicare le modifiche.

sudo ufw allow 9187/tcp
sudo ufw reload

Ora puoi verificare l'elenco delle porte su UFW tramite il comando ufw riportato di seguito.

sudo ufw status

Riceverai un output come il seguente: la porta postgres_exporter 9187 viene aggiunta al firewalld.

Per le distribuzioni basate su RHEL che utilizzano firewalld come firewall predefinito, esegui il comando firewall-cmd riportato di seguito per aggiungere la porta 9187 al firewalld. Quindi, ricarica il firewalld per applicare le nuove modifiche.

sudo firewall-cmd --add-port=9187/tcp --permanent
sudo firewall-cmd --reload

Successivamente, esegui il comando seguente per verificare che la porta postgres_exporter 9187 sia aggiunta.

sudo firewall-cmd --list-ports

Ora dovresti vedere che la porta 9187 è stata aggiunta al firewall.

Infine, apri il tuo browser web e visita l'indirizzo IP del tuo server PostgreSQL seguito dalla porta 'postgres_exporter' 9187 (ovvero: http://192.168.5.21:9187/metrics) .

Dovresti vedere i dettagli delle metriche del server PostgreSQL raccolte da 'postgres_exporter'.

Con il firewall configurato e 'postgres_exporter' è accessibile, aggiungerai successivamente 'postgres_exporter alla destinazione 'scrape_configs' di Prometheus.

Aggiunta postgres_exporter a Prometheus

Torna al server Prometheus, quindi apri il file di configurazione di Prometheus '/etc/prometheus/prometheus.yml' utilizzando il comando dell'editor nano riportato di seguito.

sudo nano /etc/prometheus/prometheus.yml

Nella sezione "scrape_configs", aggiungi le seguenti righe al file. In questo esempio, imposterai un nuovo lavoro per raccogliere le metriche del server PostgreSQL con il nome "postgres_exporter" e il server di destinazione di PostgreSQL è "192.168.5.21:9187 " ', ovvero le metriche esposte dal servizio 'postgres_exporter'.

  # PostgreSQL Monitoring with postgres_exporter
  - job_name: 'postgres_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.5.21:9187']

Salva il file e esci dall'editor quando hai finito.

Ora esegui il comando systemctl seguente per riavviare il servizio Prometheus e applicare le modifiche.

sudo systemctl restart prometheus

Con il nuovo scrape_configs creato e il server Prometheus riavviato, verificherai quindi "postgres_exporter" tramite la dashboard web di Prometheus.

apri il tuo browser web e visita l'indirizzo IP del server Prometheus seguito dalla porta predefinita 9090 (ovvero: https://192.168.5.100:9090).

Accedi al server Prometheus con il tuo nome utente e password, quando hai abilitato basic_auth.

Nella dashboard di Prometheus, fai clic sull'icona "browser" per ottenere l'elenco delle query di Prometheus. Quindi, inserisci "pg" per filtrare le query che iniziano con "pg". Riceverai quindi l'output come nello screenshot seguente.

Successivamente, fai clic sul menu Stato e seleziona Destinazioni e dovresti vedere che il nome del lavoro "postgres_exporter" è attivo e in esecuzione sul server PostgreSQL con l'indirizzo IP "192.168.5.21:9187'.

Ora che "postgres_exporter" è stato aggiunto al server Prometheus e la metrica del server PostgreSQL è ora disponibile su Prometheus.

Nei passaggi successivi, configurerai la dashboard Grafana per il monitoraggio del server PostgreSQL.

Configurazione del monitoraggio della dashboard tramite Grafana

Apri il nome del tuo dominio Grafana o l'indirizzo IP del server, quindi accedi alla dashboard Grafana utilizzando il tuo nome utente e password.

Dopo aver effettuato l'accesso, fai clic sul menu Dashboard e seleziona Importa.

Inserisci l'ID della dashboard PostgreSQL "xxx" e fai clic su Carica. L'ID dashboard PostgreSQL '9628' è disponibile nel repository Grafana Dashboard.

Successivamente, inserisci la nuova dashboard e seleziona "Prometheus" come origine dati. Quindi fare clic su Importa per applicare.

In questo esempio creerai una nuova dashboard con il nome "Monitoraggio PostgreSQL".

Dopo aver importato la dashboard Grafana, controlla la tua nuova dashboard e dovresti vedere il monitoraggio della dashboard PostgreSQL come di seguito.

Conclusione

Congratulazioni! Ora hai terminato il monitoraggio del server PostgreSQL con Prometheus e Grafana tramite 'postgres_exporter'. Hai anche creato una dashboard specifica per il monitoraggio del tuo server PostgreSQL. Con questo, puoi ottenere dettagli approfonditi su cosa sta succedendo nel tuo PostgreSQL.

Ora puoi controllare la pagina GitHub della community di Prometheus per ottenere dettagli sugli esportatori disponibili su Prometheus. Ciò ti consente di monitorare le tue applicazioni tramite Grafana e Prometheus Monitoring Stack.

Articoli correlati: