![]() |
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
Per i controlli che misurano i valori delle prestazioni, è spesso difficile impostare le soglie corrette. Mentre valori troppo bassi creano stati WARN o CRIT che indicano solo apparentemente dei problemi, impostando valori troppo alti si lascia lo stato di monitoraggio OK, con il risultato di non vedere i problemi.
Prendiamo come esempio il servizio CPU load su un server Linux (o, in modo simile, Processor Queue su un host Windows): potresti avere un server che è inattivo per la maggior parte del tempo, ma regolarmente per alcuni brevi periodi di tempo ogni giorno, tranne il sabato e la domenica, dalle 0:00 alle 7:00 circa del mattino, su questo server vengono eseguite alcune richieste di backup di grandi dimensioni. Durante questo periodo di tempo, un utilizzo della CPU pari a 10 (con 20 core) è del tutto normale. Durante il resto del tempo, anche un carico di 3 potrebbe essere sospettosamente alto.
In Checkmk hai diverse possibilità per implementare questo esempio. Una di queste è quella di definire prima i periodi di tempo con i vari workload e poi impostare valori di soglia specifici per questi periodi. Nel nostro esempio, questo significa prima definire un nuovo periodo di tempo per il periodo di servizio ad alto carico (dal lunedì al venerdì dalle 0:00 alle 7:00). Poi puoi specificare una regola per il servizio (CPU load o Processor Queue). Seleziona questo nuovo periodo di tempo e imposta valori di soglia diversi (più alti) per esso.
L'utilizzo di un periodo di tempo ha il vantaggio che è sempre facile capire perché uno stato WARN/CRIT si è verificato in un determinato momento. Tuttavia, il collegamento manuale dei valori di soglia ai periodi di tempo è poco flessibile e a volte semplicemente troppo complicato.
Se utilizzi una delle edizioni commerciali, c'è un altro modo per risolvere questo problema: si tratta del cosiddetto monitoraggio predittivo, che consiste nel valutare i dati per ricavare una previsione sul loro comportamento futuro.
Una volta impostata, la previsione non rimane statica, ma si adatta alla realtà che cambia nel tempo: la previsionedi oggi per dopodomani non rimarrà invariata, perché i valori reali di domani saranno stati inclusi per dopodomani. Senza andare in giro per il tempo (estenuante!), il processo può essere espresso anche in questo modo: Checkmk impara continuamente. Poiché i valori di soglia per gli stati WARN/CRIT sono sempre impostati rispetto ai valori di previsione, anche i valori di soglia imparano insieme alla previsione.
2. Implementare il monitoraggio predittivo
2.1. Dal nome del plug-in al parametro di previsione
Un'intera gamma di plug-in Checkmk supporta il monitoraggio predittivo. Di seguito troverai alcuni esempi importanti:
Le impostazioni per il monitoraggio predittivo si trovano nello stesso punto in cui si impostano le soglie per un servizio, dove troverai la selezione Predictive Levels (only on CMC), se il controllo in questione lo supporta.
2.2. Creazione di una regola per il monitoraggio predittivo
Per il servizio CPU load sull'host Linux del nostro esempio, puoi creare una nuova regola con il set di regole CPU load (not utilization!) sotto Service monitoring rules, che puoi trovare più rapidamente cercando nel menu di configurazione.
Nella sezione Value troverai il parametro del livello del servizio per il quale potrai selezionare il valore Predictive Levels (only on CMC):

2.3. Selezionare i valori di riferimento passati
Dopo aver selezionato Predictive Levels (only on CMC) vengono visualizzati i parametri, di cui presenteremo i primi due in modo più dettagliato:

