Come parte del loro sistema di monitoraggio aziendale, le organizzazioni fanno affidamento su avvisi e notifiche come prima linea di difesa per ottenere un'elevata disponibilità e, di conseguenza, ridurre i costi di interruzione.
Avvisi e notifiche a volte vengono utilizzati in modo intercambiabile, ad esempio possiamo dire "Ho ricevuto un avviso di sistema di carico elevato" e la sostituzione di "avviso" con "notifica" non cambierà il significato del messaggio. Tuttavia, nel mondo dei sistemi di gestione è importante notare la differenza:gli avvisi sono eventi generati a seguito di un guasto del sistema e le notifiche vengono utilizzate per fornire informazioni sullo stato del sistema, compreso il guasto. A titolo di esempio, il blog di Diversinines Introducing the ClusterControl Alerting Integrations discute una delle funzionalità di integrazione di ClusterControl, il sistema di notifica in grado di fornire avvisi tramite e-mail, servizi di chat e sistemi di gestione degli incidenti. Vedi anche PostgreSQL Wiki — Avvisi e notifiche di stato.
Per monitorare accuratamente l'attività del database PostgreSQL, un sistema di gestione si basa sulle metriche dell'attività del database, sulle funzionalità personalizzate o sugli advisor di monitoraggio e sul monitoraggio dei file di registro.
In questo articolo esamino gli strumenti elencati nel wiki di PostgreSQL, le sezioni della GUI di monitoraggio e PostgreSQL, saltando quelli che non vengono gestiti attivamente o non forniscono avvisi e notifiche né all'interno del prodotto né con un account di prova gratuito. Pur non essendo una recensione esaustiva, ogni strumento è stato installato e configurato fino al punto in cui ho potuto comprenderne le capacità di avviso e notifica.
Nagios
Nagios è un popolare sistema di monitoraggio on-premise per uso generico che offre un'ampia gamma di plugin. Sebbene Nagios Core sia open source, la soluzione consigliata per il monitoraggio di PostgreSQL è Nagios XI.
Le impostazioni di notifica sono per utente e per modificarle l'amministratore deve "accedere come" l'utente — Nagios usa il termine mascherato come . Una volta nella pagina di impostazione dell'account, l'utente può scegliere di abilitare o disabilitare i metodi di notifica:

Per configurare i tipi di notifiche, vai alla pagina "Metodi di notifica":

Consulta la Guida per l'utente di Nagios XI per maggiori dettagli.
Per configurare gli avvisi, accedi come amministratore e seleziona la procedura guidata di configurazione del database:

Una volta configurati, gli avvisi possono essere visualizzati selezionando una qualsiasi delle visualizzazioni predefinite, dashboard, oppure possiamo configurarne uno personalizzato. Per impostazione predefinita, Nagios XI fornisce i seguenti monitor PostgreSQL:

Tieni presente che per impostazione predefinita Nagios XI non fornisce alcuna metrica basata su PostgreSQL Statistics Collector, ma ogni metrica deve essere definita utilizzando la procedura guidata di configurazione "Query Postgres":

Cane dati
Datadog è uno strumento di monitoraggio SaaS generico caratterizzato da un insieme molto ampio di integrazioni con una varietà di servizi. Per avviare il monitoraggio, seleziona l'integrazione PostgreSQL, quindi scegli le integrazioni delle notifiche come e-mail, chat (ad es. Slack) o sistemi di risposta agli incidenti come PagerDuty:

Per ricevere le notifiche tramite i canali di integrazione configurati in precedenza, è necessario creare almeno un monitor Datadog, nel caso di monitoraggio di PostgreSQL un tipo di monitor di “integrazione”:

Il primo passaggio nella configurazione del monitor è selezionare un tipo di avviso:

Quindi, configura una o più metriche:

Configura le condizioni per l'attivazione dell'avviso:

Le notifiche possono essere personalizzate utilizzando le variabili del modello:

Infine, fornisci un elenco di destinatari a cui ricevere le notifiche:

Gli eventi su cui Datadog può monitorare sono elencati nella sezione "Metriche" dell'integrazione di PostgreSQL e sono basati sulle viste predefinite di PostgreSQL Statistics Collector:

Al fine di monitorare gli eventi non previsti con l'integrazione di default, Datadog offre ai clienti la possibilità di creare metriche personalizzate limitate al piano Datadog.
Okmetro
Okmeter fa anche parte della famiglia di monitoraggio per uso generale SaaS e, proprio come altri strumenti SaaS, richiede un agente sull'host monitorato. Una volta installato l'agente, viene abilitata una serie di trigger di eventi predefiniti, incluso un controllo della connessione PostgreSQL:

Ottenere più metriche PostgreSQL richiede l'aggiunta di un "server" PostgreSQL:

Per monitorare le statistiche di PostgreSQL, in modo simile a Nagios e Datadog, dobbiamo configurare metriche personalizzate come spiegato nella documentazione di Okmeter — Invio di metriche personalizzate. Oppure, modifica la metrica "Server PostgreSQL" sopra per includerla per le visualizzazioni nella funzione "okmeter.pg_stats".
La pagina della documentazione relativa alle statistiche sulle query di Okmeter spiega come abilitare il tracciamento delle statistiche di esecuzione per le istruzioni SQL. Si noti che ci sono alcune limitazioni nell'utilizzo delle viste "pg_stat_statements", ad es. numero massimo di istruzioni distinte che possono essere registrate da un modulo:per i dettagli, vedere la documentazione di PostgreSQL su pg_stat_statements.
La pagina dei contatti di notifica è dove vengono configurate le notifiche per ciascun utente:

