Monitoraggio di PostgreSQL con Zabbix

Monitoraggio di PostgreSQL con Zabbix
Relazione di Darya Vilkova per Zabbix Meetup Online

Voglio presentarvi uno strumento di monitoraggio per PostgreSQL e il sistema operativo, sviluppato dalla nostra azienda utilizzando Zabbix.

Abbiamo scelto Zabbix come strumento di monitoraggio già da tempo, poiché è una piattaforma open source, supportata da una comunità attiva, molto popolare in Russia.

Abbiamo creato un agente attivo — Mamonsu, che offre un monitoraggio più flessibile di quanto consentito dagli strumenti standard dell'epoca, raccogliendo metriche e inviandole al Zabbix Server. Nella nostra azienda, Mamonsu è utilizzato durante l'audit.

Mamonsu

Mamonsu è un agente attivo (Zabbix Trapper) per il monitoraggio di PostgreSQL e del sistema operativo. Mamonsu (scritto in Python) consente di configurare i parametri di monitoraggio di PostgreSQL e del sistema operativo in cinque minuti.

Mamonsu dispone di strumenti aggiuntivi:

  • mamonsu tune — comando che modifica i parametri della configurazione nel file di configurazione di PostgreSQL per la macchina su cui è installato l'agente Mamonsu.
  • mamonsu report — comando che crea report sul sistema operativo e su PostgreSQL.

Mamonsu è installato sul server del DBMS, raccoglie informazioni, le compone in JSON e le invia per la visualizzazione al Zabbix Server, dove deve esserci un modello per le sue metriche.

Monitoraggio di PostgreSQL con Zabbix

Schema di funzionamento di Mamonsu

Funzionalità di Mamonsu

  • Efficiente lavorare con PostgreSQL. Una connessione costante a PostgreSQL è il principale vantaggio di Mamonsu. In questo modo, il numero massimo di connessioni è pari al numero massimo di database a cui si connette.
  • Scalabilità. Mamonsu è un agente completamente "plugin-based" e, grazie alla struttura fissa di ogni plugin e alla relativa semplicità di Python, è facile imparare a scrivere nuovi plugin o modificare quelli standard, cioè i parametri di raccolta delle metriche.
  • Ampia copertura delle metriche di monitoraggio per PostgreSQL comprese le metriche di estensioni specifiche.
  • Avvio rapido, disponibilità "out-of-the-box".
  • Esportazione di modelli e file di configurazione, così come il caricamento sul Zabbix Server.
  • Cross-platform, il che è importante per i nostri clienti che utilizzano diverse distribuzioni di Linux, comprese quelle nazionali.
  • Licenza BSD-clause.

Attualmente offriamo numerosi plugin e in ogni nuova versione cerchiamo di aggiungere qualcosa di nuovo.

  • 14 plugin per PostgreSQL,
  • 8 plugin per OS Linux,
  • 4 plugin per OS Windows.

Mamonsu raccoglie oltre 110 metriche di PostgreSQL e sistemi operativi:

  • 70 metriche di PostgreSQL,
  • 40 metriche di OS Linux,
  • 8 metriche di OS Windows.

Le metriche principali includono la disponibilità del DBMS, il numero di connessioni, la dimensione del database, i checkpoint, la velocità di lettura/scrittura, i blocchi, il numero di processi di autovacuum e la velocità di generazione WAL. L'elenco completo delle metriche disponibili, così come una descrizione dettagliata di tutti gli strumenti, è disponibile sul repository sito GitHub.

Monitoraggio di PostgreSQL con Zabbix

Elenco delle metriche disponibili sul sito GitHub

Avviare Mamonsu in 5 minuti

È possibile configurare il monitoraggio di PostgreSQL e del sistema operativo tramite Mamonsu in 5 minuti, eseguendo 5 semplici azioni.

  1. Installazione di Mamonsu. Mamonsu può essere compilato dai sorgenti o utilizzare i pacchetti disponibili.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Configurazione delle connessioni. È necessario specificare i parametri di connessione a PostgreSQL e Zabbix Server nel file agent.conf.

/etc/mamonsu/agent.conf

  1. Esportazione del modello in Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Aggiunta di un nodo di rete in Zabbix Server. Il modello esportato verrà automaticamente collegato al nuovo nodo di rete su Zabbix Server.

$ mamonsu zabbix host create mamonsu-demo

  1. Avvio.

$ service mamonsu start

Direzioni di sviluppo di Mamonsu

Nell'ambito dello sviluppo di Mamonsu, prevediamo di migliorare le metriche e creare nuovi plugin, ad esempio un plugin per il monitoraggio della dimensione di singole tabelle. Prevediamo anche di migliorare e sviluppare strumenti aggiuntivi, oltre a espandere le capacità di autosintonizzazione tramite il comando mamonsu tune.

