Checkmk
to checkmk.com
Important

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

Notification icon.

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:

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

Icon of a scheduled downtime.

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

Icon of an inactive notification period.

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 Icon of an inactive notification period..

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" icon 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.

CRE 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.

CEE 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

E-mail

Reply-To: linux.group@example.com

Bruno Weizenkeim

E-mail

Reply-To: linux.group@example.com

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

Icon of a disabled notification.

È 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:

Command to enable and disable notifications.

Tali host o servizi saranno quindi contrassegnati con il simbolo "icon notif man disabled".

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 Icon of a scheduled downtime., 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:

Master control snap-in.

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

Icon indicating flapping state.

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 Icon indicating flapping state.. 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:

Global settings for flap detection handling.

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:

List of accumulated notifications for a service.

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:

  1. Il nucleo di monitoraggio registra l'evento di monitoraggio del cambiamento di stato. Il simbolo icon alert crit nella prima colonna indica lo stato (CRIT nell'esempio).

  2. Il nucleo di monitoraggio genera una notifica grezza di icon alert cmk notify. Questa viene passata dal core al modulo di notifica, che esegue la valutazione delle regole di notifica applicabili.

  3. La valutazione delle regole porta a una notifica utente di icon alert notify all'utente hh con il metodo mail.

  4. Il risultato della notifica icon alert notify result 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.

Tip

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.

~/var/log/nagios.log
~/var/nagios/debug.log

Checkmk Micro Core (CMC)

Il nucleo di monitoraggio nelle edizioni commerciali che svolge la stessa funzione di Nagios nella Comunità Checkmk.

~/var/log/cmc.log

Modulo di notifica

Elabora le regole di notifica per creare una notifica utente a partire da una notifica grezza. Richiama gli script di notifica.

~/var/log/notify.log

Spooler di notifica (solo edizioni commerciali)

Consegna asincrona delle notifiche e notifiche centralizzate in ambienti distribuiti.

~/var/log/mknotifyd.log

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).

~/var/log/notify.log

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:

A raw notification in the notification history.
  • Il simbolo è un altoparlante grigio chiaro di icon alert cmk notify

  • check-mk-notify viene indicato come contatto.

  • check-mk-notify viene 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

CRE Il core di Nagios utilizzato in CRE 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 …​

OMD[mysite]:~$ omd restart nagios
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

… troverai informazioni utili sui motivi per cui le notifiche sono state create o soppresse:

~/var/nagios/debug.log
[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

CEE 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:

OMD[mysite]:~$ tail -f var/log/cmc.log
2021-08-26 16:12:37 [5] [core 27532] Executing external command: PROCESS_SERVICE_CHECK_RESULT;mysrv;CPU load;1;test
2021-08-26 16:12:43 [5] [core 27532] Executing external command: LOG;SERVICE NOTIFICATION: hh;mysrv;CPU load;WARNING;mail;test
2021-08-26 16:12:52 [5] [core 27532] Executing external command: LOG;SERVICE NOTIFICATION RESULT: hh;mysrv;CPU load;OK;mail;success 250 - b'2.0.0 Ok: queued as 482477F567B';success 250 - b'2.0.0 Ok: queued as 482477F567B'
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

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:

List of the last 10 raw notifications in analysis mode.

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:

Global setting for the number of raw notifications displayed.

Per ciascuna di queste notifiche grezze avrai a disposizione tre azioni:

Icon to test the rule chain.

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.

Icon to display the notification context.

Visualizza il contesto completo della notifica.

Raw notification reload icon.

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 (for testing the rule chain.), puoi vedere quali regole Symbol in green sono state applicate o Symbol in gray non sono state applicate a un evento di monitoraggio:

List of applied and not applied rules.

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

Hint when a rule has not been applied.

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

rd

UP ➤ DOWN

Lo stato dello host è passato da "UP" a "DOWN"

ru

UP ➤ UNREACHABLE

Lo stato dello host è cambiato da UP a UNREACH

dr

DOWN ➤ UP

Lo stato dello host è cambiato da DOWN a UP

du

DOWN ➤ UNREACHABLE

Lo stato dello host è cambiato da DOWN a UNREACH

ud

UNREACHABLE ➤ DOWN

Lo stato dello host è cambiato da UNREACH a DOWN

ur

UNREACHABLE ➤ UP

Lo stato dello host è cambiato da UNREACH a UP

?r

any ➤ UP

Lo stato dello host è cambiato da qualsiasi stato a UP

?d

any ➤ DOWN

Lo stato dello host è cambiato da qualsiasi stato a DOWN

?u

any ➤ UNREACHABLE

Lo stato dello host è cambiato da qualsiasi stato a UNREACH

f

Start or end of flapping state

s

Start or end of a scheduled downtime

x

Acknowledgment of problem

as

Alert handler execution, successful

af

Alert handler execution, failed

Tipi di eventi di servizio

Abbreviazione

Significato

Descrizione

rw

OK ➤ WARN

Lo stato del servizio è cambiato da OK a WARN

rr

OK ➤ OK

Lo stato del servizio è cambiato da "OK" a "OK"

rc

OK ➤ CRIT

Lo stato del servizio è cambiato da "OK" a "CRIT"

ru

OK ➤ UNKNOWN

Lo stato del servizio è cambiato da OK a SCONOSCIUTO

wr

WARN ➤ OK

Lo stato del servizio è cambiato da "WARN" a "OK"

wc

WARN ➤ CRIT

Lo stato del servizio è cambiato da "WARN" a "CRIT"

wu

WARN ➤ UNKNOWN

Lo stato del servizio è cambiato da "WARN" a "SCONOSCIUTO"

cr

CRIT ➤ OK

Lo stato del servizio è cambiato da "CRIT" a "OK"

cw

CRIT ➤ WARN

Lo stato del servizio è cambiato da "CRIT" a "WARN"

cu

CRIT ➤ UNKNOWN

Lo stato del servizio è cambiato da "CRIT" a "SCONOSCIUTO"

ur

UNKNOWN ➤ OK

Lo stato del servizio è cambiato da SCONOSCIUTO a OK

uw

UNKNOWN ➤ WARN

Lo stato del servizio è cambiato da SCONOSCIUTO a WARN

uc

UNKNOWN ➤ CRIT

Lo stato del servizio è cambiato da SCONOSCIUTO a CRIT

?r

any ➤ OK

Lo stato del servizio è cambiato da qualsiasi stato a OK

?w

any ➤ WARN

Lo stato del servizio è passato da qualsiasi stato a "WARN"

?c

any ➤ CRIT

Lo stato del servizio è cambiato da qualsiasi stato a CRIT

?u

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:

OMD[mysite]:~$ tail -f var/log/notify.log
2025-04-09 08:02:49,302 [15] [cmk.base.notify]  -> does not match: Event type 'rd' not handled by this rule. Allowed are: du, ?r
2025-04-09 08:02:49,303 [20] [cmk.base.notify] User cmkadmin's rule 'my test notification'...
2025-04-09 08:02:49,303 [20] [cmk.base.notify]  -> matches!
2025-04-09 08:02:49,303 [20] [cmk.base.notify]    - adding notification of cmkadmin via mail
2025-04-09 08:02:49,303 [20] [cmk.base.notify] User peter's rule 'test notification of peter'...
2025-04-09 08:02:49,303 [20] [cmk.base.notify]  -> matches!
2025-04-09 08:02:49,303 [20] [cmk.base.notify]    - modifying notification of peter via mail
2025-04-09 08:02:49,303 [20] [cmk.base.notify] Executing 2 notifications:
2025-04-09 08:02:49,303 [20] [cmk.base.notify]   * would notify peter via mail, parameters: graphs_per_notification, notifications_with_graphs, matching_rule_nr, matching_rule_text, bulk: no
2025-04-09 08:02:49,303 [20] [cmk.base.notify]   * would notify cmkadmin via mail, parameters: graphs_per_notification, notifications_with_graphs, matching_rule_nr, matching_rule_text, bulk: no
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

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:

Global setting to specify the log level.

Ad esempio, l'elenco apparirà così (estratto):

~/var/log/notify.log
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-smart

5.5. Consegna asincrona tramite lo spooler di notifica

CEE 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:

OMD[mysite]:~$ omd status mknotifyd
mknotifyd:      running
-----------------------
Overall state:  running
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
Accesso in scrittura agli appunti negato!

D'altra parte, la consegna asincrona (Asynchronous local delivery by notification spooler) è selezionata in Global settings > Notifications > Notification Spooling:

Global setting for the notification spooler delivery method.

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:

~/var/log/mknotifyd.log
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

CEE 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à:

  1. Consegna locale

  2. 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

0

Lo script è stato eseguito con successo.

1

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.

2 e superiori

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!

CEE 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:

~/local/share/check_mk/notifica/foobar
#!/bin/bash
# Foobar Teleprompter

env | grep NOTIFY_ | sort > $OMD_ROOT/tmp/foobar.out
echo "Successfully written $OMD_ROOT/tmp/foobar.out"
exit 0
Copia il contenuto del file negli appunti
Contenuto del file copiato con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Quindi rendi lo script eseguibile:

OMD[mysite]:~$ chmod +x local/share/check_mk/notifications/foobar
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

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 env visualizzerà 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.out scrive il risultato nel file ~/tmp/foobar.out all'interno della directory dell'istanza.

  • L'exit 0 sarebbe in realtà superfluo in questa posizione, dato che la shell prende sempre il codice di uscita dall'ultimo comando. Qui si tratta di echo ed è 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:

Rule with selection of sample script as notification method.

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.:

~/var/log/notify.log
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-f17e7633de60

Il 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:

OMD[mysite]:~$ head tmp/foobar.out
NOTIFY_ALERTHANDLERNAME=debug
NOTIFY_ALERTHANDLEROUTPUT=Arguments:
NOTIFY_ALERTHANDLERSHORTSTATE=OK
NOTIFY_ALERTHANDLERSTATE=OK
NOTIFY_CONTACTALIAS=Harry Hirsch
NOTIFY_CONTACTEMAIL=harryhirsch@example.com
NOTIFY_CONTACTNAME=hh
NOTIFY_CONTACTPAGER=
NOTIFY_CONTACTS=hh
NOTIFY_DATE=2021-08-25
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

I parametri si possono trovare anche qui:

OMD[mysite]:~$ grep PARAMETER tmp/foobar.out
NOTIFY_PARAMETERS=Fröhn Klabuster Feinbein
NOTIFY_PARAMETER_1=Fröhn
NOTIFY_PARAMETER_2=Klabuster
NOTIFY_PARAMETER_3=Feinbein
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

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.log tramite 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

OMD_ROOT

Directory home dell'istanza, ad es. /omd/sites/mysite.

OMD_SITE

Nome dell'istanza, ad es. mysite.

NOTIFY_WHAT

Per le notifiche all'host, la parola HOST, altrimenti SERVICE. Con queste puoi rendere il tuo script così intelligente da registrare informazioni utili in entrambi i casi.

NOTIFY_CONTACTNAME

Nome utente (login) del contatto.

NOTIFY_CONTACTEMAIL

L'indirizzo e-mail del contatto.

NOTIFY_CONTACTPAGER

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.

NOTIFY_DATE

Data della notifica in formato ISO-8601, ad es. 2021-08-25.

NOTIFY_LONGDATETIME

Data e ora nel formato predefinito del sistema Linux non localizzato, ad es. Wed Aug 25 15:18:58 CEST 2021.

NOTIFY_SHORTDATETIME

Data e ora in formato ISO, ad es. 2021-08-25 15:18:58

NOTIFY_HOSTNAME

Nome dell'host interessato.

NOTIFY_HOSTOUTPUT

Output del plug-in di controllo dell'host, ad es. Packet received via smart PING. Questo output è rilevante solo per le notifiche relative all'host, ma è presente anche nelle notifiche relative al servizio.

NOTIFY_HOSTSTATE

Una delle seguenti parole: UP, DOWN o UNREACH

NOTIFY_NOTIFICATIONTYPE

Tipo di notifica come descritto nell'introduzione a questo articolo . Sarà espresso da una delle seguenti parole:
PROBLEM : problema normale dell'host
o del servizio RECOVERY : l'host/servizio è di nuovoUP /
OK ACKNOWLEDGEMENT (…​) : riconoscimento del problema
FLAPPINGSTART : l'host/servizio ha iniziato a essere irregolare
FLAPPINGSTOP :- l'irregolarità è terminata
DOWNTIMESTART : inizio di un tempo di manutenzione
programmata DOWNTIMEEND : fine normale di un tempo di manutenzione
DOWNTIMECANCELLED : interruzione prematura di un tempo di manutenzione
CUSTOM : notifica emessa da un comando manuale
ALERTHANDLER (…​) : esecuzione del gestore di avvisi (solo edizioni commerciali)
Per i tipi con(…​) , le parentesi contengono informazioni aggiuntive sul tipo di notifica.

NOTIFY_PARAMETERS

Tutti i parametri dello script separati da spazi.

NOTIFY_PARAMETER_1

Il primo parametro dello script.

NOTIFY_PARAMETER_2

Il secondo parametro dello script, ecc.

NOTIFY_SERVICEDESC

Nome del servizio interessato. Questa variabile non è presente nelle notifiche host.

NOTIFY_SERVICEOUTPUT

Output del plug-in di controllo del servizio (non per le notifiche host)

NOTIFY_SERVICESTATE

Una delle seguenti parole: OK, WARN, CRIT o UNKNOWN

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:

~/local/share/check_mk/notifica/mybulk
#!/bin/bash
# My Bulk Notification
# Bulk: yes
Copia il contenuto del file negli appunti
Contenuto del file copiato con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

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:

~/local/share/check_mk/notifica/mybulk
#!/bin/bash
# My Bulk Notification
# Bulk: yes

cat > $OMD_ROOT/tmp/mybulktest.out
Copia il contenuto del file negli appunti
Contenuto del file copiato con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

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

~/var/log/cmc.log

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.

~/var/log/notify.log

Il file di log del modulo di notifica.

~/var/log/mkotifyd.log

Il file di log dello spooler di notifica.

~/var/log/mkotifyd.state

Lo stato attuale dello spooler di notifica. Questo è rilevante soprattutto per le notifiche in ambienti distribuiti.

~/var/nagios/debug.log

Il file di log di debug di Nagios. Switcha i messaggi di debug in ~/etc/nagios/nagios.d/logging.cfg utilizzando la variabile debug_level.

~/var/check_mk/notify/spool/

Posizione di archiviazione dei file di spool da processare dallo spooler di notifica.

~/var/check_mk/notify/deferred/

In caso di errori temporanei, lo spooler di notifica sposta i file qui e riprova dopo un paio di minuti.

~/var/check_mk/notify/corrupted/

I file di spool difettosi verranno spostati qui.

~/share/check_mk/notifications

Script di notifica forniti di serie con Checkmk. Non apportare modifiche qui.

~/local/share/check_mk/notifications

Percorso di archiviazione per i tuoi script di notifica personalizzati. Se desideri personalizzare uno script standard, copialo da ~/share/check_mk/notifications qui e mantieni il nome del file originale.

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

/var/log/mail.log

File di log del server SMTP su Debian e Ubuntu

/var/log/mail

File di log del server SMTP su SUSE Linux Enterprise Server (SLES)

/var/log/maillog

File di log del server SMTP su Red Hat Enterprise Linux (RHEL)


Last modified: Mon, 15 Dec 2025 14:06:15 GMT via commit 27339fb94
In questa pagina