Con Base prediction on definisci la periodicità in cui è prevista la ripetizione dei dati misurati (mensile, settimanale, giornaliera o oraria):
Day of the month: I valori misurati di ogni giorno del mese vengono confrontati tra loro, ad esempio il 1°, il 2°, il 3°, ecc. di ogni mese.
Day of the week: Il confronto si basa sui giorni della settimana, cioè viene fatta una previsione diversa per ogni giorno della settimana (lunedì, martedì, mercoledì, ecc.). Questa è solitamente l'impostazione corretta.
Hour of the day: Vengono confrontate le singole ore di ogni giorno, cioè la previsione viene ripetuta ogni giorno.
Minute of the hour: Il confronto al minuto e la ripetizione oraria sono solitamente utili solo per testare una previsione.
Nel parametro successivo Time horizon puoi inserire fino a quanti giorni nel passato Checkmk deve valutare i dati di misurazione. Checkmk accede ai dati storici archiviati nei file RRD. Sebbene i dati di misurazione nei file RRD siano archiviati per 4 anni, non ha senso risalire troppo indietro nel tempo: da un lato, i valori tipici del passato recente possono essere diversi da quelli del passato più lontano.
D'altra parte, più si va indietro nel tempo, meno dati misurati per unità di tempo si possono confrontare. Questo perché per default Checkmk comprime i dati misurati disponibili da ogni minuto nei file RRD in tre fasi per risparmiare spazio: dopo 2, 10 e 90 giorni. La compressione significa che il minimo, il massimo e la media vengono calcolati da più dati misurati e questi dati calcolati sostituiscono i dati misurati originariamente. Se i dati misurati degli ultimi due giorni sono disponibili nella risoluzione completa di 1 minuto, la risoluzione è di 5 minuti dopo 2 giorni, 30 minuti dopo 10 giorni e 6 ore dopo 90 giorni. Se Checkmk accede ai dati storici per il monitoraggio predittivo, viene sempre preso il massimo dei tre valori archiviati.
Per il nostro server di esempio, con un carico di lavoro elevato dal lunedì al venerdì sera, è consigliabile selezionare il periodo di riferimento settimanale e un intervallo di tempo di riferimento di (massimo) 90 giorni. 90 giorni è un compromesso accettabile, poiché da un lato questo intervallo contiene un numero sufficiente di giorni di confronto, mentre dall'altro i dati di misurazione sono ancora disponibili con una risoluzione di 30 minuti - a condizione che i valori predefiniti non siano stati modificati.
Seleziona come Base prediction on la voce Day of the week e inserisci come Time horizon 90
come mostra l'immagine qui sopra.
Impostando il periodo di riferimento settimanale per un intervallo di 90 giorni nel passato, Checkmk dispone delle informazioni necessarie per calcolare la curva di riferimento. Ciò comporta la valutazione di ogni lunedì del periodo di tempo (per 90 giorni ci sono 12 lunedì), il confronto del valore misurato di ogni lunedì con i valori misurati negli altri lunedì alla stessa ora e il calcolo della media. Dopo il lunedì, Checkmk gestisce allo stesso modo gli altri giorni della settimana dal martedì alla domenica. La curva di riferimento così calcolata per il passato viene quindi aggiornata e diventa la curva di riferimento proiettata per il futuro.
![]() |
I valori utilizzati per calcolare la media del periodo di riferimento potrebbero essere già stati calcolati (cioè non misurati), a seconda della risoluzione dei dati storici contenuti nei file RRD. |
La curva di riferimento calcolata da Checkmk sulla base dei due parametri definiti finora (periodo di riferimento e periodo di tempo) è disegnata come una linea nera nell'immagine seguente:

Come anteprima, questa immagine mostra il grafico di previsione, che potrai visualizzare una volta completata la configurazione. Oltre alla curva di riferimento nera, i valori attuali sono visualizzati come una linea blu - se sono disponibili nel periodo di tempo visualizzato.
Ciò che manca per completare l'impostazione sono le definizioni dei valori di soglia per gli stati WARN e CRIT, che sono contrassegnati nel grafico con i colori di sfondo giallo e rosso. La sezione seguente tratta la definizione di queste soglie.
2.4. Definizione delle soglie per la previsione
Definisci i valori di threshold per WARN e CRIT in base ai valori di previsione mostrati nella curva di riferimento.

Per illustrare l'effetto dei diversi valori dei parametri utilizzati per definire le soglie, osserviamo da vicino un singolo valore della curva di riferimento. Assumiamo che il valore previsto del servizio CPU load sia 10 alle 3:30 del venerdì.
Per le soglie superiori esiste il parametro Dynamic levels — upper bound, mentre per le soglie inferioriDynamic levels — lower bound. Per entrambi i parametri sono disponibili tre scelte, descritte nelle tre sezioni seguenti.
Differenza assoluta dalla previsione
Con questo valore le soglie vengono calcolate aumentando o diminuendo il valore previsto di un valore assoluto fisso. Esempio: Warning at 2.00
farà sì che venga visualizzato un avviso se il valore è superiore a 12 e inferiore a 8.
Differenza relativa dalla previsione
Con questo valore le soglie vengono calcolate aumentando o diminuendo il valore previsto di una percentuale. Esempio: Warning at 10.0
% farà sì che venga visualizzato un avviso se il valore è superiore a 11 e inferiore a 9.
In relazione alla deviazione standard
Con questo valore le soglie vengono calcolate aumentando o diminuendo il valore previsto di un multiplo della deviazione standard. La deviazione standard indica quanto differiscono i valori in un periodo di riferimento (es. il venerdì alle 3:30 del mattino).
Con questa opzione il calcolo dei valori di soglia non è così facile da prevedere, perché Checkmk calcola la deviazione standard internamente da tutti i valori misurati del periodo di riferimento. Per illustrare l'effetto, abbiamo bisogno di ulteriori informazioni sulle 12 misurazioni del periodo di riferimento il venerdì alle 3:30 del mattino: supponiamo che 10 misurazioni siano uguali a 10, una a 11 e una a 9. Le 12 misurazioni hanno quindi un valore medio di 10 (che corrisponde al valore previsto), una varianza di circa 0,167 e una deviazione standard di circa 0,41. (Risparmiamo qui i dettagli del calcolo, ma puoi fare riferimento a varie pagine di statistica su internet).
Esempio: Warning at 1.00
come multiplo della deviazione standard farà sì che venga visualizzato un avviso se il valore è superiore a 10,41 e inferiore a 9,59.
Per evitare stati WARN/CRIT indesiderati, non vengono applicate soglie se la deviazione standard è indefinita (es. perché c'è un solo valore misurato nel periodo di riferimento) o è pari a zero (se tutti i valori misurati sono identici).
In generale, vale la seguente regola: più i valori del passato sono coerenti, minore è la deviazione standard e più rigorosa è la previsione. Questa opzione è quindi utile per definire soglie più ristrette per un periodo di riferimento con valori stabili e uniformi.
Valori minimi di soglia superiore
Infine, con Limit for upper bound dynamic levels hai la possibilità di impostare dei valori minimi assoluti per le soglie superiori. Questo ti permette di evitare stati WARN/CRIT indesiderati nei momenti in cui i valori previsti sono molto bassi.
Esempio: Un Warning level di 2.00
farà sì che venga visualizzato un avviso solo se il valore è superiore a 2, anche se la soglia superiore per un avviso è 1,5.
Grafico di previsione con valori di soglia
Gli effetti descritti come esempio per un valore vengono calcolati da Checkmk per tutti i valori della curva di riferimento. Puoi vedere il risultato nel grafico di previsione, che verrà descritto in modo più dettagliato nel prossimo capitolo. Il grafico mostra le curve per i valori di soglia superiori e inferiori sopra e sotto la curva di riferimento. Le aree per WARN sono colorate in giallo e per CRIT in rosso.
Dovresti controllare attentamente gli intervalli per WARN e CRIT nel grafico di previsione, soprattutto se le soglie sono calcolate dalla deviazione standard, poiché i valori alla base della deviazione standard non possono essere letti direttamente dall'interfaccia utente di Checkmk. Controllando e, se necessario, regolando i livelli, puoi evitare che il servizio abbia involontariamente gli stati WARN o CRIT troppo spesso.
Questo completa l'implementazione del monitoraggio predittivo. Nel prossimo capitolo scoprirai come osservare l'impostazione nel monitoraggio e come visualizzare il grafico della previsione.
3. Analizzare le prognosi
Se hai impostato il monitoraggio predittivo per un servizio, attiva le modifiche e una volta che Checkmk avrà eseguito un controllo per questo servizio, apparirà la nuova icona nell'elenco dei servizi:

![]() |
Soprattutto dopo la configurazione iniziale di un servizio, questo simbolo potrebbe mancare perché non sono disponibili dati sufficienti per la previsione configurata. In questo caso, nella colonna Summary viene visualizzato un messaggio del tipo |
Cliccando sull'elenco dei servizi, verrà visualizzata una rappresentazione grafica dell'attuale periodo di tempo di previsione (grafico di previsione):

Nel grafico di previsione vedrai la curva di riferimento come una linea nera, i valori attuali come una linea blu e gli intervalli per gli stati OK in bianco, WARN in giallo e CRIT con uno sfondo rosso.
Il periodo di tempo visualizzato si basa sul periodo di riferimento selezionato. Ad esempio, se hai un periodo settimanale, puoi visualizzare i singoli giorni della settimana e usare l'elenco a discesa sopra il grafico per passare a un altro giorno. Con la voce speciale dell'elenco Everyday il grafico ti mostrerà i valori medi di tutti i giorni per i quali sono disponibili i dati.
Nel grafico di esempio, è possibile notare l'elevato utilizzo della capacità durante la notte e il basso utilizzo della capacità durante il giorno. Dalle ore 0:00 alle ore 04:00, i valori attuali (linea blu) sono inferiori alla curva di riferimento della previsione (linea nera), tanto da far sì che i valori delle soglie più basse vengano sottovalutati a intermittenza, innescando gli stati WARN/CRIT. È visibile anche l'intervallo tra le ore 08:30 e le ore 23:30, quando la linea blu si trova costantemente nell'intervallo CRIT più basso. Questo stato potrebbe essere evitato in futuro con valori più alti per le soglie più basse.
Infine, il grafico mostra che le soglie superiori si basano sulla deviazione standard, perché tra le 05:00 e le 07:30 le soglie superiori tendono ad aumentare mentre i valori della curva di riferimento diminuiscono. Questo comportamento può essere spiegato solo dalla deviazione standard, poiché le altre due opzioni (valore assoluto e percentuale) avrebbero portato a un aggiustamento dei valori delle soglie nella direzione della curva di riferimento.
![]() |
Come per la configurazione iniziale, qualsiasi modifica al monitoraggio predittivo diventerà effettiva solo dopo un nuovo controllo del servizio. Non è necessario attendere il prossimo controllo regolare, ma puoi attivarlo manualmente dall'elenco dei servizi con l'icona e la voce di menu Reschedule 'Check_MK' service. |