Modulo di monitoraggio di PostgreSQL all'interno di Zabbix Agent 2

Per la connessione a PostgreSQL viene utilizzato un driver veloce e popolare pgx (driver e toolkit PG per Go).

Attualmente utilizziamo due interfacce: Exporter, che chiama il gestore per chiave, e Configurator Zabbix Agent 2, che legge e verifica i parametri di connessione con il server, definiti nel file di configurazione.

Abbiamo cercato di ottimizzare il funzionamento del DBMS, raggruppando le metriche e utilizzando un gestore per le metriche e i gruppi di metriche, nonché utilizzando gruppi di metriche in JSON come variabili dipendenti (dependency items) e rilevamento a basso livello (discovery rules).

Caratteristiche principali

  • mantenere una connessione permanente con PostgreSQL tra i controlli;
  • supporto per intervalli di sondaggio flessibili;
  • compatibilità con le versioni di PostgreSQL a partire dalla 10, e Zabbix Server a partire dalla versione 4.4;
  • la possibilità di connettere e monitorare più istanze PostgreSQL simultaneamente grazie al fatto che Zabbix Agent 2 consente di creare più sessioni.

Livelli dei parametri di connessione a PostgreSQL

Sono disponibili tre livelli di parametri di connessione a PostgreSQL, cioè attività e impostazioni:

  • Globale,
  • Sessioni,
  • Macro.

  1. I parametri Global vengono definiti a livello di agente, mentre i parametri Session e Macros definiscono i parametri di connessione al database.

  2. I parametri di connessione a PostgreSQL — Sessioni sono definiti nel file zabbix_agent2.conf.

Monitoraggio di PostgreSQL con Zabbix

I parametri di connessione a PostgreSQL — Sessioni

  • Dopo la parola chiave Sessioni viene indicato un nome univoco della sessione, che deve essere specificato nella chiave (nel template).
  • Parametri URI e UserName è obbligatorio per ogni sessione.
  • Se il nome del database non è specificato, viene utilizzato un nome di database predefinito comune per tutte le sessioni di PostgreSQL, che è anche definito nel file di configurazione.

  1. I parametri di connessione a PostgreSQL — Macros sono definiti nella chiave delle metriche nel template (in modo analogo a quanto utilizzato in Zabbix Agent 1), cioè vengono creati nel template e poi specificati come parametri nella chiave. In tal modo, la sequenza dei macro è fissa, cioè, ad esempio, URI è sempre specificata al primo posto.

Monitoraggio di PostgreSQL con Zabbix

I parametri di connessione a PostgreSQL — Macros

Il modulo di monitoraggio PostgreSQL include già oltre 95 metriche, che consentono di coprire un'ampia gamma di parametri di PostgreSQL, inclusi:

  • numero di connessioni,
  • dimensione dei database,
  • archiviazione dei file wal,
  • punti di controllo,
  • numero di tabelle "gonfiate",
  • stato della replica,
  • ritardo della replica.

Le metriche di PostgreSQL non sono informative senza i parametri del sistema operativo. Ma Zabbix Agent 2 è già in grado di raccogliere i parametri del sistema operativo, quindi per avere un quadro completo basta collegarsi ai nodi della rete i template necessari.

Gestore (handler)

Il gestore (handler) è l'unità principale del modulo, in cui viene eseguita la richiesta stessa e che consente di ottenere metriche.

Per ottenere una semplice metrica:

  1. Creiamo un file per ottenere una nuova metrica:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Colleghiamo il pacchetto e indichiamo una chiave univoca (chiavi) delle metriche:

Monitoraggio di PostgreSQL con Zabbix

  1. Creiamo un gestore (handler) con la richiesta, cioè inizializziamo la variabile in cui verrà memorizzato il risultato:

Monitoraggio di PostgreSQL con Zabbix

  1. Eseguiamo la richiesta:

Monitoraggio di PostgreSQL con Zabbix

È necessario controllare la richiesta per errori, dopo di che il risultato sarà acquisito dal processo Zabbix Agent 2.

  1. Registriamo la chiave della nuova metrica:

Monitoraggio di PostgreSQL con Zabbix

Dopo la registrazione della metrica, è possibile ricompilare l'agente con la nuova metrica.

Il modulo è disponibile a partire da Zabbix 5.0 sul sito https://www.zabbix.com/download. In questa versione, Zabbix i parametri sono definiti separatamente tramite host e port. Nella versione Zabbix 5.0.2, in uscita a breve, i parametri di connessione saranno raggruppati in un unico URI.

Grazie per l'attenzione!

Link utili

GitHub Mamonsu

Documentazione di Mamonsu

Zabbix Git

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster