This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introduzione
In Checkmk, la notifica si intende l'informazione attiva degli utenti in caso di problemi o altri eventi rilevati durante il monitoraggio. Questo avviene solitamente tramite e-mail. Tuttavia, esistono anche molti altri metodi, come l'invio di SMS o l'inoltro a un sistema di ticket. Checkmk offre un'interfaccia semplice per scrivere script per i tuoi metodi di notifica personalizzati.
Il punto di partenza per qualsiasi notifica a un utente è un evento segnalato dal nucleo di monitoraggio. In questo articolo lo chiamiamo evento di monitoraggio per evitare confusione con gli eventi elaborati dalla Console degli Eventi. Un evento di monitoraggio è sempre correlato a un particolare host o servizio. I possibili tipi di eventi di monitoraggio sono:
Un cambiamento di stato, ad es. OK → WARN
Il passaggio da uno stato stabile a uno irregolare (irregolare) dell'
.L'inizio o la fine di un tempo di manutenzione programmato.
Il riconoscimento di un problema da parte di un utente.
Una notifica attivata manualmente da un comando
.L'esecuzione di un gestore di avvisi di
.Un evento trasmesso per la notifica dalla Console degli Eventi di
.
Checkmk utilizza un sistema rule-based che ti permette di creare notifiche utente da questi eventi di monitoraggio — e questo può essere utilizzato anche per implementare requisiti molto esigenti. Una semplice notifica via e-mail — che in molti casi è del tutto soddisfacente — è comunque veloce da configurare.
Questo articolo tratta principalmente le nozioni di base e le domande generali sulle notifiche.
Se invece desideri iniziare direttamente con l’implementazione: Checkmk distingue generalmente tra due modi di definire le notifiche. Da un lato, le regole per le notifiche sono definite a livello globale. Queste regole si applicano a tutti gli utenti e gruppi interessati a seconda dell’evento. La creazione di queste notifiche è descritta in Configurazione delle notifiche tramite regole.
Allo stesso tempo, ogni utente ha la possibilità di influenzare le impostazioni delle notifiche individualmente. Ad esempio, un contatto può disattivare l'invio delle notifiche alla propria casella di posta mentre è in vacanza. Puoi leggere come queste impostazioni personali possono essere implementate nell'articolo Regole di notifica personali.
2. Avvisare o non avvisare (ancora)?
Le notifiche sono fondamentalmente facoltative e Checkmk può essere utilizzato in modo efficiente anche senza di esse. Alcune grandi organizzazioni dispongono di una sorta di pannello di controllo in cui un team operativo tiene costantemente sotto osservazione l'interfaccia di Checkmk, rendendo così superflue ulteriori notifiche. Se il tuo ambiente Checkmk è ancora in fase di costruzione, tieni presente che le notifiche saranno utili ai tuoi colleghi solo quando non ci sono — o ce ne sono solo occasionalmente — falsi allarmi (falsi positivi). Prima di tutto bisogna prendere confidenza con i valori di soglia e tutte le altre impostazioni, in modo che tutti gli stati siano OK / UP — o, in altre parole: che tutto sia “verde”.
L'accettazione del nuovo monitoraggio svanirà rapidamente se ogni giorno la casella di posta in arrivo viene inondata da centinaia di e-mail inutili.
La seguente procedura si è dimostrata efficace per regolare le notifiche:
Passo 1: Regola il monitoraggio, da un lato risolvendo eventuali problemi reali appena individuati da Checkmk e, dall’altro, eliminando i falsi allarmi. Continua così finché tutto non è “normalmente” OK / UP. Consulta la Guida per principianti per alcuni consigli su come ridurre i tipici falsi allarmi.
Passo 2: Successivamente, imposta le notifiche in modo che siano attive solo per te. Riduci il “rumore” causato da problemi sporadici e di breve durata. Per farlo, regola ulteriormente i valori di soglia, usa il monitoraggio basato sulla previsione se necessario, aumenta il numero di tentativi di controllo o prova le notifiche ritardate. E naturalmente, se la causa sono problemi reali, cerca di tenerli sotto controllo.
Passo 3: Una volta che la tua casella di posta è abbastanza tranquilla, attiva le notifiche per i tuoi colleghi. Crea gruppi di contatto efficienti in modo che ogni contatto riceva solo le notifiche che lo riguardano.
Queste procedure porteranno a un sistema che fornisce informazioni rilevanti che aiutano a ridurre le interruzioni.
3. Quando vengono generate le notifiche e come gestirle
3.1. Introduzione
Gran parte della complessità del sistema di notifiche di Checkmk è dovuta alle sue numerose opzioni di configurazione, grazie alle quali è possibile evitare notifiche non importanti. Nella maggior parte dei casi si tratterà di situazioni in cui le notifiche vengono già ritardate o soppresse quando si verificano. Inoltre, il nucleo di monitoraggio dispone di un'intelligenza integrata che sopprime determinate notifiche per impostazione predefinita. In questo capitolo vorremmo affrontare tutti questi aspetti.
3.2. Tempo di manutenzione programmata
Quando un host o un servizio è in un periodo di tempo di manutenzione programmata, le notifiche dell'oggetto verranno soppresse. Questo è – insieme a una corretta valutazione delle disponibilità – il motivo più importante per l'effettiva previsione dei tempi di manutenzione programmati nel monitoraggio. A questo proposito sono rilevanti i seguenti dettagli:
Se un host viene contrassegnato come in tempo di manutenzione programmata, anche tutti i suoi servizi entreranno automaticamente in tale stato, senza che sia necessario inserire un’entrata esplicita per ciascuno di essi.
Se un oggetto entra in uno stato di problema durante un tempo di manutenzione programmata, quando la manutenzione termina come previsto, questo problema verrà notificato retroattivamente esattamente alla fine del tempo di manutenzione.
L'inizio e la fine di un periodo di tempo di manutenzione programmato costituiscono di per sé un evento di monitoraggio che verrà notificato.
3.3. Periodi di notifica
Puoi definire un periodo di notifica per ogni host e servizio durante la configurazione. Si tratta di un periodo di tempo che definisce il periodo entro il quale la notifica deve essere limitata.
La configurazione viene eseguita utilizzando l'Monitoring Configuration > Notification period for hosts, o rispettivamente il set di regole Notification period for services, che puoi trovare rapidamente tramite la ricerca nel menu di configurazione.
Un oggetto che non si trova attualmente in un periodo di notifica verrà contrassegnato con un simbolo di pausa grigia
.
Gli eventi di monitoraggio relativi a un oggetto che non si trova attualmente nel suo periodo di notifica non verranno segnalati. Tali notifiche verranno "riemesse" quando il periodo di notifica sarà nuovamente attivo, se l'host/servizio si trova ancora in uno stato di problema. Verrà segnalato solo lo stato più recente, anche se durante il periodo al di fuori del periodo di notifica si sono verificati più cambiamenti nello stato dell'oggetto.
Per inciso, nelle regole di notifica è anche possibile limitare una notifica a un periodo di tempo specifico. In questo modo puoi limitare ulteriormente i periodi di tempo. Tuttavia, le notifiche che sono state scartate a causa di una regola con condizioni temporali non verranno automaticamente ripetute in seguito!
3.4. Lo stato dell'host su cui è in esecuzione un servizio
Se un host ha subito un guasto completo, o è almeno inaccessibile al monitoraggio, ovviamente i suoi servizi non possono più essere monitorati.
Gli active checks registreranno quindi di norma "CRIT" o "SCONOSCIUTO", poiché questi tenteranno attivamente di accedere all'host e incontreranno così un errore.
In una situazione del genere tutti gli altri controlli — quindi la grande maggioranza — saranno omessi e rimarranno quindi nel loro vecchio stato.
Questi saranno contrassegnati con il simbolo dell'ora "stale"
.
Sarebbe ovviamente molto fastidioso se tutti i controlli attivi in tale stato segnalassero i propri problemi. Ad esempio, se un server web non è raggiungibile – e questo è già stato segnalato – non sarebbe molto utile generare anche un'e-mail per ciascuno dei suoi servizi HTTP dipendenti.
Per ridurre al minimo queste situazioni, come principio di base il nucleo di monitoraggio genera notifiche per i servizi solo se l’host si trova nello stato “UP”. Questo è anche il motivo per cui l’accessibilità dell’host viene verificata separatamente. Se non diversamente configurato, questa verifica verrà effettuata con uno Smart Ping o un ping.
Se utilizzi la Comunità Checkmk (o una delle edizioni commerciali con un core Nagios), in casi isolati può comunque accadere che un problema dell'host
generi una notifica per un servizio attivo.
Il motivo è che Nagios considera i risultati dei controlli dell'host ancora validi per un breve periodo nel futuro.
Se sono trascorsi anche solo pochi secondi tra l'ultimo ping riuscito al server e l'active check successivo, Nagios può ancora valutare l'host come "UP" anche se in realtà è "DOWN".
Al contrario, il Checkmk Micro Core (CMC) manterrà la notifica del servizio in modalità "standby" fino a quando lo stato dello host non sarà stato verificato, riducendo così in modo affidabile le notifiche indesiderate.
3.5. Host padre
Immagina che un importante router di rete di una sede aziendale con centinaia di host si guasti. Tutti i suoi host non saranno più disponibili per il monitoraggio e diventeranno DOWN. Verranno quindi attivate centinaia di notifiche. Non va bene.
Per evitare questi problemi, il router può essere definito come host padre per i suoi host. Se ci sono host ridondanti, si possono definire anche più host padre. Non appena tutti gli host padre entrano in uno stato "DOWN", gli host che non sono più raggiungibili verranno contrassegnati con lo stato "UNREACH" e le loro notifiche verranno soppresse. Il problema con il router stesso verrà ovviamente comunque segnalato.
A proposito, il CMC funziona internamente in modo leggermente diverso rispetto a Nagios.
Per ridurre i falsi allarmi, ma continuare a elaborare le notifiche genuine, il CMC presta molta attenzione agli orari esatti dei controlli degli host in questione.
Se un controllo dell'host fallisce, il core aspetterà il risultato del controllo sull'host padre prima di generare una notifica.
Questa attesa è asincrona e non ha alcun effetto sul monitoraggio generale.
Le notifiche provenienti dagli host possono quindi subire ritardi minimi.
4. Gestione delle notifiche
4.1. Il principio
Checkmk è configurato "di default" in modo tale che, quando si verifica un evento di monitoraggio, venga inviata un'e-mail di notifica a tutti i contatti relativi all'host o al servizio interessato. Questo è sicuramente sensato all'inizio, ma in pratica sorgono molte altre esigenze, ad esempio:
La soppressione di notifiche specifiche e meno utili.
L'«abbonamento» alle notifiche da servizi per i quali non sei un contatto.
Una notifica può essere inviata via e-mail, SMS o cercapersone, a seconda dell'ora del giorno.
L'escalation dei problemi quando non si riceve conferma entro un certo limite di tempo.
L'opzione di non inviare notifiche per gli stati "WARN" o "SCONOSCIUTO".
e molto altro ancora…
Checkmk ti offre la massima flessibilità nell'implementazione di tali requisiti tramite il suo meccanismo rule-based.
Nella configurazione delle notifiche, gestisci la catena di regole di notifica, che determina chi deve essere avvisato e in che modo. Quando si verifica un evento di monitoraggio, questa catena di regole viene eseguita dall'alto verso il basso. Ogni regola ha una condizione che decide se la regola si applica effettivamente alla situazione in questione.
Se la condizione è soddisfatta, la regola determina due cose:
Una selezione di contatti (Chi deve essere avvisato?).
Un metodo di notifica (Come avvisare?), ad esempio e-mail HTML, e, facoltativamente, parametri aggiuntivi per il metodo scelto.
Importante: a differenza delle regole per host e servizi, qui la valutazione continua anche dopo che la regola applicabile è stata soddisfatta. Le regole successive possono aggiungere ulteriori notifiche. Le notifiche generate dalle regole precedenti possono anche essere eliminate.
Il risultato finale della valutazione della regola sarà una tabella con una struttura simile a questa:
| Chi (contatto) | Come (metodo) | Parametri per il metodo |
|---|---|---|
Harry Hirsch |
|
|
Bruno Weizenkeim |
|
|
Bruno Weizenkeim |
SMS |
Ora, per ogni voce di questa tabella verrà richiamato lo script di notifica che esegue effettivamente la notifica per l'utente appropriata al metodo.
4.2. Disabilitazione delle notifiche
Disattivazione tramite regole
Con i set di regole Enable/disable notifications for hosts o, rispettivamente, Enable/disable notifications for services puoi specificare host e servizi per i quali in genere non devono essere emesse notifiche. Come menzionato sopra, il core sopprime quindi le notifiche. Una regola di notifica successiva che si "iscrive" alle notifiche per tali servizi sarà inefficace, poiché le notifiche semplicemente non vengono generate.
Disattivazione tramite comandi
È anche possibile disabilitare temporaneamente le notifiche per singoli host o servizi tramite un comando.
Tuttavia, ciò richiede che al ruolo utente sia assegnato il permesso Commands on host and services > Enable/disable notifications. Per impostazione predefinita, questo non è il caso per nessun ruolo.
Con il permesso assegnato, puoi disabilitare (e successivamente abilitare) le notifiche da host e servizi con il comando Commands > Notifications:

Tali host o servizi saranno quindi contrassegnati con il simbolo "
".
Poiché i comandi, a differenza delle regole, non richiedono né permessi di configurazione né l'attivazione delle modifiche, possono rappresentare una soluzione rapida per reagire tempestivamente a una situazione.
Importante: a differenza dei tempi di manutenzione programmati in
, le notifiche disabilitate non influiscono sulle valutazioni di disponibilità.
Se durante un'interruzione non pianificata vuoi davvero solo disabilitare le notifiche senza alterare le statistiche di disponibilità,
non dovresti registrare una tempistica di manutenzione programmata!
Disattivazione globale
Nello snap-in di Master control, nella barra laterale, troverai un switch master per l'Notificationse:

Questo switch è incredibilmente utile se hai in programma di apportare modifiche di sistema più consistenti, durante le quali un errore potrebbe, date le circostanze, costringere molti servizi in uno stato di "CRIT". Puoi usare il switch per evitare di infastidire i tuoi colleghi con una valanga di e-mail inutili. Ricordati di riattivare le notifiche quando hai finito.
Ogni istanza in un monitoraggio distribuito dispone di uno di questi switch. Disattivando le notifiche dell’istanza centrale, le istanze remote possono comunque attivare le notifiche, anche se queste sono indirizzate e inviate dall’istanza centrale.
Importante: le notifiche che sarebbero state attivate durante il periodo in cui le notifiche erano disabilitate non verranno ripetute in seguito quando vengono riattivate.
4.3. Ritardare le notifiche
Potresti avere servizi che occasionalmente entrano in uno stato di problema per brevi periodi, ma le interruzioni sono molto brevi e non sono critiche per te. In questi casi le notifiche sono molto fastidiose, ma possono essere facilmente soppresse. I set di regole Delay host notifications e Delay service notifications servono proprio a questo.
Qui specifichi un tempo in minuti — e la notifica verrà ritardata fino allo scadere di questo tempo. Se lo stato OK / UP si verifica di nuovo prima di allora, non verrà attivata alcuna notifica. Naturalmente questo significa anche che la notifica di un problema reale verrà ritardata.
Ovviamente, ancora meglio che ritardare le notifiche sarebbe eliminare la causa effettiva dei problemi sporadici, ma questa è ovviamente un'altra storia...
4.4. Tentativi di check ripetuti
Un altro metodo molto simile per ritardare le notifiche consiste nel consentire più tentativi di controllo quando un servizio entra in uno stato di problema. Ciò si ottiene con l'Maximum number of check attempts for hosts, o rispettivamente, con il set di regole Maximum number of check attempts for service.
Se qui imposti un valore di 3, ad esempio, un check con un risultato CRIT inizialmente non attiverà una notifica.
Questo viene definito stato soft CRIT.
Lo stato hard rimane OK.
Solo se tre tentativi consecutivi restituiscono uno stato non OK, il servizio switcherà allo stato hard e verrà attivata una notifica.
A differenza delle notifiche ritardate, qui hai la possibilità di definire delle visualizzazioni in modo che tali problemi non vengano visualizzati. È anche possibile creare un'aggregazione BI in modo che vengano inclusi solo gli hard states, non quelli soft.
4.5. Host e servizi irregolari
Quando un host o un servizio cambia frequentemente stato in un breve lasso di tempo, viene considerato irregolare. Si tratta di uno stato effettivo. Il principio qui è la riduzione delle notifiche eccessive durante le fasi in cui un servizio non funziona (del tutto) in modo stabile. Tali fasi possono anche essere valutate in modo specifico nelle statistiche di disponibilità.
Gli oggetti irregolari sono contrassegnati dal simbolo
.
Finché un oggetto è irregolare, i successivi cambiamenti di stato non attivano ulteriori notifiche.
Una notifica verrà tuttavia attivata ogni volta che l'oggetto entra o esce dallo stato irregolare.
Il riconoscimento dell’irregolarità da parte del sistema può essere influenzato nei seguenti modi:
L'Master control dispone di un switch principale per controllare il rilevamento dell'irregolarità (Flap Detection).
Puoi escludere oggetti dal rilevamento utilizzando l'Enable/disable flapping detection for hosts, o rispettivamente il set di regole Enable/disable flapping detection for services.
Nelle edizioni commerciali, utilizzando Global settings > Monitoring core > Tuning of flap detectionpuoi definire i parametri per il rilevamento dell'irregolarità e impostarli in modo che siano più o meno sensibili:

