Come monitorare MongoDB con Grafana e Prometheus su Ubuntu 20.04

Introduzione al Monitoraggio di Database

La sorveglianza costante delle prestazioni di un database è fondamentale per assicurare la continuità operativa e l’efficienza ottimale di ogni applicazione. Tra le diverse soluzioni di monitoraggio disponibili, l’accoppiata Grafana e Prometheus spicca per la sua potenza e versatilità nel monitoraggio di sistemi complessi, come ad esempio MongoDB.

Questo tutorial si propone di guidarti passo dopo passo nella configurazione e nell’utilizzo di Grafana e Prometheus per il monitoraggio di MongoDB su un server Ubuntu 20.04. Esamineremo l’installazione, la configurazione e l’impiego di questi strumenti per la raccolta di metriche essenziali che permettono di valutare le prestazioni di MongoDB e di intercettare tempestivamente eventuali criticità.

Requisiti Preliminari

Prima di iniziare, assicurati di avere i seguenti prerequisiti:

  • Un server Ubuntu 20.04 aggiornato.
  • Accesso con privilegi di root o sudo.
  • La porta TCP 9100 aperta nel firewall.
  • MongoDB installato e funzionante.
  • Conoscenza di base di Grafana, Prometheus e MongoDB.

1. Installazione di Prometheus

Prometheus è un sistema di monitoraggio open source specializzato nella raccolta e nella memorizzazione di metriche.

1. Aggiunta del repository Prometheus:


wget -q https://prometheus.io/download/prometheus-2.43.4.linux-amd64.tar.gz
tar xvf prometheus-2.43.4.linux-amd64.tar.gz
sudo mv prometheus-2.43.4.linux-amd64 /opt/prometheus

2. Creazione dell’utente prometheus:


sudo useradd --no-create-home --shell /bin/false prometheus

3. Modifica dei permessi della directory Prometheus:


sudo chown prometheus:prometheus /opt/prometheus

4. Copia dei file di sistema Prometheus:


sudo cp /opt/prometheus/prometheus.yml /etc/prometheus/
sudo cp /opt/prometheus/rules/*.rules /etc/prometheus/rules/

5. Modifica del file di configurazione Prometheus:


sudo vim /etc/prometheus/prometheus.yml

Modifica l’indirizzo di ascolto e la porta:


global:
scrape_interval: 15s
evaluation_interval: 15s
listen_local: 0.0.0.0:9100

6. Avvio di Prometheus:


sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

2. Installazione di Grafana

Grafana è una piattaforma open source per la visualizzazione e l’analisi di dati di monitoraggio.

1. Aggiunta del repository Grafana:


wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

2. Aggiornamento del sistema e installazione di Grafana:


sudo apt update
sudo apt install grafana

3. Configurazione di Grafana:


sudo vim /etc/grafana/grafana.ini

Modifica la porta di ascolto:


[server]
protocol = https
port = 3000

4. Avvio di Grafana:


sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

3. Configurazione del monitoraggio di MongoDB

1. Installazione dell’esportatore MongoDB:


wget -q https://github.com/percona/mongodb_exporter/releases/download/v1.8.0/mongodb_exporter-1.8.0.linux-amd64.tar.gz
tar xvf mongodb_exporter-1.8.0.linux-amd64.tar.gz
sudo mv mongodb_exporter-1.8.0.linux-amd64 /opt/mongodb_exporter
sudo chown prometheus:prometheus /opt/mongodb_exporter

2. Creazione del file di configurazione:


sudo vim /etc/prometheus/mongodb_exporter.yml

Inserisci la seguente configurazione:


global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_timeout: 10s
scrape_configs:
- job_name: mongodb-exporter
scrape_interval: 15s
target_groups:
- targets: ['localhost:27017']

3. Avvio dell’esportatore MongoDB:


sudo /opt/mongodb_exporter/mongodb_exporter \
--web.listen-address=":9216" \
--config.file="/etc/prometheus/mongodb_exporter.yml"

4. Aggiunta della Dashboard di Monitoraggio

1. Accesso a Grafana:


https://localhost:3000

2. Creazione di una nuova dashboard:

  • Clicca su “Dashboards” nel menu a sinistra.
  • Clicca su “Nuova dashboard”.
  • Assegna un nome alla dashboard (es. “Monitoraggio MongoDB”).

3. Aggiunta del pannello delle metriche:

  • Clicca sul pulsante “Aggiungi pannello”.
  • Seleziona “Metriche”.
  • Modifica la query per indirizzare l’esportatore MongoDB:


mongodb_global_index_seconds

  • Clicca su “Esegui query”.

4. Aggiunta di altri pannelli (opzionale):

  • È possibile aggiungere altri pannelli per visualizzare metriche come:
    • mongodb_collection_storage_size_bytes
    • mongodb_connection_active
    • mongodb_documents

Conclusioni

Questa guida ha fornito un’analisi dettagliata su come configurare ed utilizzare Grafana e Prometheus per il monitoraggio di MongoDB su Ubuntu 20.04. Questa configurazione permette agli amministratori di sistema di accedere a metriche fondamentali per valutare le prestazioni di MongoDB, identificare prontamente eventuali problemi e assicurare la stabilità e l’integrità del database. Implementando questi strumenti di monitoraggio, è possibile gestire attivamente le prestazioni di MongoDB e ottimizzare il funzionamento generale del sistema.

Domande Frequenti

1. Quali dati posso monitorare con Grafana e Prometheus?

Con Grafana e Prometheus, puoi monitorare diverse metriche come:

  • Query al secondo
  • Connessioni al database
  • Dimensione delle collezioni
  • Utilizzo della memoria

2. Come posso impostare allarmi per i dati di monitoraggio?

Grafana ti consente di creare allarmi personalizzati basati sui dati monitorati. Puoi definire allarmi per essere avvisato in caso di superamento di determinate soglie o condizioni.

3. Quali sono i vantaggi dell’uso di Grafana e Prometheus per il monitoraggio di MongoDB?

Grafana e Prometheus offrono una visibilità completa sulle prestazioni di MongoDB, aiutando gli amministratori a identificare rapidamente i problemi, ottimizzare le prestazioni e garantire la disponibilità del servizio.

4. Come posso personalizzare le dashboard di Grafana?

Le dashboard di Grafana sono altamente personalizzabili. Puoi aggiungere pannelli, modificare colori, dimensioni dei grafici e personalizzare il layout in base alle tue necessità.

5. Quali sono le alternative a Grafana e Prometheus?

Tra le alternative a Grafana e Prometheus troviamo:

  • Zabbix
  • New Relic
  • AppDynamics

6. Posso monitorare altri database oltre a MongoDB?

Sì, Grafana e Prometheus sono adatti al monitoraggio di vari database come MySQL, PostgreSQL e Oracle.

7. Come posso accedere ai dati di monitoraggio tramite API?

Sia Grafana che Prometheus mettono a disposizione API che permettono di accedere ai dati di monitoraggio in modo programmatico.

8. Quali sono le migliori pratiche per il monitoraggio di MongoDB?

Le migliori pratiche includono:

  • Monitorare regolarmente le metriche chiave
  • Impostare avvisi per rilevare rapidamente anomalie
  • Utilizzare più dashboard per una visione completa delle prestazioni
  • Analizzare i dati per identificare tendenze e migliorare l’efficienza