Monitoraggio di PostgreSQL tramite Zabbix

Monitoraggio di PostgreSQL tramite Zabbix
Rapporto di Daria Vilkova per Zabbix Meetup Online

Voglio presentarti lo strumento di monitoraggio di PostgreSQL e del sistema operativo, che è stato sviluppato dalla nostra azienda utilizzando Zabbix.

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

Abbiamo creato un agente attivo - Mamonsu, che forniva un monitoraggio più flessibile rispetto a quanto consentito dagli strumenti standard in quel momento, e garantiva la raccolta di metriche e il loro invio a Zabbix Server. Nella nostra azienda, Mamonsu viene utilizzato nell'audit.

Mamonsu

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

Mamonsu ha strumenti aggiuntivi:

  • mamonsu tune è un comando che modifica le impostazioni nel file di configurazione di PostgreSQL per la macchina su cui è installato l'agente Mamonsu.
  • mamonsu report è un comando che genera risposte sul sistema operativo e PostgreSQL.

Mamonsu è installato sul server DBMS, raccoglie informazioni, le compone in JSON, che le invia a Zabbix Server per la visualizzazione, dove dovrebbe esserci un modello per le sue metriche.

Monitoraggio di PostgreSQL tramite Zabbix

Schema di lavoro Mamonsu

Caratteristiche Mamonsu

  • Lavoro efficiente con PostgreSQL. Una connessione persistente a PostgreSQL è il principale vantaggio di Mamonsu. In questo caso il numero massimo di connessioni è pari al numero massimo di database a cui si connette.
  • Espandibilità. Mamonsu è un agente completamente "plug-in" e, grazie alla struttura fissa di ciascun plug-in e alla relativa semplicità di Python, si può facilmente imparare a scrivere nuovi plug-in standard o modificarli, ovvero i parametri di raccolta delle metriche.
  • Ampia copertura delle metriche di monitoraggio per PotgreSQL incluse le metriche specifiche dell'estensione.
  • avvio rapido, disponibilità fuori dagli schemi.
  • Caricamento di modelli e file di configurazione, così come il caricamento su Zabbix Server.
  • Cross-platform, che è importante per i nostri clienti che utilizzano varie distribuzioni Linux, comprese quelle domestiche.
  • Licenza con clausola BSD.

Al momento offriamo molti plugin e in ogni versione successiva cerchiamo di aggiungere qualcosa di nuovo.

  • 14 plugin per PostgreSQL,
  • 8 plugin per sistema operativo Linux,
  • 4 plugin per sistema operativo Windows.

Mamonsu raccoglie oltre 110 metriche PostgreSQL e del sistema operativo:

  • 70 metriche PostgreSQL,
  • 40 metriche del sistema operativo Linux,
  • 8 OS Windows metriche.

Le metriche chiave includono la disponibilità del DBMS, il numero di connessioni, le dimensioni del database, i checkpoint, la velocità di lettura/scrittura, i blocchi, il numero di processi di autovacuum e la velocità di generazione di WAL. Un elenco completo delle metriche disponibili, nonché una descrizione dettagliata di tutti gli strumenti, è disponibile in repository sul sito GitHub.

Monitoraggio di PostgreSQL tramite Zabbix

Elenco delle metriche disponibili su GitHub

Esegui Mamonsu in 5 minuti

Per configurare il monitoraggio di PostgreSQL e del sistema operativo utilizzando Mamonsu, puoi farlo in 5 minuti seguendo 5 semplici passaggi.

  1. Installazione di Mamonsu. Mamonsu può essere compilato dal sorgente o utilizzare i pacchetti disponibili.

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

build && python setup.py install

  1. Configurazione della connessione. È necessario impostare i parametri di connessione per PostgreSQL e Zabbix Server nel file agent.conf.

/etc/mamonsu/agent.conf

  1. Esporta il modello su Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Aggiunta di un host a Zabbix Server. Il modello esportato verrà automaticamente connesso al nuovo host su Zabbix Server.

$ mamonsu zabbix host create mamonsu-demo

  1. Запуск.

$ service mamonsu start

Direzioni per lo sviluppo di Mamonsu

Nell'ambito dello sviluppo di Mamonsu, prevediamo di perfezionare le metriche e creare nuovi plug-in, come un plug-in per il monitoraggio delle dimensioni delle singole tabelle. Abbiamo anche in programma di migliorare e creare strumenti aggiuntivi, nonché espandere le capacità di ottimizzazione automatica tramite il comando melodia mamonsu.

Modulo di monitoraggio PostgreSQL come parte di Zabbix Agent 2

Un driver veloce e popolare viene utilizzato per connettersi a PostgreSQL pgx (Driver PG e toolkit per Go).

Finora abbiamo utilizzato due interfacce: Exporter, che chiama il gestore per chiave, e Configurator Zabbix Agent 2, che legge e controlla i parametri di connessione con il server specificato nel file di configurazione.

Abbiamo cercato di ottimizzare il lavoro del DBMS raggruppando le metriche e utilizzando un gestore (gestore) per metriche e gruppi di metriche, nonché utilizzando gruppi di metriche in JSON come variabili dipendenti (elementi di dipendenza) e rilevamento di basso livello (regole di rilevamento ).

Caratteristiche principali

  • mantenere una connessione persistente a PostgreSQL tra i controlli;
  • supporto per intervalli di polling 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 contemporaneamente grazie al fatto che Zabbix Agent 2 consente di creare più sessioni.

Livelli dei parametri di connessione PostgreSQL

In totale, ci sono tre livelli di parametri di connessione PostgreSQL, ovvero attività e impostazioni:

  • Globale,
  • Sessioni,
  • Macro.

  1. I parametri Globali sono impostati a livello di agente, i parametri Sessione e Macro definiscono i parametri di connessione al database.

  2. Parametri di connessione a PostgreSQL: le sessioni sono impostate nel file zabbix_agent2.conf.

Monitoraggio di PostgreSQL tramite Zabbix

Opzioni di connessione PostgreSQL - Sessioni

  • Dopo la parola chiave Sessioni viene specificato un nome di sessione univoco, che deve essere specificato nella chiave (modello).
  • Parametri URI и UserName richiesto per ogni sessione.
  • Se il nome base non è specificato, viene utilizzato il nome base comune predefinito per tutte le sessioni PostgreSQL, anch'esso impostato nel file di configurazione.

  1. Parametri di connessione a PostgreSQL: le macro sono impostate nella chiave metrica nel modello (simile al metodo utilizzato in Zabbix Agent 1), ovvero vengono create nel modello e quindi specificate come parametri nella chiave. In questo caso, la sequenza delle macro è fissa, cioè, ad esempio, URI sempre elencato per primo.

Monitoraggio di PostgreSQL tramite Zabbix

Parametri di connessione PostgreSQL - Macro

Il modulo di monitoraggio PostgreSQL include già più di 95 metriche che consentono di coprire una gamma abbastanza ampia di parametri PostgreSQL, tra cui:

  • numero di connessioni
  • dimensione del database,
  • archiviazione file wal,
  • posti di blocco,
  • il numero di tavoli "gonfi",
  • stato di replica,
  • ritardo di replica.

Le metriche PostgreSQL non sono informative senza i parametri del sistema operativo. Ma Zabbix Agent 2 sa già come raccogliere i parametri del sistema operativo, quindi per avere un quadro completo, colleghiamo semplicemente i modelli necessari all'host.

Gestore

Il gestore è l'unità principale del modulo in cui viene eseguita la richiesta stessa e che consente di ricevere le metriche.

Per ottenere una metrica semplice:

  1. Crea un file per ottenere una nuova metrica:

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

  1. Colleghiamo il pacchetto e specifichiamo la chiave univoca (chiavi) delle metriche:

Monitoraggio di PostgreSQL tramite Zabbix

  1. Creiamo un gestore (gestore) con una richiesta, ovvero iniziamo una variabile che conterrà il risultato:

Monitoraggio di PostgreSQL tramite Zabbix

  1. Eseguiamo la richiesta:

Monitoraggio di PostgreSQL tramite Zabbix

È necessario controllare la richiesta di errori, dopodiché il risultato verrà raccolto dal processo Zabbix Agent 2.

  1. Registra la nuova chiave metrica:

Monitoraggio di PostgreSQL tramite Zabbix

Dopo aver registrato la metrica, è possibile ricostruire l'agente con la nuova metrica.

Il modulo è disponibile a partire da Zabbix 5.0 sul sito web https://www.zabbix.com/download. In questa versione di Zabbix, i parametri vengono impostati separatamente tramite host e porta. In Zabbix 5.0.2, che verrà rilasciato a breve, i parametri di connessione saranno impacchettati in un singolo URI.

Grazie!

Link utili

GitHubMamonsu

Documentazione Mamonsu

ZabbixGit

Fonte: habr.com

Aggiungi un commento