Visualizza l'aiuto contestuale di Help > Show inline help per i dettagli sui valori personalizzabili.
5. Il percorso di una notifica dall'inizio alla fine
5.1. La cronologia delle notifiche
Per iniziare, ti mostreremo come effettuare la visualizzazione della cronologia delle notifiche a livello di host e di livello del servizio in Checkmk, in modo da poter seguire il processo di notifica.
Un evento di monitoraggio che induce Checkmk a generare una notifica è, ad esempio, il cambiamento di stato di un servizio. Puoi attivare manualmente questo cambiamento di stato con il comando Fake check results a scopo di test.
Per un test di notifica, puoi spostare un servizio dallo stato "OK" a "CRIT" in questo modo. Se ora visualizzi le notifiche per questo servizio nella pagina dei dettagli del servizio con Service > Service notifications , vedrai le seguenti voci:

La voce più recente si trova in cima all'elenco. Tuttavia, la prima voce si trova in fondo, quindi esaminiamo le singole voci dal basso verso l'alto:
Il nucleo di monitoraggio registra l'evento di monitoraggio del cambiamento di stato. Il simbolo
nella prima colonna indica lo stato (CRIT nell'esempio).Il nucleo di monitoraggio genera una notifica grezza di
.
Questa viene passata dal core al modulo di notifica, che esegue la valutazione delle regole di notifica applicabili.La valutazione delle regole porta a una notifica utente di
all'utente hhcon il metodomail.Il risultato della notifica
mostra che l'e-mail è stata consegnata con successo al server SMTP per la consegna.
Per aiutarti a capire bene il contesto di tutte le varie opzioni di impostazione e le condizioni di base, e per permetterti di capire bene il problema quando una notifica appare o non appare come previsto, qui descriveremo tutti i dettagli del processo di notifica, compresi tutti i componenti coinvolti.
La cronologia delle notifiche che abbiamo mostrato sopra per un servizio può essere visualizzata anche per un host: nella pagina dei dettagli dell'host nel menu Host dell'host stesso (voce di menu Notifications of host) e anche per l'host con tutti i suoi servizi (Notifications of host & services). |
5.2. I componenti
I seguenti componenti sono coinvolti nel sistema di notifica di Checkmk:
| Componente | Funzione | File di log |
|---|---|---|
Nagios |
Il nucleo di monitoraggio della Comunità Checkmk, che rileva gli eventi di monitoraggio e genera notifiche grezze. |
|
Il nucleo di monitoraggio nelle edizioni commerciali che svolge la stessa funzione di Nagios nella Comunità Checkmk. |
|
|
Modulo di notifica |
Elabora le regole di notifica per creare una notifica utente a partire da una notifica grezza. Richiama gli script di notifica. |
|
Spooler di notifica (solo edizioni commerciali) |
Consegna asincrona delle notifiche e notifiche centralizzate in ambienti distribuiti. |
|
Script di notifica |
Per ogni metodo di notifica c'è uno script che gestisce l'invio vero e proprio (ad es. genera e invia un'e-mail in formato HTML). |
|
5.3. Il nucleo di monitoraggio
Notifiche grezze
Come descritto sopra, ogni notifica inizia con un evento di monitoraggio nel nucleo di monitoraggio.
Se tutte le condizioni sono state soddisfatte e si può dare il "via libera" per una notifica, il nucleo genera una notifica grezza indirizzata al contatto di assistenza interno check-mk-notify.
La notifica grezza non contiene ancora i dettagli dei contatti effettivi o del metodo di notifica.
La notifica grezza appare così nella cronologia delle notifiche del servizio:

Il simbolo è un altoparlante grigio chiaro di

check-mk-notifyviene indicato come contatto.check-mk-notifyviene indicato come comando di notifica.
La notifica grezza passa quindi al modulo di notifica Checkmk, che elabora le regole di notifica.
Questo modulo viene richiamato come programma esterno da Nagios (cmk --notify).
Il CMC mantiene il modulo in standby come processo ausiliario permanente (notification helper), riducendo così la creazione di processi e risparmiando tempo macchina.
Diagnosi degli errori nel nucleo di monitoraggio di Nagios
Il core di Nagios utilizzato in
Comunità Checkmk registra tutti gli eventi di monitoraggio nel file ~/var/log/nagios.log.
Questo file è anche la posizione in cui viene memorizzata la cronologia delle notifiche, che può essere consultata anche tramite la
GUI se, ad esempio, desideri visualizzare le notifiche di un host o di un servizio.
Più interessanti, tuttavia, sono i messaggi che trovi nel file ~/var/nagios/debug.log, che ricevi se imposti la variabile debug_level
su 32 in etc/nagios/nagios.d/logging.cfg.
Dopo un riavvio del core …
… troverai informazioni utili sui motivi per cui le notifiche sono state create o soppresse:
[1592405483.152931] [032.0] [pid=18122] ** Service Notification Attempt ** Host: 'localhost', Service: 'backup4', Type: 0, Options: 0, Current State: 2, Last Notification: Wed Jun 17 16:24:06 2020
[1592405483.152941] [032.0] [pid=18122] Notification viability test passed.
[1592405485.285985] [032.0] [pid=18122] 1 contacts were notified. Next possible notification time: Wed Jun 17 16:51:23 2020
[1592405485.286013] [032.0] [pid=18122] 1 contacts were notified.Diagnosi degli errori nel nucleo di monitoraggio CMC
Nelle edizioni commerciali puoi trovare un protocollo del nucleo di monitoraggio nel file di log
~/var/log/cmc.log
.
Nell'installazione standard questo file non contiene informazioni relative alle notifiche.
Puoi tuttavia attivare una funzione di logging molto dettagliata con l'opzioneGlobal settings > Monitoring Core > Logging of the notification mechanics.
Il nucleo fornirà quindi informazioni sul motivo per cui — o perché non (ancora) — un evento di monitoraggio lo induce a trasmettere una notifica al sistema di notifica:
Nota: l'attivazione della registrazione delle notifiche può generare molti messaggi. È tuttavia utile quando in seguito ci si chiede perché non sia stata generata una notifica in una situazione particolare.
5.4. Valutazione delle regole da parte del modulo di notifica
Una volta che il core ha generato una notifica grezza, questa passa attraverso la catena delle regole di notifica, dando come risultato una tabella di notifiche. Oltre ai dati della notifica grezza, ogni notifica contiene le seguenti informazioni aggiuntive:
Il contatto da avvisare
Il metodo di notifica
I parametri per questo metodo
In una consegna sincrona, per ogni voce della tabella verrà ora eseguito uno script di notifica appropriato. In una consegna asincrona, una notifica verrà trasmessa come file allo spooler di notifica.
Analisi della catena di regole
Quando crei regimi di regole più complessi, ti verrà sicuramente chiesto quali regole si applicheranno a una notifica specifica. Per questo Checkmk offre una funzione di analisi integrata in Setup > Setup > Analyze recent notifications.
In modalità analisi, per impostazione predefinita vengono visualizzate le ultime dieci notifiche grezze generate dal sistema ed elaborate tramite le regole:

Se hai bisogno di analizzare un numero maggiore di notifiche grezze, puoi facilmente aumentare il numero memorizzato per l'analisi tramite Global settings > Notifications > Store notifications for rule analysis:

Per ciascuna di queste notifiche grezze avrai a disposizione tre azioni:
|
Verifica la catena di regole, in cui verrà controllato se tutte le condizioni della regola sono state soddisfatte per l'evento di monitoraggio selezionato. La tabella delle notifiche risultante verrà visualizzata insieme alle regole. |
|
Visualizza il contesto completo della notifica. |
|
Ripete questa notifica grezza come se fosse appena apparsa. Per il resto, la visualizzazione è la stessa dell'analisi. In questo modo non solo puoi checkare le condizioni della regola, ma anche testare l'aspetto visivo di una notifica. |
Diagnosi degli errori
Se hai eseguito il test della catena di regole (
), puoi vedere quali regole
sono state applicate o
non sono state applicate a un evento di monitoraggio:

Se una regola non è stata applicata, passa il mouse sul cerchio grigio per visualizzare il suggerimento (testo al passaggio del mouse):

Tuttavia, questo testo al passaggio del mouse utilizza delle abbreviazioni per indicare i motivi per cui una regola non è stata applicata. Queste si riferiscono alle condizioni Host events o Service events della regola.
| Tipi di eventi host | ||
|---|---|---|
Abbreviazione |
Significato |
Descrizione |
|
UP ➤ DOWN |
Lo stato dello host è passato da "UP" a "DOWN" |
|
UP ➤ UNREACHABLE |
Lo stato dello host è cambiato da UP a UNREACH |
|
DOWN ➤ UP |
Lo stato dello host è cambiato da DOWN a UP |
|
DOWN ➤ UNREACHABLE |
Lo stato dello host è cambiato da DOWN a UNREACH |
|
UNREACHABLE ➤ DOWN |
Lo stato dello host è cambiato da UNREACH a DOWN |
|
UNREACHABLE ➤ UP |
Lo stato dello host è cambiato da UNREACH a UP |
|
any ➤ UP |
Lo stato dello host è cambiato da qualsiasi stato a UP |
|
any ➤ DOWN |
Lo stato dello host è cambiato da qualsiasi stato a DOWN |
|
any ➤ UNREACHABLE |
Lo stato dello host è cambiato da qualsiasi stato a UNREACH |
|
Start or end of flapping state |
|
|
Start or end of a scheduled downtime |
|
|
Acknowledgment of problem |
|
|
Alert handler execution, successful |
|
|
Alert handler execution, failed |
|
| Tipi di eventi di servizio | ||
|---|---|---|
Abbreviazione |
Significato |
Descrizione |
|
OK ➤ WARN |
Lo stato del servizio è cambiato da OK a WARN |
|
OK ➤ OK |
Lo stato del servizio è cambiato da "OK" a "OK" |
|
OK ➤ CRIT |
Lo stato del servizio è cambiato da "OK" a "CRIT" |
|
OK ➤ UNKNOWN |
Lo stato del servizio è cambiato da OK a SCONOSCIUTO |
|
WARN ➤ OK |
Lo stato del servizio è cambiato da "WARN" a "OK" |
|
WARN ➤ CRIT |
Lo stato del servizio è cambiato da "WARN" a "CRIT" |
|
WARN ➤ UNKNOWN |
Lo stato del servizio è cambiato da "WARN" a "SCONOSCIUTO" |
|
CRIT ➤ OK |
Lo stato del servizio è cambiato da "CRIT" a "OK" |
|
CRIT ➤ WARN |
Lo stato del servizio è cambiato da "CRIT" a "WARN" |
|
CRIT ➤ UNKNOWN |
Lo stato del servizio è cambiato da "CRIT" a "SCONOSCIUTO" |
|
UNKNOWN ➤ OK |
Lo stato del servizio è cambiato da SCONOSCIUTO a OK |
|
UNKNOWN ➤ WARN |
Lo stato del servizio è cambiato da SCONOSCIUTO a WARN |
|
UNKNOWN ➤ CRIT |
Lo stato del servizio è cambiato da SCONOSCIUTO a CRIT |
|
any ➤ OK |
Lo stato del servizio è cambiato da qualsiasi stato a OK |
|
any ➤ WARN |
Lo stato del servizio è passato da qualsiasi stato a "WARN" |
|
any ➤ CRIT |
Lo stato del servizio è cambiato da qualsiasi stato a CRIT |
|
any ➤ UNKNOWN |
Lo stato del servizio è cambiato da qualsiasi stato a SCONOSCIUTO |
Sulla base di questi suggerimenti puoi check e rivedere le tue regole.
Un'altra importante opzione diagnostica è il file di log ~/var/log/notify.log.
Durante i test con le notifiche, il comando molto usato tail -f è utile per questo:
Con Global settings > Notifications > Notification log level puoi controllare la completezza delle notifiche su tre livelli. Imposta questo su Full dump of all variables and command e nel file di log troverai un elenco completo di tutte le variabili disponibili per lo script di notifica:

Ad esempio, l'elenco apparirà così (estratto):
2025-04-09 08:47:39,186 [10] [cmk.base.notify] Raw context:
CONTACTS=hh
HOSTACKAUTHOR=
HOSTACKCOMMENT=
HOSTADDRESS=127.0.0.1
HOSTALIAS=localhost
HOSTATTEMPT=1
HOSTCHECKCOMMAND=check-mk-host-smart5.5. Consegna asincrona tramite lo spooler di notifica
Una potente funzione aggiuntiva delle edizioni commerciali è lo spooler di notifica.
Questo consente una consegna asincrona delle notifiche.
Cosa significa asincrono in questo contesto?
Consegna sincrona: Il modulo di notifica attende che lo script di notifica abbia terminato l'esecuzione. Se l'esecuzione richiede molto tempo, si accumuleranno altre notifiche. Se il monitoraggio viene interrotto, queste notifiche andranno perse. Inoltre, se vengono generate molte notifiche in un breve periodo di tempo, potrebbe accumularsi un backlog fino al core, causando il blocco del monitoraggio.
Consegna asincrona: Ogni notifica verrà salvata in un file di spool in
~/var/check_mk/notify/spool. Non si creerà alcun ingorgo. Se il monitoraggio viene interrotto, i file di spool verranno conservati e le notifiche potranno essere consegnate correttamente in un secondo momento. Lo spooler di notifica si occupa dell'elaborazione dei file di spool.
Una consegna sincrona è quindi fattibile se lo script di notifica viene eseguito rapidamente e, soprattutto, non può portare a un timeout. Con i metodi di notifica che accedono a spooler esistenti, questo è scontato. I servizi di spool del sistema possono essere utilizzati in particolare con e-mail e SMS. Lo script di notifica passa un file allo spooler: con questa procedura non può verificarsi alcuno stato di attesa.
Quando si utilizza la consegna tracciabile tramite SMTP o altri script che stabiliscono connessioni di rete, è necessario ricorrere sempre alla consegna asincrona. Ciò vale anche per gli script che inviano messaggi di testo (SMS) tramite HTTP su internet. I timeout durante la creazione di una connessione a un servizio di rete possono durare anche diversi minuti, causando un ingorgo come descritto sopra.
La buona notizia è che la consegna asincrona è abilitata di default in Checkmk.
Per prima cosa, lo spooler di notifica (mknotifyd) viene avviato anche all’avvio dell’istanza, cosa che puoi verificare con il seguente comando:
D'altra parte, la consegna asincrona (Asynchronous local delivery by notification spooler) è selezionata in Global settings > Notifications > Notification Spooling:

Diagnosi degli errori
Lo spooler di notifica mantiene un proprio file di log: ~/var/log/mknotifyd.log.
Questo dispone di tre livelli di log che possono essere impostati in Global settings > Notifications > Notification Spooler Configuration con il parametro Verbosity of logging.
L'impostazione predefinita è Normal logging (only startup, shutdown and errors.
Nel livello intermedio, Verbose logging (i.e. spooled notifications),, è possibile vedere l'elaborazione dei file di spool:
2025-04-09 08:47:37,928 [15] [cmk.mknotifyd] processing spoolfile: /omd/sites/mysite/var/check_mk/notify/spool/dad64e2e-b3ac-4493-9490-8be969a96d8d
2025-04-09 08:47:37,928 [20] [cmk.mknotifyd] running cmk --notify --log-to-stdout spoolfile /omd/sites/mysite/var/check_mk/notify/spool/dad64e2e-b3ac-4493-9490-8be969a96d8d
2025-04-09 08:47:39,848 [20] [cmk.mknotifyd] got exit code 0
2025-04-09 08:47:39,850 [20] [cmk.mknotifyd] processing spoolfile dad64e2e-b3ac-4493-9490-8be969a96d8d successful: success 250 - b'2.4.0 Ok: queued as 1D4FF7F58F9'
2025-04-09 08:47:39,850 [20] [cmk.mknotifyd] sending command LOG;SERVICE NOTIFICATION RESULT: hh;mysrv;CPU load;OK;mail;success 250 - b'2.4.0 Ok: queued as 1D4FF7F58F9';success 250 - b'2.0.0 Ok: queued as 1D4FF7F58F9'6. Consegna tracciabile tramite SMTP
6.1. L'e-mail non è affidabile
Il monitoraggio è utile solo quando ci si può fidare.
Questo richiede che le notifiche vengano ricevute in modo affidabile e tempestivo.
Purtroppo, però, la consegna delle e-mail non è proprio perfetta.
L'invio viene solitamente gestito passando l'e-mail al server SMTP locale.
Questo cerca di consegnare l'e-mail in modo autonomo e asincrono.
In caso di errore temporaneo (ad esempio, se il server SMTP di destinazione non è raggiungibile), l'e-mail viene messa in coda e più tardi verrà fatto un nuovo tentativo. Questo "più tardi" di solito è dopo 15-30 minuti. A quel punto la notifica potrebbe arrivare troppo tardi!
Se l'e-mail non può davvero essere consegnata, il server SMTP crea un bel messaggio di errore nel suo file di log e cerca di generare un'e-mail di errore al "mittente". Ma il sistema di monitoraggio non è un vero mittente e non può nemmeno ricevere e-mail. Ne consegue che tali errori semplicemente scompaiono e le notifiche quindi non arrivano.
6.2. L'uso di SMTP su una connessione diretta consente l'analisi degli errori
Le edizioni commerciali offrono la possibilità di una consegna tracciabile tramite SMTP. Questo avviene intenzionalmente senza l’aiuto del server di posta locale. Invece Checkmk stesso invia l’e-mail al tuo smarthost tramite SMTP, e poi valuta direttamente la risposta SMTP.
In questo modo, non solo gli errori SMTP vengono gestiti in modo intelligente, ma viene anche documentata con precisione una consegna corretta. È un po' come una raccomandata: Checkmk riceve una ricevuta dallo smarthost SMTP (server di ricezione) che verifica che l'e-mail sia stata accettata, compreso un ID della mail.
Il processo pratico per configurare le notifiche con consegna tracciabile tramite SMTP è descritto nelle regole di notifica globali e nelle regole di notifica personali.
6.3. SMS e altri metodi di notifica
Una consegna sincrona che includa messaggi di errore e tracciabilità è stata finora implementata solo per le e-mail HTML. Come restituire uno stato di errore in uno script di notifica scritto da te lo trovi nel capitolo sulla scrittura dei tuoi script.
7. Notifiche nei sistemi distribuiti
Negli ambienti distribuiti, cioè quelli con più di un'istanza Checkmk, ci si chiede cosa fare con le notifiche generate sulle istanze remote. In una situazione del genere ci sono fondamentalmente due possibilità:
Consegna locale
Consegna centralizzata sull'istanza centrale (solo edizioni commerciali)
Puoi trovare informazioni dettagliate su questo argomento nell'articolo sul monitoraggio distribuito.
8. Script di notifica
8.1. Il principio
Le notifiche possono avvenire in modi diversi e personalizzati. Esempi tipici sono:
Trasferimento delle notifiche a un ticket o a un sistema di notifica esterno
L'invio di un SMS tramite vari servizi internet
Chiamate telefoniche automatizzate
Inoltro a un sistema di monitoraggio superiore
Per questo motivo Checkmk offre un'interfaccia molto semplice che ti permette di scrivere i tuoi script di notifica. Questi possono essere scritti in qualsiasi linguaggio di programmazione supportato da Linux, anche se Shell, Perl e Python insieme coprono il 95% del "mercato".
Gli script standard inclusi in Checkmk si trovano in ~/share/check_mk/notifications.
Questa directory fa parte del software e non deve essere modificata.
Salva invece i tuoi script in ~/local/share/check_mk/notifications.
Assicurati che i tuoi script siano eseguibili (chmod +x).
Verranno quindi individuati automaticamente e resi disponibili per la selezione nelle regole di notifica.
Se desideri personalizzare uno script standard, basta copiarlo da ~/share/check_mk/notifications a ~/local/share/check_mk/notifications e apportare le modifiche alla copia.
Se mantieni il nome originale, il tuo script sostituirà automaticamente la versione standard e non sarà necessario apportare modifiche alle regole di notifica esistenti.
In caso di notifica, lo script verrà eseguito con i permessi dell'utente dell’istanza.
Nelle variabili d'ambiente che iniziano con NOTIFY_, lo script riceverà tutte le informazioni relative all'host/servizio interessato, all'evento di monitoraggio, ai contatti da avvisare e ai parametri specificati nella regola di notifica.
I testi che lo script scrive sull'output standard (con print, echo, ecc.) compaiono nel file di log del modulo di notifica ~/var/log/notify.log.
8.2. Notifiche tracciabili
Gli script di notifica hanno la possibilità di utilizzare un codice di uscita per comunicare se si è verificato un errore replicabile o definitivo:
| Codice di uscita | Descrizione |
|---|---|
|
Lo script è stato eseguito con successo. |
|
Si è verificato un errore temporaneo. L'esecuzione dovrebbe essere ripetuta dopo una breve attesa, fino al raggiungimento del numero massimo di tentativi configurato. Esempio: non è possibile stabilire una connessione HTTP con un servizio SMS. |
|
Si è verificato un errore irreversibile. La notifica non verrà riprovata. Verrà visualizzato un errore di notifica nella GUI. L'errore verrà visualizzato nella cronologia dell'host/servizio. Esempio: il servizio SMS registra un errore di "autenticazione non valida". |
Inoltre, in tutti i casi l'output standard dello script di notifica, insieme allo stato, verrà inserito nella cronologia delle notifiche dell'host/servizio e sarà quindi visibile nella GUI.
Importante: le notifiche tracciabili non sono disponibili per le notifiche di massa!
Il trattamento degli errori di notifica dal punto di vista dell'utente verrà spiegato nel capitolo sulla consegna tracciabile tramite SMTP.
8.3. Un semplice esempio di script
Come esempio puoi creare uno script che scriva tutte le informazioni relative alla notifica in un file. Il linguaggio di programmazione è la shell Bash di Linux:
Quindi rendi lo script eseguibile:
Ecco un paio di spiegazioni relative allo script:
Nella prima riga c'è un'
#!e e il percorso dell'interprete del linguaggio dello script (qui/bin/bash).Nella seconda riga, dopo il carattere di commento
#, c'è il titolo dello script. Di norma, questo verrà visualizzato quando selezioni il metodo di notifica.Il comando
envvisualizzerà tutte le variabili d'ambiente ricevute dallo script.Con
grep NOTIFY_le variabili Checkmk verranno filtrate …… e ordinate in ordine alfabetico con
sort.> $OMD_ROOT/tmp/foobar.outscrive il risultato nel file~/tmp/foobar.outall'interno della directory dell'istanza.L'
exit 0sarebbe in realtà superfluo in questa posizione, dato che la shell prende sempre il codice di uscita dall'ultimo comando. Qui si tratta diechoed è sempre un successo — ma essere espliciti è sempre meglio.
8.4. Test dello script di esempio
Affinché lo script venga utilizzato, devi definirlo come metodo in una regola di notifica.
Gli script scritti in proprio non hanno una dichiarazione dei parametri, quindi mancheranno tutte le checkbox come quelle offerte, ad esempio, nel metodo HTML Email.
Invece puoi inserire un elenco di testi come parametri che possono essere disponibili come NOTIFY_PARAMETER_1, NOTIFY_PARAMETER_2, ecc. per lo script.
Per un test, fornisci i parametri Fröhn, Klabuster e Feinbein:

Ora, per eseguire il test, imposta il servizio CPU load sull'host myserver su CRIT — con il comando Fake check results.
Nel file di log del modulo di notifica ~/var/log/notify.log vedrai quindi l'esecuzione dello script, inclusi i parametri e il file di spool generato.:
2021-08-25 13:01:23,887 [20] [cmk.base.notify] Executing 1 notifications:
2021-08-25 13:01:23,887 [20] [cmk.base.notify] * notifying hh via foobar, parameters: Fröhn, Klabuster, Feinbein, bulk: no
2021-08-25 13:01:23,887 [20] [cmk.base.notify] Creating spoolfile: /omd/sites/mysite/var/check_mk/notify/spool/e1b5398c-6920-445a-888e-f17e7633de60Il file ~/tmp/foobar.out conterrà ora un elenco alfabetico di tutte le variabili d'ambiente di Checkmk che includono informazioni relative alla notifica.
Qui puoi orientarti per capire quali valori sono disponibili per il tuo script.
Ecco le prime dieci righe:
I parametri si possono trovare anche qui:
8.5. Variabili d'ambiente
Nell'esempio sopra hai visto una serie di variabili d'ambiente che verranno passate allo script.
Quali variabili siano disponibili dipende dal tipo di notifica, dalla versione e dall'edizione di Checkmk e dal nucleo di monitoraggio utilizzato (CMC o Nagios).
Oltre al trucchetto con il comando env, ci sono altri due modi per ottenere un elenco completo di tutte le variabili:
Modificando il livello di log per
~/var/log/notify.logtramite Global settings > Notifications > Notification log level.Per le notifiche relative a HTML Email, c'è una checkbox Information to be displayed in the email body con l'opzione Complete variable list (for testing).
Di seguito trovi un elenco delle variabili più importanti:
| Variabile d'ambiente | Descrizione |
|---|---|
|
Directory home dell'istanza, ad es. |
|
Nome dell'istanza, ad es. |
|
Per le notifiche all'host, la parola |
|
Nome utente (login) del contatto. |
|
L'indirizzo e-mail del contatto. |
|
Voce nel campo Pager nel profilo utente del contatto. Poiché il campo non è generalmente riservato a uno scopo specifico, puoi semplicemente utilizzarlo per ogni utente al fine di salvare le informazioni necessarie per le notifiche. |
|
Data della notifica in formato ISO-8601, ad es. |
|
Data e ora nel formato predefinito del sistema Linux non localizzato, ad es. |
|
Data e ora in formato ISO, ad es. |
|
Nome dell'host interessato. |
|
Output del plug-in di controllo dell'host, ad es. |
|
Una delle seguenti parole: |
|
Tipo di notifica come descritto nell'introduzione a questo articolo
. Sarà espresso da una delle seguenti parole: |
|
Tutti i parametri dello script separati da spazi. |
|
Il primo parametro dello script. |
|
Il secondo parametro dello script, ecc. |
|
Nome del servizio interessato. Questa variabile non è presente nelle notifiche host. |
|
Output del plug-in di controllo del servizio (non per le notifiche host) |
|
Una delle seguenti parole: |
8.6. Notifiche di massa
Se il tuo script deve supportare le notifiche di massa, dovrà essere preparato in modo specifico, poiché lo script deve inviare più notifiche contemporaneamente. Per questo motivo, anche l'invio tramite variabili d'ambiente non funziona in modo pratico.
Assegna un nome al tuo script nella terza riga dell'intestazione come di seguito — il modulo di notifica invierà quindi le notifiche tramite l'input standard:
Attraverso l'input standard lo script riceverà blocchi di variabili.
Ogni riga ha la forma: NAME=VALUE.
I blocchi sono separati da righe vuote.
Il carattere ASCII con codice 1 (\a) viene utilizzato per rappresentare i caratteri di nuova riga all'interno del testo.
Il primo blocco contiene un elenco di variabili generali (ad es. parametri di chiamata). Ogni blocco successivo assembla le variabili in una notifica.
Il consiglio migliore è di provarlo tu stesso con un semplice test che scriva i dati completi in un file, in modo da poter vedere come vengono inviati i dati. A questo scopo puoi utilizzare il seguente script di notifica:
Prova lo script come descritto sopra e attiva anche l'opzione "Notification Bulking" nella regola di notifica.
8.7. Script di notifica forniti
Nella versione standard, Checkmk fornisce già una vasta gamma di script per effettuare le connessioni ai servizi di messaggistica istantanea più diffusi e utilizzati, alle piattaforme di gestione degli incidenti e ai sistemi di ticket. Puoi scoprire come utilizzare questi script nei seguenti articoli:
9. File e directory
9.1. Percorsi di Checkmk
| Percorso del file | Funzione |
|---|---|
|
Il file di log di CMC. Se il debug delle notifiche è attivato, qui troverai informazioni precise sul motivo per cui le notifiche sono state o non sono state generate. |
|
Il file di log del modulo di notifica. |
|
Il file di log dello spooler di notifica. |
|
Lo stato attuale dello spooler di notifica. Questo è rilevante soprattutto per le notifiche in ambienti distribuiti. |
|
Il file di log di debug di Nagios. Switcha i messaggi di debug in |
|
Posizione di archiviazione dei file di spool da processare dallo spooler di notifica. |
|
In caso di errori temporanei, lo spooler di notifica sposta i file qui e riprova dopo un paio di minuti. |
|
I file di spool difettosi verranno spostati qui. |
|
Script di notifica forniti di serie con Checkmk. Non apportare modifiche qui. |
|
Percorso di archiviazione per i tuoi script di notifica personalizzati. Se desideri personalizzare uno script standard, copialo da |
9.2. File di log del server SMTP
I file di log del server SMTP sono file di sistema e i loro percorsi assoluti sono elencati qui sotto. La posizione esatta in cui sono memorizzati i file di log dipenderà dalla tua distribuzione Linux.
| Percorso | Funzione |
|---|---|
|
File di log del server SMTP su Debian e Ubuntu |
|
File di log del server SMTP su SUSE Linux Enterprise Server (SLES) |
|
File di log del server SMTP su Red Hat Enterprise Linux (RHEL) |
