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, per notifica si intende l'informazione attiva degli utenti in caso di problemi o di altri eventi di monitoraggio. Il metodo più comunemente utilizzato è quello delle e-mail, ma esistono anche altri metodi, come l'invio di SMS o l'inoltro a un sistema di ticket. Checkmk fornisce una semplice interfaccia per la scrittura di script per i propri metodi di notifica.

Il punto di partenza per qualsiasi notifica a un utente è un evento segnalato dal nucleo di monitoraggio. Nel seguente articolo chiameremo questo evento di monitoraggio per evitare confusione con gli eventi processati dalla Console degli Eventi. Un evento di monitoraggio è sempre legato a un particolare host o servizio. I possibili tipi di eventi di monitoraggio sono:

Checkmk utilizza una notifica rule-based che ti permette di creare notifiche per l'utente a partire da questi eventi di monitoraggio e che può essere utilizzata anche per implementare requisiti molto esigenti. Una semplice notifica via e-mail, che in molti casi è del tutto soddisfacente, è comunque veloce da impostare.

2. Notificare o non notificare (ancora)?

Le notifiche sono fondamentalmente facoltative e Checkmk può essere utilizzato in modo efficiente anche senza di esse. Alcune grandi organizzazioni hanno una sorta di pannello di controllo in cui un team operativo tiene costantemente sotto controllo l'interfaccia di Checkmk e quindi le notifiche aggiuntive non sono necessarie. Se il tuo ambiente Checkmk è ancora in fase di costruzione, è bene considerare che le notifiche saranno utili ai tuoi colleghi solo quando non si produrrannofalsi allarmi (falsi positivi) o se ne produrranno solo occasionalmente. Per prima cosa è necessario prendere confidenza con i valori di soglia e con tutte le altre impostazioni, in modo che tutti gli stati siano OK / UP- o in altre parole: tutto è "verde".

L'accettazione del nuovo monitoraggio svanirà rapidamente se ogni giorno la casella di posta elettronica sarà invasa da centinaia di e-mail inutili.

La seguente procedura si è dimostrata efficace per la messa a punto delle notifiche:

Fase 1: metti a punto il monitoraggio, da un lato risolvendo i problemi reali appena scoperti da Checkmk e, dall'altro, eliminando i falsi allarmi. Procedi in questo modo fino a quando tutto è "normalmente" OK / UP. Consulta la Guida per principianti per alcuni consigli su come ridurre i falsi allarmi tipici.

Fase 2: Successivamente, switcha le notifiche in modo che siano attive solo per te stesso. Riduci la "staticità" causata da problemi sporadici e di breve durata. A tal fine, regola altri valori di threshold, utilizza il monitoraggio predittivo se necessario, aumenta il numero di tentativi di check o prova le notifiche ritardate. E naturalmente, se sono responsabili di problemi reali, cerca di tenerli sotto controllo.

Fase 3: una volta che la tua casella di posta elettronica è tollerabilmente 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 daranno vita a un sistema in grado di fornire informazioni rilevanti che contribuiranno a ridurre le interruzioni.

3. Semplici notifiche via e-mail

Una notifica via e-mail inviata da Checkmk in formato HTML ha un aspetto simile a questo:

A notification by email.

Come si può vedere nell'esempio, l'e-mail contiene anche le letture attuali del servizio interessato.

Prima di ricevere un'e-mail di questo tipo da Checkmk, sono necessari alcuni preparativi, descritti di seguito.

3.1. Prerequisiti

Nella configurazione predefinita di Checkmk, un utente riceve notifiche via e-mail quando sono soddisfatti i seguenti prerequisiti:

  • Il server Checkmk ha una configurazione funzionante per l'invio di e-mail.

  • L'utente ha un indirizzo e-mail configurato.

  • L'utente è membro di un gruppo di contatto e quindi è un contatto.

  • Si verifica un evento di monitoraggio su un host o un servizio assegnato a questo gruppo di contatto, che attiva una notifica.

3.2. Impostazione dell'invio di posta elettronica in Linux

Per inviare con successo le e-mail, il tuo server Checkmk deve avere una configurazione funzionante del server SMTP. A seconda della tua distribuzione Linux, questo potrebbe utilizzare, ad esempio, Postfix, Qmail, Exim o Nullmailer. La configurazione sarà implementata con le risorse della tua distribuzione Linux.

In genere la configurazione si limita alla registrazione di uno "smarthost" (noto anche come server SMTP relay) a cui verranno indirizzate tutte le e-mail. Questo sarà il server SMTP interno della tua azienda. Di regola gli smarthost non richiedono l'autenticazione in una LAN, il che semplifica le cose. In alcune distribuzioni lo smarthost viene interrogato durante l'installazione. Con l'appliance Checkmk è possibile configurare lo smarthost comodamente tramite l'interfaccia web.

Puoi testare facilmente l'invio di e-mail con il comando mail sulla linea di comando. Poiché esistono numerose implementazioni diverse di questo comando in Linux, per standardizzarlo Checkmk fornisce la versione del progetto Heirloom mailx direttamente nel percorso di ricerca dell'utente del sito (come ~/bin/mail). Il file di configurazione corrispondente è ~/etc/mail.rc. Il modo migliore per testare è come utente dell'istanza, poiché gli script di notifica verranno eseguiti con gli stessi permessi.

Il contenuto dell'e-mail viene letto dallo standard input, l'oggetto viene specificato con -s e l'indirizzo del destinatario viene semplicemente aggiunto come argomento alla fine della riga di comando:

OMD[mysite]:~$ echo "content" | mail -s test-subject harry.hirsch@example.com

L'e-mail dovrebbe essere consegnata senza ritardi. Se non funziona, puoi trovare informazioni nel file di log del server SMTP nella directory /var/log (vedi file e directory).

3.3. Indirizzo e-mail e gruppo di contatto

L'indirizzo e-mail e il gruppo di contatto di un utente sono definiti nell'amministrazione dell'utente:

Dialog for entering email address and selecting contact groups.

In un'istanza Checkmk appena creata, inizialmente esiste solo il gruppo di contatto Everything. I membri di questo gruppo sono automaticamente responsabili di tutti gli host e i servizi e riceveranno una notifica via e-mail di ogni evento di monitoraggio rilevante.

Nota: se la tua installazione di Checkmk è stata generata con una versione precedente, questo gruppo potrebbe anche chiamarsi Everybody. Ciò è tuttavia illogico, poiché questo gruppo non contiene tutti gli utenti, bensì tutti gli host. A parte i nomi diversi, la funzione è la stessa.

3.4. Casi speciali: Sistema di ticket, messenger e motore di eventi

Invece di e-mail o SMS, puoi inviare notifiche a un sistema di ticket (come Jira o ServiceNow), a un messenger (Slack, Mattermost) o a un motore di eventi (Console degli Eventi). Esiste un metodo di notifica separato per ognuno di questi casi speciali, che può essere selezionato nella regola di notifica. Tuttavia, devi tenere presente i due punti seguenti quando crei la regola:

  1. Quando selezioni i contatti, assicurati che le notifiche vengano inviate a un solo contatto, ad esempio selezionando un solo utente. Con i metodi di notifica per i sistemi di ticket, ecc. la selezione del contatto serve solo a specificare l' invio delle notifiche, che però non vengono inviate all'utente selezionato, ma al sistema di ticket. Tieni presente che una selezione di contatti tramite gruppi di contatti, tutti i contatti di un oggetto o simili genera di solito diverse notifiche identiche per un evento, che poi finiscono nel sistema di ticket due, tre o anche più volte.

  2. Se il primo punto è soddisfatto, ma l'utente è utilizzato in più regole di notifica per lo stesso metodo, allora si applica solo l'ultima regola in ogni caso. È quindi consigliabile creare un utente funzionale separato per ciascuna di queste regole di notifica.

3.5. Testare le regole di notifica

Tip

In Checkmk 2.3.0 Test notifications puoi testare tutte le regole di notifica e inviare notifiche via e-mail.

Se vuoi testare l'effettivo invio di qualcosa di diverso dalle e-mail, puoi comunque utilizzare i risultati di Fake check.

Per testare le regole di notifica, Checkmk offre uno strumento intelligente con Test notifications. Puoi usarlo per simulare una notifica per un host o un servizio e riconoscere quali regole di notifica sono efficaci. Oltre alla simulazione, puoi anche inviare una notifica e-mail.

Il modo più rapido per accedere al test di notifica è tramite Setup > Events > Notifications e il pulsante Test notifications. Inoltre, ci sono altre opzioni di chiamata da alcune visualizzazioni nel Monitoraggio (elenco dei servizi e dettagli dei servizi) e nel Menu di configurazione (proprietà degli host), in ogni caso nel menu Host > Test notifications.

Dialog for defining the properties of the simulated notification.

Per prima cosa, clicca su uno dei due pulsanti per decidere se la notifica è per un Host o un Service. Poi seleziona quale host o servizio deve essere. Puoi aggiungere una descrizione del servizio a Plugin output. Come evento puoi selezionare un cambiamento di stato o l'inizio di un tempo di manutenzione programmato. Usa il checkbox Send out HTML/ASCII email notification according to notification rules per specificare se la notifica è solo simulata o effettivamente inviata.

Infine, alla voce Advanced condition simulation ci sono altre due opzioni con cui puoi definire l'orario e il numero di notifiche. Questo ti permette di testare regole di notifica che si applicano solo in un determinato periodo di tempo (es. al di fuori dell'orario di lavoro) o che avviano un'escalation dopo un determinato numero di notifiche ripetute.

Clicca su Test notifications per avviare il test e anche l'invio dell'e-mail, se hai selezionato questa opzione. La finestra di dialogo Test notifications viene nascosta e vengono mostrati i risultati:

The summary of the simulation results.

Sotto Analysis results puoi vedere quante regole di notifica si applicano e quante notifiche ne derivano. Se hai selezionato Invia notifica, viene visualizzato il messaggio corrispondente Notifications have been sent. Questo deve portare immediatamente a un'e-mail per questo problema.

La riga sottostante riassume le notifiche generate dalle tue voci. Cliccando sul simbolo, puoi visualizzare il contesto della notifica, che ti permette di vedere le variabili d'ambiente e i loro valori validi nel contesto di questa notifica.

Le due sezioni successive mostrano ulteriori dettagli:

The details of the simulation results.

In Resulting notifications puoi vedere a chi e come vengono inviate le notifiche. Riceverai queste informazioni sulla simulazione anche se non hai selezionato l'invio della notifica.

In Global notification rules sono elencate le regole di notifica, presentate in modo più dettagliato nel prossimo capitolo. A questo punto, è importante solo la prima colonna della tabella, che utilizza dei simboli per indicare quali regole si applicano e quali no. Nell'esempio, la prima regola non si applica perché valuta i cambiamenti di stato degli host, ma l'evento è un cambiamento di stato di un servizio.

Tip

Come al solito, puoi continuare ad attivare le notifiche direttamente tramite la GUI in alternativa al test delle notifiche tramite la simulazione, ad es. con i comandi Send custom notification e Fake check results.

3.6. Mettere a punto le e-mail HTML

Quando invii un'e-mail HTML, potresti voler aggiungere informazioni aggiuntive o definire in modo flessibile un indirizzo e-mail di risposta (Reply to) a un contatto specifico per qualsiasi domanda. A questo scopo, esiste la regola Setup > Services > Service monitoring rules > Parameters for HTML Email e nelle regole di notifica il metodo di notifica dell'e-mail HTML. Con queste regole puoi aggiungere una serie di parametri come l'indirizzo e-mail di risposta, campi aggiuntivi con dettagli o testo libero formattato come HTML.

Nota che nel campo Add HTML section above table (e.g. title, description…​), per motivi di sicurezza, sono consentiti solo una piccola serie di tag HTML, che sono:

Tag Funzione Suggerimenti

a

Ancora/Link

Consentito se combinato con gli attributi href (obbligatorio) e target (opzionale). I link devono contenere percorsi relativi (cioè iniziare con ./ o ../) o utilizzare uno degli schemi URL http, https o mailto. Si sconsiglia di utilizzare percorsi relativi a causa della diversa gestione da parte dei client di e-mail.

h1

Titolo 1

h2

Titolo 2

b

Attira l'attenzione (di solito in grassetto)

tt

Teletype (carattere monospaziale)

Deprecato. Non usare questo tag!

i

Idiomatico (solitamente in corsivo)

u

Annotazione non articolata (di solito sottolineata)

br

Interruzione (interruzione di riga)

nobr

Testo non spezzato

Deprecato. Non usare questo tag!

pre

Preformattato

Gli spazi e i rientri sono conservati.

sup

Sovrascrittura

p

Paragrafo

hr

Interruzione tematica (regola orizzontale)

li

Elemento dell'elenco

Da utilizzare solo all'interno dei seguenti elenchi ul e ol.

ul

Elenco non ordinato

ol

Elenco ordinato

Come di consueto con tutte le regole di Checkmk, è possibile un'applicazione a grana molto fine, in modo da poter personalizzare un set dettagliato di notifiche agli host e ai servizi a seconda delle esigenze.

4. Controllare le notifiche con le regole di notifica

4.1. Il principio

Checkmk è configurato "di default" in modo che quando si verifica un evento di monitoraggio venga inviata un'e-mail di notifica a tutti i contatti dell'host o del servizio interessato. Questo è certamente ragionevole all'inizio, ma nella pratica sorgono molti altri requisiti, ad esempio:

  • La soppressione di notifiche specifiche e meno utili.

  • L'abbonamento alle notifiche di servizi per i quali non si è contatto.

  • Le notifiche possono essere inviate tramite e-mail, SMS o cercapersone, a seconda dell'ora del giorno.

  • L'escalation dei problemi quando non si riceve alcuna conferma oltre un certo limite di tempo.

  • L'opzione di NESSUNA notifica per gli stati WARN o SCONOSCIUTO

  • e molto altro ancora...

Checkmk ti offre la massima flessibilità nell'implementazione di tali requisiti grazie al suo meccanismo rule-based. Accedi alla configurazione con Setup > Events > Notifications.

Nota: quando richiami la pagina Notification configuration per la prima volta, vedrai un avviso relativo all '"indirizzo e-mail di riserva" non configurato. Per il momento puoi ignorare questo avviso. Approfondiremo l'argomento più avanti.

Nella configurazione delle notifiche, gestisci la catena di regole di notifica che determinano chi deve essere avvisato e come. Quando si verifica un evento di monitoraggio, questa catena di regole viene percorsa da cima a fondo. 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 notificato?).

  • Un metodo di notifica(Come notificare?), ad esempio un'e-mail HTML e, facoltativamente, parametri aggiuntivi per il metodo scelto.

Importante: a differenza delle regole per host e servizi, in questo caso la valutazione continua anche dopo che la regola di notifica applicabile è stata soddisfatta. Le regole successive possono aggiungere altre notifiche. Le notifiche generate dalle regole precedenti possono anche essere eliminate.

Il risultato finale della valutazione delle regole 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à invocato lo script di notifica che esegue la notifica all'utente appropriata al metodo di notifica.

4.2. La regola iniziale predefinita

Se hai una Checkmk appena installata, è stata predefinita una regola:

List with the predefined notification rule.

Questa regola definisce il comportamento predefinito sopra descritto. È strutturata come segue:

Condizione

Nessuna, cioè la regola si applica a tutti gli eventi di monitoraggio.

Metodo

Invia un'e-mail in formato HTML (con grafici metrici incorporati)

Contatti

Tutti i contatti dell'host/servizio interessato.

Come al solito, puoi modificare la regola, clonarla (copiarla), eliminarla o crearne una nuova. Una volta che hai più di una regola, puoi cambiare il loro ordine di elaborazione trascinandole con il simbolo.

Nota: le modifiche alle regole di notifica non richiedono l'attivazione delle modifiche, ma hanno effetto immediato.

4.3. Struttura delle regole di notifica

Di seguito presentiamo la struttura generale delle regole di notifica con le definizioni delle proprietà generali, dei metodi, dei contatti e delle condizioni.

Proprietà generali

Come per tutte le regole di Checkmk, qui puoi inserire una descrizione e un commento per la regola o anche disattivarla temporaneamente.

Rule with the option to enable disabling of notifications by users.

L'opzione Overriding by users è attivata per impostazione predefinita. attivata. Permette agli utenti di "cancellarsi" dalle notifiche generate da questa regola. Ti mostriamo come farlo con le notifiche personalizzate.

Metodo di notifica

Il metodo di notifica specifica la tecnica da utilizzare per inviare la notifica, ad es. con un'e-mail HTML.

Rule with notification method options.

Ogni metodo di notifica è realizzato tramite uno script. Checkmk include una serie di script. Puoi anche scrivere facilmente script personalizzati in qualsiasi linguaggio di programmazione desiderato per implementare notifiche speciali, ad esempio per reindirizzare una notifica al tuo sistema di ticket.

Un metodo può includere dei parametri, come ad esempio permettere al metodo che invia e-mail ASCII e HTML di impostare esplicitamente l'indirizzo del mittente (From:).

Prima di effettuare le impostazioni direttamente nella regola di notifica, è bene sapere che i parametri dei metodi di notifica possono essere specificati anche tramite regole per host e servizi: in Setup > Services > Service monitoring rules, nella sezione Notifications, troverai un set di regole per ogni metodo di notifica, che potrai utilizzare per definire le stesse impostazioni e, come al solito, possono dipendere dall'host o dal servizio.

La definizione di parametri nelle regole di notifica permette di variare queste impostazioni nei singoli casi: ad esempio, puoi definire un oggetto globale per la tua e-mail, ma anche un oggetto alternativo con una regola di notifica individuale.

Al posto dei parametri puoi anche selezionare Cancel previous notifications - con il quale verranno cancellate tutte le notifiche di questo metodo da regole precedenti. Per saperne di più, consulta il tema Cancellare le notifiche.

Nota: per molti metodi di notifica per l'inoltro ad altri sistemi, troverai informazioni più dettagliate in articoli separati. L'elenco degli articoli si trova nel capitolo sugli script di notifica.

Selezionare i contatti

La procedura più comune prevede che le notifiche vengano inviate a tutti gli utenti che sono stati registrati come contatti per il rispettivo host/servizio. Questa è la procedura "normale" e logica, poiché è anche attraverso i contatti che si definiscono gli oggetti che ogni utente riceve nella visualizzazione della GUI - in pratica gli oggetti di cui l'utente è responsabile.

Puoi selezionare diverse opzioni nella selezione dei contatti ed estendere così la notifica a più contatti:

Rule with contact selection options.

Checkmk eliminerà automaticamente i contatti duplicati. Affinché la regola abbia senso, deve essere effettuata almeno una selezione.

Le due opzioni Restrict by…​ funzionano in modo diverso: anche in questo caso i contatti selezionati con le altre opzioni saranno limitati. Con queste opzioni puoi anche creare un operatore AND tra gruppi di contatti, ad esempio per consentire l'invio di notifiche a tutti i contatti che sono membri di entrambi i gruppi Linux e Data center.

Inserendo Explicit email addresses puoi inviare notifiche a persone che in realtà non sono state nominate utenti in Checkmk. Questo ovviamente ha senso solo se utilizzato nel metodo di notifica che invia effettivamente le e-mail.

Se nel metodo scelto hai selezionato Cancel previous notifications, le notifiche verranno eliminate solo per il contatto selezionato.

Nota: se utilizzi un sistema di ticket, un messenger o un motore di eventi come metodo di notifica, devi osservare le note relative a questi casi speciali.

Condizioni

Le condizioni determinano quando una regola verrà utilizzata. Per la comprensione è importante ricordare che la fonte è sempre un evento di monitoraggio su un host o un servizio concreto.

Le condizioni riguardano

  • gli attributi statici dell'oggetto, ad esempio se il nome del servizio contiene il testo /tmp,

  • con lo stato corrente o il cambiamento di stato, ad es. se il servizio è appena passato da OK a CRIT,

  • o con cose completamente diverse, ad esempio se ilperiodo di "tempo di lavoro" è attualmente attivo.

Ci sono due punti importanti da considerare quando si impostano le condizioni:

  1. Se non sono state definite condizioni, la regola avrà effetto per ogni evento di monitoraggio.

  2. Non appena selezioni anche una sola condizione, la regola entra in vigore solo se tutte le condizioni sono soddisfatte. Tutte le condizioni selezionate sono collegate con AND. C'è solo un'eccezione a questa importante regola, di cui parleremo più avanti e che non considereremo ora.

Ciò significa che devi prestare molta attenzione al fatto che le condizioni che hai scelto possano essere soddisfatte contemporaneamente in modo da attivare una notifica per il caso desiderato.

Supponiamo che tu voglia attivare una notifica quando si verifica un evento di monitoraggio per un servizio che inizia con il nome NTP su un host della cartella Main:

Rule containing the conditions for creating a notification.

Supponiamo inoltre che questa condizione venga estesa per notificare anche tutti i cambiamenti di stato di un host nello stato DOWN:

Rule with extended conditions for creating a notification.

Il risultato di questa regola di notifica con le tre condizioni singole è che non si verificherà mai una notifica, perché nessun evento di monitoraggio conterrà il cambiamento di stato di un host e il nome del servizio con NTP.

La seguente nota viene ripetuta di tanto in tanto in questo manuale d'uso. Tuttavia, in connessione con la configurazione delle tue notifiche, va sottolineato ancora una volta: mostra l'aiuto contestuale con Help > Show inline help per ottenere dettagli sull'effetto delle varie condizioni. Il seguente estratto dall'aiuto contestuale per l'opzione Match services illustra molto bene il comportamento: "Nota: le notifiche dell'host non corrisponderanno mai a questa regola, se si utilizza questa opzione."

L'eccezione all'operazione AND

Solo se un evento di monitoraggio soddisfa tutte le condizioni configurate, la regola di notifica verrà applicata. Come già detto, esiste un'importante eccezione a questa regola generale: le condizioni Match host event type e Match service event type:

The conditions 'Match host event type' and 'Match service event type'.

Se selezioni solo Match host event type, la regola non corrisponderà a nessun singolo evento di servizio. Allo stesso modo, questo vale per la selezione di Match service event type e degli eventi host. Se invece attivi entrambe le condizioni, la regola corrisponderà se il tipo di evento è attivato in uno qualsiasi dei due elenchi di checkbox. In questo caso eccezionale, le condizioni non saranno collegate con un "AND" logico, ma piuttosto con un "OR". In questo modo puoi amministrare le regole di notifica di host e servizi con un'unica regola.

Un ulteriore suggerimento sulle condizioni di Match contacts e Match contact groups:

The conditions 'Match contacts' and 'Match contact groups'.

La condizione verificata in questo caso è se l'host/servizio in questione ha un determinato gruppo di contatti. Questo può essere utilizzato per implementare funzioni come "Le notifiche del gruppo di host nel gruppo di contatti Linux non devono mai essere inviate via SMS". Questo non ha nulla a che fare con la selezione dei contatti descritta in precedenza.

4.4. Eliminare le notifiche

Come già accennato nella selezione del metodo di notifica, troverai anche l'opzione di selezione Cancel previous notifications. Per poter comprendere il funzionamento di una regola di questo tipo, è meglio visivamente visualizzare la tabella delle notifiche. Supponendo che il processo delle regole per un evento concreto di monitoraggio sia parzialmente completato e che a causa di una serie di regole siano state attivate le seguenti tre notifiche:

Chi (contatto) Come (metodo)

Harry Hirsch

E-mail

Bruno Weizenkeim

E-mail

Bruno Weizenkeim

SMS

Ora viene applicata una regola successiva con il metodo SMS e la selezione Cancel previous notifications. La selezione del contatto sceglie il gruppo 'Windows', di cui fa parte Bruno Weizenkeim. Come risultato di questa regola, la voce 'Bruno Weizenkeim / SMS' viene rimossa dalla tabella, che appare così:

Chi (contatto) Come (metodo)

Harry Hirsch

E-mail

Bruno Weizenkeim

E-mail

Se una regola successiva dovesse definire nuovamente un SMS di notifica per Bruno, questa regola avrà la priorità e l'SMS verrà aggiunto nuovamente alla tabella.

Per riassumere:

  • Le regole possono sopprimere (eliminare) notifiche specifiche.

  • Le regole di cancellazione devono essere successive alle regole di notifica.

  • Una regola di eliminazione non "cancella" effettivamente una regola precedente, ma sopprime le regole di notifica generate dalle regole (eventualmente multiple) precedenti.

  • Le regole successive possono ripristinare le notifiche precedentemente soppresse.

4.5. Cosa succede se nessuna regola è applicabile?

Chi configura può anche commettere degli errori. Un possibile errore nella configurazione delle notifiche potrebbe essere quello di scoprire un problema di monitoraggio critico, ma di non applicare nessuna regola di notifica.

Per proteggerti da questa eventualità, Checkmk offre l'impostazione Fallback email address for notifications che si trova sotto Setup > General > Global settings nella sezione Notifications. Inserisci qui un indirizzo e-mail che riceverà le notifiche per le quali non si applica alcuna regola di notifica.

Nota: in alternativa, puoi anche rendere un utente il destinatario nelle sue impostazioni personali. L'indirizzo e-mail memorizzato con l'utente viene utilizzato come indirizzo di riserva.

Tuttavia, l'indirizzo di riserva sarà utilizzato solo se non si applica alcuna regola di notifica, non quando non è stata attivata alcuna notifica! Come abbiamo mostrato nel capitolo precedente, la soppressione esplicita delle notifiche è voluta, non è un errore di configurazione.

L'inserimento di un indirizzo di ripiego sarà "consigliato" nella pagina Notification configuration con un avviso sullo schermo:

Warning that no fallback email address is stored.

Se, per qualsiasi motivo, vuoi eliminare l'avviso, ma allo stesso tempo non vuoi ricevere e-mail all'indirizzo di riserva, inserisci comunque un indirizzo di riserva e poi crea una nuova regola come prima regola, che cancella tutte le notifiche precedenti. Questa regola non ha effetto sulla configurazione delle notifiche, in quanto non sono ancora state create notifiche. Tuttavia, in questo modo puoi assicurarti che almeno una regola venga sempre applicata, permettendo così di eliminare l'avviso.

Ti sconsigliamo esplicitamente di adottare questo approccio, in quanto potresti perdere delle lacune nella catena di regole.

5. Notifiche personalizzate

5.1. Panoramica

Una funzione utile del sistema di notifiche di Checkmk è quella che permette agli utenti - anche senza diritti di amministratore - di personalizzare le notifiche. Gli utenti possono:

  • aggiungere notifiche che altrimenti non riceverebbero ("sottoscrizione")

  • Eliminare le notifiche che altrimenti riceverebbero (se non limitate)

  • personalizzare i parametri delle notifiche

  • Disattivare completamente le notifiche.

5.2. Regole di notifica personalizzata

Il punto di accesso dal punto di vista dell'utente è il menu Utente, dove si trova la voce Notification rules. Nella pagina Your personal notification rules è possibile creare una nuova regola con Add rule.

Le regole personalizzate sono strutturate come le regole normali, con una differenza: non contengono la selezione di un contatto. L'utente stesso viene automaticamente selezionato come contatto. Questo significa che l'utente può aggiungere o eliminare notifiche solo per se stesso.

Tuttavia, l'utente può eliminare le notifiche solo se l'opzione allow users to deactivate this notification è attivata nella regola di notifica che le crea:

Rule with the option to enable disabling of notifications by users.

Nell'ordine delle regole di notifica, le regole personalizzate vengono sempre dopo le regole globali e quindi possono modificare la tabella delle notifiche che è stata generata fino a quel momento. Quindi, ad eccezione del blocco dell'eliminazione appena descritto, le regole globali sono sempre valide come impostazione predefinita che può essere personalizzata dall'utente.

Se vuoi impedire del tutto la personalizzazione, puoi revocare il permesso General Permissions > Edit personal notification settings del ruolo user.

Come amministratore, puoi visualizzare tutte le regole utente se nel menu selezioni Display > Show user rules:

List of user rules from an administrator's point of view.

Dopo le regole globali, vengono elencate le regole utente, che puoi anche modificare con .

5.3. Disabilitare temporaneamente le notifiche

La disattivazione completa delle notifiche da parte di un utente è protetta dal permesso General Permissions > Disable all personal notifications, che per impostazione predefinita è impostato su no per il ruolo utente user. Un utente vedrà i checkbox corrispondenti nelle sue impostazioni personali solo se assegnerai esplicitamente questo diritto al ruolo user:

Personal setting to temporarily disable notifications.

In qualità di amministratore con accesso alle impostazioni personali dell'utente, puoi eseguire azioni di disabilitazione per conto dell'utente, anche se il permesso descritto sopra non è presente. Puoi trovare questa impostazione alla voce Setup > Users > Users e poi nelle proprietà del profilo dell'utente. In questo modo, ad esempio, puoi silenziare molto rapidamente le notifiche di un collega in vacanza, senza dover modificare la configurazione attuale.

6. Quando vengono generate le notifiche e come gestirle

6.1. Introduzione

Gran parte della complessità del sistema di notifiche di Checkmk è dovuta alle sue numerose opzioni di regolazione, con le quali è possibile evitare le notifiche non importanti. La maggior parte di queste situazioni è costituita da situazioni in cui le notifiche vengono già ritardate o soppresse quando si verificano. Inoltre, il nucleo di monitoraggio IT ha un'intelligenza integrata che sopprime alcune notifiche per impostazione predefinita. In questo capitolo vorremmo affrontare tutti questi aspetti.

6.2. Tempi di manutenzione programmata

Scheduled downtime icon.

Quando un host o un servizio si trova in un periodo di inattività programmata, le notifiche dell'oggetto vengono soppresse. Questo è, insieme alla corretta valutazione delle disponibilità, il motivo più importante per cui il tempo di manutenzione programmata è previsto nel monitoraggio. I dettagli seguenti sono rilevanti a questo proposito:

  • Se un host viene segnalato come inattività programmata, anche tutti i suoi servizi saranno automaticamente in tempo di manutenzione programmata, senza che sia necessario inserire una voce esplicita.

  • Se un oggetto entra in uno stato problematico durante un tempo di inattività programmata, quando il tempo di inattività termina come previsto, questo problema verrà notificato retroattivamente proprio alla fine del tempo di manutenzione programmata.

  • L'inizio e la fine di un tempo di manutenzione programmato sono di per sé un evento di monitoraggio che verrà notificato.

6.3. Periodi di notifica

Icon of an inactive notification period.

Durante la configurazione puoi definire un periodo di notifica per ogni host e servizio. Si tratta di un periodo di tempo che definisce l'arco temporale entro il quale la notifica deve essere limitata.

La configurazione viene eseguita utilizzando il sito 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 al momento in un periodo di notifica sarà contrassegnato da un simbolo grigio di pausa.

Gli eventi di monitoraggio per un oggetto che non si trova nel periodo di notifica non verranno notificati. Tali notifiche verranno "riemesse" quando il periodo di notifica sarà di nuovo attivo - se l'host/servizio si trova ancora in uno stato problematico. Verrà notificato solo lo stato più recente, anche se si sono verificate più modifiche allo stato dell'oggetto durante il periodo di tempo al di fuori del periodo di notifica.

Tra l'altro, 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 di notifica con condizioni temporali non verranno automaticamente ripetute in seguito!

6.4. Lo stato dell'host su cui è in esecuzione un servizio

Se un host è completamente fallito, o comunque inaccessibile al monitoraggio, ovviamente i suoi servizi non possono più essere monitorati. Icheck attivi registreranno di regola CRIT o SCONOSCIUTO, poiché questi tenteranno attivamente di accedere all'host e quindi incorreranno in un errore. In questa situazione, tutti gli altri check - quindi la maggior parte - saranno omessi e rimarranno nel loro vecchio stato di monitoraggio. Questi saranno contrassegnati dal simbolo stale time.

Sarebbe naturalmente molto complicato se tutti i check attivi in questo stato dovessero notificare i loro problemi: ad esempio, se un server web non è raggiungibile - e questo è già stato notificato - non sarebbe molto utile generare un'e-mail per tutti i servizi HTTP che ne dipendono.

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 della verifica UP. Questo è anche il motivo per cui l'accessibilità dell'host viene verificata separatamente. Se non è configurato diversamente, questa verifica viene effettuata con uno Smart Ping o un ping.

Se utilizzi Checkmk Raw (o una delle edizioni commerciali con 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 come ancora validi per un breve periodo di tempo nel futuro. Se sono trascorsi anche solo pochi secondi tra l'ultimo ping riuscito al server e il successivo active check, 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 alla verifica dello stato dell'host, riducendo così in modo affidabile le notifiche indesiderate.

6.5. Host padre

Immagina che un importante router di rete di un'azienda con centinaia di host si guasti: tutti i suoi host non saranno disponibili per il monitoraggio e diventeranno DOWN. Si attiveranno quindi centinaia di notifiche. Non è una buona cosa.

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ù genitori. Non appena tutti i genitori entrano in uno stato DOWN, gli host che non sono più raggiungibili saranno contrassegnati con lo stato NON RAGGIUNGIBILE e le loro notifiche saranno soppresse. Il problema del router stesso sarà ovviamente notificato.

A proposito, il CMC opera internamente in modo leggermente diverso rispetto a Nagios. Per ridurre i falsi allarmi e processare comunque le notifiche autentiche, presta molta attenzione agli orari esatti dei controlli dell'host in questione. Se un controllo dell'host fallisce, il core attende il risultato del controllo dell'host sull'host padre prima di generare una notifica. Questa attesa è asincrona e non ha alcun effetto sul nucleo di monitoraggio generale. Le notifiche dagli host possono quindi subire ritardi minimi.

6.6. Disabilitare le notifiche con le regole di notifica

Con i set di regole Enable/disable notifications for hosts o Enable/disable notifications for services puoi specificare host e servizi per i quali in generale non devono essere emesse notifiche. Come già detto, il core sopprime le notifiche. Una regola di notifica successiva che "sottoscrive" le notifiche per questi servizi sarà inefficace, in quanto le notifiche non verranno semplicemente generate.

6.7. Disabilitare le notifiche con i comandi

Icon of a disabled notification.

È anche possibile disabilitare temporaneamente le notifiche per singoli host o servizi tramite un comando.

Tuttavia, questo richiede che il permesso Commands on host and services > Enable/disable notifications sia assegnato al ruolo dell'utente. Per impostazione predefinita, questo non avviene per nessun ruolo.

Con il permesso assegnato, puoi disabilitare (e successivamente abilitare) le notifiche di host e servizi con il comando Commands > Notifications:

Command to enable and disable notifications.

Tali host o servizi saranno contrassegnati da un simbolo.

Poiché i comandi, a differenza delle regole, non richiedono né permessi di configurazione né l'attivazione di modifiche, possono essere una soluzione rapida per reagire prontamente a una situazione.

Importante: a differenza dei tempi di inattività programmati, le notifiche disabilitate non hanno alcuna influenza sulle valutazioni di disponibilità. Se durante un'interruzione non programmata vuoi davvero solo disabilitare le notifiche senza voler alterare le statistiche di disponibilità, non devi registrare un tempo di manutenzione programmata!

6.8. Disabilitare le notifiche a livello globale

Nello snap-in Master control nella barra laterale troverai uno switch master per Notifications:

Master control snap-in.

Questo switch è incredibilmente utile se hai intenzione di apportare grandi modifiche al sistema, durante le quali un errore potrebbe costringere molti servizi in uno stato CRIT. Puoi usare questo switch per evitare di turbare i tuoi colleghi con una marea di e-mail inutili. Ricordati di riattivare le notifiche quando hai finito.

Ogni sito di un monitoraggio distribuito dispone di uno di questi switch. Disattivando le notifiche del sito centrale, i siti remoti possono comunque attivare le notifiche, anche se queste sono dirette e consegnate dal sito centrale.

Importante: le notifiche che sarebbero state attivate durante il periodo in cui le notifiche sono state disabilitate non saranno ripetute in seguito quando saranno riattivate.

6.9. Ritardare le notifiche

Può capitare di avere servizi che occasionalmente entrano in uno stato problematico per brevi periodi, ma le interruzioni sono molto brevi e non sono critiche per l'utente. 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 a questa situazione.

Qui specifichi un tempo in minuti e la notifica sarà ritardata fino allo scadere di questo tempo. Se lo stato OK / UP si ripresenta prima di allora, non verrà attivata alcuna notifica. Naturalmente questo significa anche che la notifica di un problema reale sarà ritardata.

Ovviamente, ancora meglio del ritardo delle notifiche sarebbe l'eliminazione della causa effettiva dei problemi sporadici, ma questa è ovviamente un'altra storia...

6.10. Tentativi di controllo ripetuti

Un altro metodo molto simile per ritardare le notifiche è quello di consentire più tentativi di controllo quando un servizio entra in uno stato problematico. Questo si ottiene con il set di regole Maximum number of check attempts for hosts o, rispettivamente, Maximum number of check attempts for service.

Se ad esempio imposti un valore di riferimento di 3, un controllo con risultato CRIT inizialmente non farà scattare una notifica. Questo viene definito stato soft CRIT. Lo stato hard rimane OK. Solo se tre tentativi successivi restituiscono uno stato non OK, il servizio passa allo stato hard e scatta una notifica.

A differenza delle notifiche ritardate, in questo caso hai la possibilità di definire delle visualizzazioni in modo che questi problemi non vengano visualizzati. Un'aggregazione BI può anche essere costruita in modo da includere solo gli stati hard e non quelli soft.

6.11. Host e servizi irregolari

Icon indicating flapping state.

Quando un host o un servizio cambia frequentemente il suo stato in un breve lasso di tempo, viene considerato irregolare. Si tratta di uno stato vero e proprio. Il principio è quello di ridurre le notifiche eccessive durante le fasi in cui un servizio non funziona (del tutto) in modo stabile. Tali fasi possono essere valutate in modo particolare nelle statistiche di disponibilità.

Gli oggetti irregolari sono contrassegnati da un simbolo. Finché un oggetto è irregolare, i successivi cambiamenti di stato non attivano ulteriori notifiche. Tuttavia, una notifica viene attivata ogni volta che l'oggetto entra o esce dallo stato irregolare.

Il riconoscimento dell'irregolare da parte del sistema può essere influenzato nei seguenti modi:

  • Il sito Master control dispone di uno switch principale per controllare il rilevamento dell'irregolare (Flap Detection).

  • Puoi escludere gli oggetti dal riconoscimento utilizzando il set di regole 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 detection puoi definire i parametri per il rilevamento degli irregolari e impostarli come più o meno sensibili:

Global settings for flap detection handling.

Mostra l'aiuto contestuale di Help > Show inline help per maggiori dettagli sui valori personalizzabili.

6.12. Notifiche ripetute periodicamente e escalation

Per alcuni sistemi, può avere senso non limitarsi a una singola notifica quando un problema persiste per un periodo di tempo più lungo, ad esempio per gli host il cui tag host Criticality è impostato su Business critical.

Impostazione di notifiche a ripetizione periodica

Checkmk può essere impostato in modo che vengano emesse notifiche successive a intervalli fissi, finché il problema non viene confermato o risolto.

L'impostazione di questa opzione si trova nel set di regole Periodic notifications during host problems o, rispettivamente, Periodic notifications during service problems:

Rule for periodically-repeated notifications.

Una volta attivata questa opzione, per un problema persistente, Checkmk invierà notifiche periodiche agli intervalli configurati. Queste notifiche riceveranno un numero crescente a partire da 1 (per la notifica iniziale).

Le notifiche periodiche non sono utili solo per ricordare un problema (e per infastidire l 'operatore), ma forniscono anche una base per le escalation: ciò significa che dopo un periodo di tempo definito una notifica può essere inoltrata ad altri destinatari.

Impostare le escalation e comprenderle

Per impostare un'escalation, crea una regola di notifica aggiuntiva che utilizzi la condizione Restrict to notification number.

Rule for setting the frequency of notifications.

Se inserisci da 3 a 99999 come intervallo per il numero sequenziale, questa regola di notifica entra in vigore a partire dalla terza notifica. L'escalation può essere eseguita selezionando un altro metodo di notifica (es. SMS) oppure può notificare altre persone (selezione del contatto).

Con l'opzione Throttle periodic notifications, dopo un certo periodo di tempo la frequenza di ripetizione delle notifiche può essere ridotta in modo che, ad esempio, all'inizio si possa inviare un'e-mail ogni ora e successivamente si possa ridurre a un'e-mail al giorno.

Con più regole di notifica, puoi costruire un modello di escalation, ma come funzionerà in pratica questa escalation? Chi viene avvisato e quando? Ecco un esempio, implementato con una regola di notifica periodica e tre regole di notifica: Ad esempio:

  • In caso di rilevamento di un problema in un servizio, verrà attivata una notifica sotto forma di e-mail ogni 60 minuti finché il problema non sarà risolto o confermato.

  • Le notifiche da uno a cinque vengono inviate alle due persone responsabili del servizio.

  • Le notifiche da sei a dieci vengono inviate anche al responsabile del team interessato.

  • Dalla notifica undici in poi, una mail giornaliera viene invece inviata alla direzione dell'azienda.

Alle 9 del mattino si verifica un problema presso l'impianto. I due dipendenti responsabili vengono avvisati del problema ma non rispondono (per qualsiasi motivo). Quindi alle 10, 11, 12 e alle 13 ricevono ciascuno una nuova e-mail. A partire dalla sesta notifica delle 14, anche il team leader riceve un'e-mail, ma il problema non cambia. Alle 15, 16, 17 e 18 vengono inviate altre e-mail ai membri del team e al team leader.

Alle 19:00 entra in vigore il terzo livello di escalation: d'ora in poi non verranno più inviate e-mail ai membri del team o al team leader, ma la direzione dell'azienda riceverà un'e-mail ogni giorno alle 19:00 fino alla risoluzione del problema.

Non appena il problema è stato risolto e il servizio in Checkmk torna ad essere OK, viene inviato automaticamente un "via libera" all'ultimo gruppo di persone che ha ricevuto la notifica: nell'esempio precedente, se il problema viene risolto prima delle 14:00, ai due membri del team; se il problema viene risolto tra le 14:00 e le 19:00, ai membri del team e al team leader; e dopo le 19:00, solo alla direzione aziendale.

7. Il percorso di una notifica dall'inizio alla fine

7.1. La cronologia delle notifiche

Per iniziare, ti mostreremo come visualizzare la cronologia delle notifiche a livello del servizio e dell'host in Checkmk per poter seguire il processo di notifica.

Un evento di monitoraggio che fa scattare una notifica in Checkmk è, ad esempio, il cambiamento di stato di un servizio. Puoi scatenare 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 di 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 è in cima all'elenco. Tuttavia, la prima voce si trova in basso, quindi analizziamo le singole voci dal basso verso l'alto:

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

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

  3. La valutazione delle regole di notifica genera una notifica all 'utente hh con il metodo mail.

  4. Il risultato della notifica mostra che l'e-mail è stata consegnata con successo al server SMTP per la consegna.

Per aiutare a comprendere correttamente il contesto delle varie opzioni di impostazione e delle condizioni di base e per consentire una diagnosi accurata dei problemi quando una notifica appare o non appare come previsto, qui descriveremo tutti i dettagli del processo di notifica, compresi tutti i componenti coinvolti.

Nota: 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 per l'host stesso (voce di menuNotifications of host ) e anche per l'host con tutti i suoi servizi (Notifications of host & services).

7.2. I componenti

Il sistema di notifica di Checkmk coinvolge i seguenti componenti:

Componente Funzione File di log

Nagios

Il nucleo di monitoraggio di Checkmk Raw 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 delle edizioni commerciali che svolge la stessa funzione di Nagios in Checkmk Raw.

~/var/log/cmc.log

Modulo di notifica

Processa le regole di notifica per creare una notifica utente da una notifica grezza. Richiama gli script di notifica.

~/var/log/notify.log

Spooler di notifica (solo edizioni commerciali)

Consegna asincrona di notifiche e notifiche centralizzate in ambienti distribuiti.

~/var/log/mknotifyd.log

Script di notifica

Per ogni metodo di notifica c'è uno script che processa l'effettiva consegna (es. genera e invia un'e-mail HTML).

~/var/log/notify.log

7.3. Il nucleo di monitoraggio

Notifiche grezze

Come descritto in precedenza, 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" a una notifica, il nucleo genera una notifica grezza al contatto interno di assistenza check-mk-notify. La notifica grezza non contiene ancora dettagli sui contatti effettivi o sul 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 di colore grigio chiaro.

  • check-mk-notify è indicato come contatto.

  • check-mk-notify è 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, invece, mantiene il modulo in standby come processo ausiliario permanente(helper Checkmk), 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 Checkmk Raw registra tutti gli eventi di monitoraggio in ~/var/log/nagios.log. Questo file è anche la posizione in cui viene memorizzata la cronologia delle notifiche, che viene anche interrogata tramite la GUI se, ad esempio, desideri vedere le notifiche di un host o di un servizio.

Più interessanti sono invece i messaggi che si trovano nel file ~/var/nagios/debug.log e che si ricevono se si imposta la variabile debug_levelsu 32 in etc/nagios/nagios.d/logging.cfg.

Dopo un riavvio del core ...

OMD[mysite]:~$ omd restart nagios

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

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 log molto dettagliata con Global settings > Monitoring Core > Logging of the notification mechanics.. Il nucleo fornirà quindi informazioni sul perché - o perché (ancora) - un evento di monitoraggio lo spinge a passare una notifica al sistema di monitoraggio:

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'

Nota: l 'attivazione del log per le notifiche può generare molti messaggi, ma è utile quando in seguito ci si chiede perché non è stata generata una notifica in una particolare situazione.

7.4. Valutazione delle regole di notifica da parte del modulo di notifica

Una volta che il core ha generato una notifica grezza, questa passa attraverso la catena di regole di notifica, dando vita a una tabella di notifiche. Oltre ai dati della notifica grezza, ogni notifica contiene le seguenti informazioni aggiuntive:

  • Il contatto da notificare

  • Il metodo di notifica

  • I parametri di questo metodo

In caso di consegna sincrona, per ogni voce della tabella verrà eseguito uno script di notifica appropriato. In caso di consegna asincrona, la notifica verrà passata come file allo spooler di notifica.

Analisi della catena di regole

Quando crei regole di notifica più complesse, ti chiederai quali regole si applicheranno a una specifica notifica. Per questo Checkmk offre una funzione di analisi integrata nella pagina Notifications configuration, che puoi raggiungere con la voce di menu Display > Show analysis.

Nella modalità di analisi, per impostazione predefinita, vengono visualizzate le ultime dieci notifiche grezze generate dal sistema e processate attraverso le regole di notifica:

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 di notifiche memorizzate per l'analisi tramite Global settings > Notifications > Store notifications for rule analysis:

Global setting for the number of raw notifications displayed.

Per ognuna di queste notifiche grezze sono disponibili tre azioni:

Verifica la catena di regole, in cui ogni regola viene controllata se tutte le condizioni della regola sono state soddisfatte per l'evento di monitoraggio selezionato. La tabella delle notifiche risultante verrà visualizzata con le regole di notifica.

Visualizza il contesto completo della notifica.

Ripete la notifica grezza come se fosse appena apparsa. Altrimenti la visualizzazione è la stessa dell'analisi. In questo modo puoi non solo verificare le condizioni della regola di notifica, ma anche testare la visualizzazione di una notifica.

Diagnosi degli errori

Se hai eseguito il test della catena di regole (), puoi vedere quali regole sono state applicate o meno a un evento di monitoraggio:

List of applied and not applied rules.

Se una regola non è stata applicata, muovi il mouse sul cerchio grigio per vedere il suggerimento (testo di passaggio del mouse):

Hint when a rule has not been applied.

Tuttavia, questo testo utilizza delle abbreviazioni per indicare le condizioni per cui una regola non è stata applicata, che si riferiscono alle condizioni Match host event type o Match service event type della regola.

Tipi di eventi host

Abbreviazione

Significato

Descrizione

rd

UP ➤ DOWN

Stato dell'host cambiato da UP a DOWN

ru

UP ➤ NON RAGGIUNGIBILE

Stato dell'host cambiato da UP a NON RAGGIUNGIBILE

dr

DOWN ➤ UP

Stato dell'host cambiato da DOWN a UP

du

DOWN ➤ NON RAGGIUNGIBILE

Stato host cambiato da DOWN a NON RAGGIUNGIBILE

ud

NON RAGGIUNGIBILE ➤ DOWN

Stato host cambiato da NON RAGGIUNGIBILE a DOWN

ur

NON RAGGIUNGIBILE ➤ UP

Stato dell'host cambiato da NON RAGGIUNGIBILE a UP

?r

qualsiasi ➤ UP

Stato dell'host cambiato da qualsiasi stato a UP

?d

qualsiasi ➤ DOWN

Stato dell'host cambiato da qualsiasi stato a DOWN

?u

qualsiasi ➤ NON RAGGIUNGIBILE

Stato dell'host cambiato da qualsiasi stato a NON RAGGIUNGIBILE

f

Inizio o fine dello stato di irregolare

s

Inizio o fine di un tempo di manutenzione programmata

x

Conferma del problema

as

Esecuzione del gestore di avvisi con successo

af

Esecuzione del gestore di avvisi, fallita

Tipi di eventi del servizio

Abbreviazione

Significato

Descrizione

rw

OK ➤ WARN

Stato del servizio cambiato da OK a WARN

rr

OK ➤ OK

Stato del servizio cambiato da OK a OK

rc

OK ➤ CRIT

Stato del servizio cambiato da OK a CRIT

ru

OK ➤ SCONOSCIUTO

Stato del servizio cambiato da OK a SCONOSCIUTO

wr

WARN ➤ OK

Stato del servizio cambiato da WARN a OK

wc

WARN ➤ CRIT

Stato del servizio cambiato da WARN a CRIT

wu

WARN ➤ SCONOSCIUTO

Stato del servizio cambiato da WARN a SCONOSCIUTO

cr

CRIT ➤ OK

Stato del servizio cambiato da CRIT a OK

cw

CRIT ➤ WARN

Stato del servizio cambiato da CRIT a WARN

cu

CRIT ➤ SCONOSCIUTO

Stato del servizio cambiato da CRIT a SCONOSCIUTO

ur

SCONOSCIUTO ➤ OK

Stato del servizio cambiato da SCONOSCIUTO a OK

uw

SCONOSCIUTO ➤ WARN

Stato del servizio cambiato da SCONOSCIUTO a WARN

uc

SCONOSCIUTO ➤ CRIT

Stato del servizio cambiato da SCONOSCIUTO a CRIT

?r

qualsiasi ➤ OK

Stato del servizio cambiato da qualsiasi stato a OK

?w

qualsiasi ➤ WARN

Stato del servizio cambiato da qualsiasi stato a WARN

?c

qualsiasi ➤ CRIT

Stato del servizio cambiato da qualsiasi stato a CRIT

?u

qualsiasi ➤ SCONOSCIUTO

Stato del servizio cambiato da qualsiasi stato a SCONOSCIUTO

Sulla base di questi suggerimenti puoi controllare 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 famoso comando tail -f è utile per questo:

OMD[mysite]:~$ tail -f var/log/notify.log
2021-08-26 17:11:58,914 [20] [cmk.base.notify] Analysing notification (mysrv;Temperature Zone 7) context with 71 variables
2021-08-26 17:11:58,915 [20] [cmk.base.notify] Global rule 'Notify all contacts of a host/service via HTML email'...
2021-08-26 17:11:58,915 [20] [cmk.base.notify]  -> matches!
2021-08-26 17:11:58,915 [20] [cmk.base.notify]    - adding notification of hh via mail
2021-08-26 17:11:58,916 [20] [cmk.base.notify] Executing 1 notifications:
2021-08-26 17:11:58,916 [20] [cmk.base.notify]   * would notify hh via mail, parameters: smtp, graphs_per_notification, notifications_with_graphs, bulk: no

Con Global settings > Notifications > Notification log level puoi controllare la completezza delle notifiche in tre livelli: impostalo 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à come segue (estratto):

~/var/log/notify.log
2021-08-26 17:24:54,709 [10] [cmk.base.notify] Raw context:
                    CONTACTS=hh
                    HOSTACKAUTHOR=
                    HOSTACKCOMMENT=
                    HOSTADDRESS=127.0.0.1
                    HOSTALIAS=localhost
                    HOSTATTEMPT=1
                    HOSTCHECKCOMMAND=check-mk-host-smart

7.5. Consegna asincrona tramite lo spooler di notifica

Una potente funzione aggiuntiva delle edizioni commerciali è lo spooler di notifica, che permette di inviare le notifiche in modo asincrono. Cosa significa asincrono in questo contesto?

  • Consegna sincrona: Il modulo di notifica aspetta che lo script di notifica abbia finito di essere eseguito. 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, è possibile che si crei un arretrato fino al core, causando un blocco del monitoraggio.

  • Consegna asincrona: Ogni notifica viene salvata in un file di spool all'indirizzo ~/var/check_mk/notify/spool. Non è possibile che si crei un inceppamento. Se il monitoraggio viene interrotto, i file di spool verranno conservati e le notifiche potranno essere consegnate correttamente in seguito. Lo spooler di notifica si occupa del processo dei file di spool.

La consegna sincrona è possibile se lo script di notifica viene eseguito rapidamente e soprattutto non può causare timeout. Con i metodi di notifica che accedono agli spooler esistenti, questo è un dato di fatto. I servizi di spool del sistema possono essere utilizzati in particolare con le e-mail e gli SMS. Lo script di notifica passa un file di spool allo spooler: con questa procedura non può verificarsi alcuno stato di attesa.

Quando utilizzi la consegna tracciabile via SMTP o altri script che stabiliscono connessioni di rete, dovresti sempre utilizzare la consegna asincrona. Questo vale anche per gli script che inviano messaggi di testo (SMS) via HTTP su internet. I timeout durante la creazione di una connessione a un servizio di rete possono durare fino a diversi minuti, causando l'inceppamento descritto sopra.

La buona notizia è che l'invio asincrono è abilitato per impostazione predefinita in Checkmk. Da un lato, lo spooler di notifica (mknotifyd) viene avviato all'avvio dell'istanza Checkmk, cosa che puoi verificare con il seguente comando:

OMD[mysite]:~$ omd status mknotifyd
mknotifyd:      running
-----------------------
Overall state:  running

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 possiede tre livelli di log che possono essere impostati in Global settings > Notifications > Notification Spooler Configuration con il parametro Verbosity of logging. Nel livello intermedio, Verbose logging (i.e. spooled notifications), è possibile vedere il processo dei file di spool:

~/var/log/mknotifyd.log
2021-08-26 18:05:02,928 [15] [cmk.mknotifyd] processing spoolfile: /omd/sites/mysite/var/check_mk/notify/spool/dad64e2e-b3ac-4493-9490-8be969a96d8d
2021-08-26 18:05:02,928 [20] [cmk.mknotifyd] running cmk --notify --log-to-stdout spoolfile /omd/sites/mysite/var/check_mk/notify/spool/dad64e2e-b3ac-4493-9490-8be969a96d8d
2021-08-26 18:05:05,848 [20] [cmk.mknotifyd] got exit code 0
2021-08-26 18:05:05,850 [20] [cmk.mknotifyd] processing spoolfile dad64e2e-b3ac-4493-9490-8be969a96d8d successful: success 250 - b'2.0.0 Ok: queued as 1D4FF7F58F9'
2021-08-26 18:05:05,850 [20] [cmk.mknotifyd] sending command LOG;SERVICE NOTIFICATION RESULT: hh;mysrv;CPU load;OK;mail;success 250 - b'2.0.0 Ok: queued as 1D4FF7F58F9';success 250 - b'2.0.0 Ok: queued as 1D4FF7F58F9'

8. Notifiche di massa

8.1. Panoramica

A tutti coloro che lavorano con il monitoraggio è capitato di avere un problema isolato che ha scatenato una vera e propria marea di notifiche (successive). Il principio degli host padre è un modo per ridurle in determinate circostanze, ma purtroppo non è utile in tutti i casi.

Puoi prendere esempio dal progetto Checkmk stesso: una volta al giorno creiamo i pacchetti di installazione di Checkmk per ogni distribuzione Linux supportata. Il nostro stato di monitoraggio di Checkmk è impostato in modo tale da avere un servizio che è OK solo se il numero giusto di pacchetti è stato costruito correttamente. A volte può succedere che un errore generale nel software ostacoli l'impacchettamento, causando il passaggio simultaneo di 43 servizi in uno stato CRIT.

Abbiamo configurato le notifiche in modo tale che, in questo caso, venga inviata un'unica e-mail che elenca tutte le 43 notifiche in sequenza. Questo è naturalmente più chiaro di 43 e-mail singole e riduce anche il rischio che "nella foga della battaglia" si perda una 44esima e-mail relativa a un altro problema.

La modalità di funzionamento di questa notifica di massa è molto semplice. Quando si verifica una notifica, in un primo momento questa viene trattenuta per un breve periodo di tempo. Le notifiche successive che si verificano durante questo lasso di tempo vengono immediatamente aggiunte alla stessa e-mail. Questa raccolta può essere definita per ogni regola di notifica. Quindi, ad esempio, durante il giorno puoi operare con e-mail singole, ma durante la notte con una notifica di massa. Se viene attivata una notifica di massa, in genere ti verranno offerte le seguenti opzioni:

Notification rule with bulk notification options.

Il tempo di attesa può essere configurato a piacimento. In molti casi è sufficiente un minuto, in quanto al più tardi a quell'ora dovrebbero essere comparsi tutti i problemi relativi. Naturalmente puoi impostare un tempo più lungo, ma questo comporterà un ritardo fondamentale nelle notifiche.

Dato che naturalmente non ha senso buttare tutto in un unico piatto, puoi specificare quali gruppi di problemi devono essere notificati collettivamente. L'opzione Host è molto utilizzata: in questo modo si garantisce che vengano raggruppate solo le notifiche provenienti dallo stesso host.

Ecco alcune informazioni aggiuntive sulle notifiche di massa:

  • Se il raggruppamento è attivato in una regola, l'attivazione può essere disattivata da una regola successiva e viceversa.

  • La notifica di massa avviene sempre per contatto. Ogni contatto ha un proprio "vaso di raccolta privato".

  • Puoi limitare la dimensione del vaso (Maximum bulk size). Una volta raggiunto il limite massimo, la notifica di massa verrà inviata immediatamente.

8.2. Notifiche di massa e periodi di tempo

Cosa succede quando una notifica rientra nel periodo di notifica, ma la notifica di massa che la contiene - e che arriva un po' più tardi - non rientra nel periodo di notifica? È possibile anche la situazione inversa...

In questo caso si applica un principio molto semplice: tutte le configurazioni che limitano le notifiche a periodi di tempo sono valide solo per la notifica vera e propria. La successiva notifica di massa sarà sempre consegnata indipendentemente da tutti i periodi di tempo.

9. Consegna tracciabile per SMTP

9.1. L'e-mail non è affidabile

Il monitoraggio è utile solo se si può fare affidamento su di esso. Ciò richiede che le notifiche intelligenti vengano ricevute in modo affidabile e tempestivo. Purtroppo, però, la consegna delle e-mail non è del tutto ideale. L'invio viene solitamente processato passando l'e-mail al server SMTP locale, che tenta di consegnarla in modo autonomo e asincrono.

In caso di errore temporaneo (ad es. se il server SMTP ricevente non è raggiungibile) l'e-mail viene messa in coda e in seguito viene effettuato un nuovo tentativo. Questo "in seguito" avviene di regola dopo 15-30 minuti. A quel punto la notifica potrebbe essere troppo tardi!

Se l'e-mail non può essere consegnata, il server SMTP crea un messaggio di errore nel suo file di log e tenta di generare un'e-mail di errore al "mittente". Ma il sistema di monitoraggio IT non è un vero mittente e non può ricevere e-mail. Ne consegue che tali errori scompaiono semplicemente e le notifiche sono assenti.

Importante: le notifiche tracciabili non sono disponibili per le notifiche di massa!

9.2. L'utilizzo dell'SMTP in connessione diretta consente l'analisi degli errori

Le edizioni commerciali offrono la possibilità di effettuare una consegna tracciabile tramite SMTP, senza l'aiuto del server Checkmk locale: Checkmk stesso invia l'e-mail al tuo smarthost tramite SMTP e poi valuta la risposta SMTP.

In questo modo, non solo gli errori SMTP vengono trattati in modo intelligente, ma anche la consegna corretta viene documentata con precisione. È un po' come una lettera raccomandata: Checkmk riceve una ricevuta dallo smarthost SMTP (server ricevente) che verifica che l'e-mail sia stata accettata, compreso un ID di posta.

9.3. Consegna sincrona per le e-mail HTML

Puoi selezionare e configurare la consegna tracciabile via SMTP per il metodo di notifica delle e-mail HTML inserendo lo smarthost (con nome e numero di porta) e i dati di accesso e il metodo di crittografia:

Notification rule with synchronous email delivery options.

Nella cronologia del servizio in questione, puoi quindi tracciare esattamente la consegna. Ecco un esempio in cui un servizio - a scopo di test - è stato impostato manualmente su CRIT. Lo screenshot qui sotto mostra le notifiche di questo servizio, che puoi visualizzare nella pagina dei dettagli del servizio con Service > Service Notifications:

List of accumulated notifications for a successful email delivery.

Qui vedrai i quattro singoli passaggi nella sequenza cronologica dal basso verso l'alto, come li abbiamo già presentati nel capitolo sulla cronologia delle notifiche. La differenza importante è che ora puoi vedere nella voce più in alto che l'e-mail è stata consegnata con successo allo smarthost e la sua risposta è success.

Puoi anche seguire i singoli passaggi nel file notify.log. Le righe seguenti appartengono all'ultimo passaggio e contengono la risposta del file server SMTP:

~/var/log/notify.log
2021-08-26 10:02:22,016 [20] [cmk.base.notify] Got spool file d3b417a5 (mysrv;CPU load) for local delivery via mail
2021-08-26 10:02:22,017 [20] [cmk.base.notify]      executing /omd/sites/mysite/share/check_mk/notifications/mail
2021-08-26 10:02:29,538 [20] [cmk.base.notify]      Output: success 250 - b'2.0.0 Ok: queued as 1BE667EE7D6'

Il Message-ID 1BE667EE7D6 apparirà nel file di log dello smarthost. In questo modo, se sei preoccupato, potrai verificare dove è arrivata l'e-mail. In ogni caso potrai dimostrare che, e quando, l'e-mail è stata inviata correttamente da Checkmk.

Ripetiamo il test di cui sopra, ma questa volta con una password falsamente configurata per il trasferimento SMTP allo smarthost. Qui puoi vedere in chiaro il messaggio di errore SMTP Error: authentication failed dallo smarthost:

List of accumulated notifications for a failed email delivery.

Cosa si può fare per le notifiche fallite? Anche in questo caso, la notifica via e-mail non sembra essere una buona soluzione, ma Checkmk mostra un chiaro avviso con sfondo rosso nella panoramica:

Display of failed notifications in the 'Overview' snap-in.

Qui puoi:

  • Cliccare sul testo …​ failed notifications per avere un elenco delle consegne non riuscite.

  • Cliccare sul simbolo per confermare questi messaggi e rimuovere l'avviso cliccando su Confirm nella panoramica che si apre.

Importante: Nota che l'invio diretto tramite SMTP in caso di errore può portare lo script di notifica ad essere eseguito per molto tempo e a causare un timeout. Per questo motivo ti consigliamo di utilizzare lo spooler di notifica e di selezionare un invio asincrono delle notifiche.

La condotta con errori ripetibili (come un timeout SMTP) può essere definita con Global settings > Notifications > Notification spooler configuration per metodo di notifica:

Global timer setting for a notification method.

Oltre a un timeout opzionale (il valore predefinito è di 1 minuto) e a un numero massimo di tentativi, si può anche definire se lo script può essere eseguito più volte in parallelo e quindi inviare più notifiche (Maximum concurrent executions). Se lo script di notifica è molto lento, l'esecuzione in parallelo può avere senso, ma lo script deve essere programmato in modo che le esecuzioni multiple avvengano in modo pulito (e, ad esempio, che lo script non riservi alcuni dati per sé).

Una consegna multipla e parallela tramite SMTP non presenta problemi, poiché il server di destinazione è in grado di gestire più connessioni parallele. Questo non è certamente il caso quando si consegna direttamente da SMS tramite un modem senza uno spooler aggiuntivo, e in questo caso è necessario attenersi all'impostazione 1.

9.4. SMS e altri metodi di notifica

Finora la consegna sincrona con messaggi di errore e tracciabilità è stata implementata solo per le e-mail HTML. Per sapere come restituire uno stato di errore in uno script di notifica scritto da te, consulta il capitolo sulla scrittura dei tuoi script.

10. Notifiche in sistemi distribuiti

In ambienti distribuiti, cioè con più di un'istanza Checkmk, si pone il problema di cosa fare con le notifiche generate da istanze remote. In questa situazione ci sono fondamentalmente due possibilità:

  1. Consegna locale

  2. Consegna centrale sul sito centrale (solo edizioni commerciali).

Informazioni dettagliate su questo argomento sono disponibili nell'articolo sul monitoraggio distribuito.

11. Script di notifica

11.1. Il principio

Le notifiche possono avvenire in modi diversi e individuali. Esempi tipici sono:

  • Trasferimento di notifiche a un ticket o a un sistema di notifica esterno.

  • L'invio di un SMS tramite vari servizi internet.

  • Chiamate telefoniche automatiche

  • Inoltro a un sistema di monitoraggio superiore, a ombrello.

Per questo motivo Checkmk offre un'interfaccia molto semplice che ti permette di scrivere i tuoi script di notifica, che possono essere scritti in qualsiasi linguaggio di programmazione supportato da Linux, anche se Shell, Perl e Python detengono insieme il 95% del "mercato".

Gli script standard inclusi in Checkmk si trovano in ~/share/check_mk/notifications. Questa directory è un componente 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 trovati automaticamente e resi disponibili per la selezione nelle regole di notifica.

Se desideri personalizzare uno script standard, è sufficiente copiarlo da ~/share/check_mk/notifications a ~/local/share/check_mk/notifications e apportare le modifiche nella copia. Se mantieni il nome originale, il tuo script verrà sostituito automaticamente alla versione standard e non sarà necessario apportare modifiche alle regole di notifica esistenti.

Altri script di esempio sono inclusi nel software all'indirizzo ~/share/doc/check_mk/treasures/notifications. Puoi utilizzarli come modelli per la personalizzazione. In genere la configurazione avviene direttamente nello script: nei commenti troverai suggerimenti in merito.

Nel caso di una notifica, lo script verrà richiamato con i permessi dell'utente dell'istanza. Nelle variabili d'ambiente(quelle che iniziano con NOTIFY_), riceverà tutte le informazioni sull'host/servizio interessato, l'evento di monitoraggio, i contatti da avvisare e i parametri specificati nella regola di notifica.

I testi che lo script di notifica scrive sullo standard output (con print, echo, ecc.) vengono visualizzati nel file di log del modulo di notifica ~/var/log/notify.log.

11.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 Funzione

0

Lo script è stato eseguito con successo.

1

Si è verificato un errore temporaneo. Dopo una breve attesa, l'esecuzione deve essere ripetuta fino al raggiungimento del numero massimo di tentativi configurato. Esempio: non è possibile stabilire una connessione HTTP con un servizio SMS.

2 e superiore

Si è verificato un errore finale. La notifica non verrà ritentata. Un errore di notifica verrà visualizzato nella GUI. L'errore verrà visualizzato nella cronologia dell'host o del 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 o del 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 sarà spiegato nel capitolo sulla consegna tracciabile via SMTP.

11.3. Un semplice script di esempio

Come esempio puoi creare uno script che scrive tutte le informazioni sulla notifica in un file. Il linguaggio di codifica è la shell Linux Bash:

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

env | grep NOTIFY_ | sort > $OMD_ROOT/tmp/foobar.out
echo "Successfully written $OMD_ROOT/tmp/foobar.out"
exit 0

Quindi rendi lo script eseguibile:

OMD[mysite]:~$ chmod +x local/share/check_mk/notifications/foobar

Ecco un paio di spiegazioni sullo script:

  • Nella prima riga c'è un #! e il percorso dell'interprete del linguaggio di script (qui /bin/bash).

  • Nella seconda riga, dopo il carattere di commento # c'è il titolo dello script. Di regola questo viene mostrato quando si seleziona il metodo di notifica.

  • Il comando env visualizza tutte le variabili d'ambiente ricevute dallo script.

  • Con grep NOTIFY_ le variabili di Checkmk verranno filtrate...

  • ... e ordinate alfabeticamente con sort.

  • > $OMD_ROOT/tmp/foobar.out scrive il risultato nel file ~/tmp/foobar.out all'interno della directory del sito.

  • Il file exit 0 sarebbe in realtà superfluo in questa posizione poiché la shell prende sempre il codice di uscita dell'ultimo comando. In questo caso si tratta di echo e va sempre a buon fine, ma è sempre meglio se è esplicito.

11.4. Testare lo 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 tutti i checkbox come quelli offerti, ad esempio, nel metodo HTML Email, saranno assenti. Invece puoi inserire un elenco di testi come parametri che possono essere disponibili come NOTIFY_PARAMETER_1, NOTIFY_PARAMETER_2, ecc. Per un test fornisci i parametri Fröhn, Klabuster e Feinbein:

Rule with selection of sample script as notification method.

Per fare un 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 l'esecuzione dello script, compresi 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 sui valori disponibili per il tuo script di notifica. 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

Si possono trovare anche i parametri:

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

11.5. Variabili d'ambiente

Nell'esempio precedente hai visto una serie di variabili d'ambiente che verranno passate allo script. Le variabili disponibili dipendono esattamente dal tipo di notifica, dalla versione e dall'edizione di Checkmk e dal nucleo di monitoraggio utilizzato(CMC o Nagios). Oltre al trucco del comando env, ci sono altri due modi per ottenere un elenco completo di tutte le variabili:

  • Modificando il livello di log per notify.log tramite Global settings > Notifications > Notification log level.

  • Per le notifiche di HTML Email c'è un checkbox Information to be displayed in the email body con l'opzione Complete variable list (for testing).

Di seguito è riportato un elenco delle variabili più importanti:

Variabile d'ambiente Significato

OMD_ROOT

Directory home del sito, ad es. /omd/sites/mysite.

OMD_SITE

Nome del sito, ad es. mysite.

NOTIFY_WHAT

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

NOTIFY_CONTACTNAME

Nome utente (login) del contatto.

NOTIFY_CONTACTEMAIL

L'indirizzo e-mail del contatto.

NOTIFY_CONTACTPAGER

Inserimento del campo Pager nel profilo utente del contatto. Poiché questo 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 nella visualizzazione predefinita 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 di host, ma è presente anche nelle notifiche di servizio.

NOTIFY_HOSTSTATE

Una delle parole: UP, DOWN o UNREACH

NOTIFY_NOTIFICATIONTYPE

Tipo di notifica come descritto nell'introduzione di questo articolo. Questo sarà espresso da una delle seguenti parole:
PROBLEM: Problema normale dell'host o del servizio
RECOVERY: L'host/il servizio è di nuovo UP / OK
ACKNOWLEDGEMENT (…​): Conferma di un problema
FLAPPINGSTART: L'host/servizio ha iniziato a irregolare
FLAPPINGSTOP:- L'irregolare è terminato
DOWNTIMESTART: Inizio di un tempo di manutenzione programmata
DOWNTIMEEND: Fine normale di un tempo di manutenzione programmata
DOWNTIMECANCELLED: Interruzione prematura di un tempo di manutenzione programmata
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 vuoti.

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 parole: OK, WARN, CRIT o UNKNOWN

11.6. Notifiche di massa

Se il tuo script deve supportare le notifiche di massa, dovrà essere preparato in modo particolare, poiché lo script deve inviare più notifiche contemporaneamente. Per questo motivo, anche l'invio tramite variabili d'ambiente non funziona in modo pratico.

Dai un nome allo script di notifica nella terza riga dell'intestazione, come indicato di seguito: il modulo di notifica invierà le notifiche attraverso lo standard input:

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

Attraverso lo standard input lo script riceverà blocchi di variabili. Ogni riga ha il modulo: NAME=VALUE. I blocchi sono separati da righe vuote. Il carattere ASCII con il codice 1 (\a) viene utilizzato per rappresentare le linee nuove all'interno del testo.

Il primo blocco contiene un elenco di variabili generali (es. parametri di chiamata). Ogni blocco successivo assembla le variabili in una notifica.

Il consiglio migliore è quello di provare tu stesso con un semplice test che scriva i dati completi su 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/notifiche/mybulk
#!/bin/bash
# My Bulk Notification
# Bulk: yes

cat > $OMD_ROOT/tmp/mybulktest.out

Prova lo script di notifica come descritto sopra e attiva anche il sito Notification Bulking nella regola di notifica.

11.7. Script di notifica in dotazione

Checkmk fornisce già una serie di script per la connessione a servizi di messaggistica istantanea, piattaforme di gestione degli incidenti e sistemi di ticket molto diffusi. Puoi scoprire come utilizzare questi script nei seguenti articoli:

12. Testare le notifiche con Fake check results

Per testare i metodi di notifica diversi dall'e-mail puoi semplicemente impostare manualmente un servizio OK su CRIT. Questo può essere fatto con il comando Fake check results, che puoi trovare nell'elenco dei servizi nel menu Commands. Se il comando non è visibile nell'elenco, clicca una volta sul pulsante Show more.

Dialog for manual state change.

Se tutte le condizioni di una delle tue regole di notifica sono soddisfatte, viene eseguito il metodo di notifica impostato per questa regola. Al prossimo controllo regolare il servizio dovrebbe tornare a OK, innescando così una nuova notifica, questa volta di recupero.

Tieni presente che durante questi test, modificando frequentemente il suo stato, dopo un po' di tempo il servizio entrerà nello stato di irregolare. I successivi cambiamenti di stato non faranno più scattare le notifiche. Nello snap-in del controllo master sulla barra laterale puoi disattivare temporaneamente il rilevamento dell'irregolare (Flap Detection).

In alternativa, puoi anche inviare un Custom notification, sempre tramite un comando:

Dialog for a custom notification.

Questa notifica generata è di tipo diverso e, a seconda delle regole di notifica, può comportarsi in modo diverso.

13. File e directory

13.1. Percorsi di Checkmk

Percorso del file Funzione

~/var/log/cmc.log

Il file di log del CMC. Se il debug delle notifiche è attivato, qui troverai informazioni precise sul perché 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 è importante soprattutto per le notifiche in ambienti distribuiti.

~/var/nagios/debug.log

Il file di log di debug di Nagios. Attiva 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 da parte dello spooler di notifica.

~/var/check_mk/notify/deferred/

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

~/var/check_mk/notify/corrupted/

I file di spool difettosi verranno spostati qui.

~/share/check_mk/notifications

Gli script di notifica sono forniti di serie con Checkmk. Non apportare modifiche qui.

~/local/share/check_mk/notifications

Luogo di archiviazione degli script di notifica personalizzati. Se desideri personalizzare uno script standard, copialo da ~/share/check_mk/notifications a qui, mantenendo il nome del file originale.

~/share/doc/check_mk/treasures/notifications

Altri script di notifica personalizzati che puoi utilizzare.

13.2. I 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 di seguito. La posizione esatta dei file di log dipende dalla tua distribuzione Linux.

Percorso Funzione

/var/log/mail.log

File di log del server SMTP in Debian e Ubuntu

/var/log/mail

File di log di SMTP-server in SUSE Linux Enterprise Server (SLES)

/var/log/maillog

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

In questa pagina