I messaggi di notifica possono essere ulteriormente personalizzati utilizzando i modelli:

Circonus
Circonus, un altro prodotto di monitoraggio generale SaaS, presenta un "controllo" PostgreSQL che può essere abilitato individualmente o aggiunto come parte dell'installazione in un unico passaggio:

Secondo la documentazione di Circonus PostgreSQL, il controllo viene eseguito da una posizione remota tramite istruzioni SQL dirette. Dopo aver configurato l'host PostgreSQL per accettare connessioni da un broker Circonus, la procedura guidata presenterà un elenco di metriche disponibili:

Per configurare gli avvisi, a ciascuna metrica è associato un insieme di regole e un elenco di contatti da notificare.

Gli avvisi sono classificati in base ai livelli di gravità:

I canali di notifica includono SMS, OpsGenie, Slack, VictorOps e PagerDuty (nessuna e-mail). Lo screenshot seguente mostra un'integrazione Slack:

Per configurare le notifiche, a ogni metrica nel controllo devono essere assegnate regole e contatti. Tieni presente che i contatti devono essere creati prima di modificare la metrica:

Nuova reliquia
New Relic è un altro sistema di monitoraggio generale SaaS. Quando si tratta di PostgreSQL, ci sono (al momento della stesura di questo articolo) tre plugin disponibili. Il più recente è il plugin Blue Medora:

Una volta che il plug-in funziona, diventa visibile nella pagina dei plug-in e siamo pronti per configurare gli avvisi:

New Relic utilizza il concetto di criteri di avviso per raggruppare gli avvisi in incidenti. Prima di configurare una policy dobbiamo impostare i canali di notifica. Immediatamente, New Relic si integra con tutti i più diffusi sistemi di risposta agli incidenti, oltre che con le e-mail:

Si noti che l'integrazione deve essere prima abilitata nell'applicazione di notifica. Ad esempio selezionando Slack dall'elenco dei tipi di canale:

Quindi crea una "politica di avviso":

Una politica di avviso richiede una "condizione di avviso". La prossima serie di schermate mostra i passaggi per ottenere proprio questo:



Infine seleziona la scheda dei canali di notifica per modificare l'impostazione predefinita:

Facoltativamente, aggiungi la condizione di avviso a New Relic Insights (richiede un abbonamento aggiuntivo):

Gestione aziendale di Postgres
PEM o Postgres Enterprise Manager è uno strumento per la gestione, l'ottimizzazione e il monitoraggio di PostgreSQL.
Viene fornito con un set molto ricco di metriche predefinite:

Per modificare gli avvisi predefiniti o crearne di personalizzati, utilizza i modelli di avviso:

PEM si basa su e-mail e SNMP per le notifiche, quindi può integrarsi facilmente con sistemi di monitoraggio come Nagios, ma non ci sono integrazioni con i popolari sistemi di gestione degli incidenti (PagerDuty, VictorOps, OpsGenie) o servizi di chat (Slack) che si trovano in gli altri prodotti.

pgwatch2
pgwatch2 è un altro strumento di monitoraggio incentrato su PostgreSQL, una soluzione self-hosted.
Per definire gli avvisi, dobbiamo prima creare una dashboard personalizzata e definire la metrica:

Quindi, configura l'avviso:

Una volta configurati, gli avvisi verranno visualizzati nella pagina Elenco avvisi:

pgwatch2 si integra con tutti i più diffusi sistemi di notifica. Ecco un esempio di aggiunta di un canale Slack:

Per visualizzare i canali di notifica configurati nel sistema, apri la pagina “Canali di notifica”:

Ulteriori metriche possono essere aggiunte come documentato nella sezione Caratteristiche di pgwatch2.
Controllo cluster
ClusterControl è un sistema di gestione locale orientato al database con supporto per PostgreSQL, MySQL, MariaDB e MongoDB.
Il primo passaggio è l'aggiunta di un'integrazione di notifica. Maggiori informazioni sulle integrazioni disponibili sono disponibili in Introduzione alle integrazioni di avviso di ClusterControl:

Ai fini di questa demo, ho configurato Slack:

ClusterControl offre anche la possibilità di notificare via e-mail:

Una volta attivate le notifiche, crea avvisi personalizzati per attivare avvisi in base a criteri specifici:

Conclusione
L'articolo non intendeva essere un'analisi approfondita delle funzionalità di ciascuno strumento, piuttosto ho tentato di delineare quelle che consideravo le caratteristiche importanti relative agli avvisi e alle notifiche per PostgreSQL, in particolare.
Una delle lezioni apprese è che il processo di selezione dovrebbe prendere in considerazione diversi fattori:
- on premise o SaaS
- controllo tramite agente o remoto
- integrazione con sistemi di gestione degli incidenti e servizi di chat
- disponibilità di metriche monitorate, pronte all'uso e plug-in
- possibilità di aggiungere metriche personalizzate
- funzioni di gestione degli avvisi (ad es. raggruppamento)
- complessità vs granularità nell'interfaccia utente
- funzionalità aggiuntive (gestione, ottimizzazione, API, ecc.)
Inoltre, se una soluzione non soddisfa tutti i requisiti aziendali e/o tecnici, è sempre possibile utilizzare una combinazione di servizi.