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
Le metriche sono i valori misurabili e calcolabili relativi agli host e ai servizi e vengono memorizzate internamente da Checkmk nei cosiddetti Round-Robin Databases (RRD).
Queste metriche vengono elaborate dal sistema di grafici integrato e visualizzate in diversi punti dell'interfaccia web di Checkmk, ad esempio come Perf-O-Meter nell'elenco dei servizi o come grafici che puoi visualizzare dall'elenco dei servizi utilizzando l'icona del grafico "
".
L'interfaccia per la visualizzazione delle metriche è basata su HTML5 ed è identica nelle edizioni commerciali e in Checkmk Community.
Consulta l'articolo sulla creazione di grafici per tutti i dettagli su questo argomento.
Parallelamente alla creazione di grafici integrata in Checkmk, puoi anche collegarti a database di metriche esterni e inviare le metriche a InfluxDB o Graphite.
Poiché l'inoltro viene effettuato dal Checkmk Micro Core (CMC), questa funzione è disponibile solo nelle edizioni commerciali.
In questo articolo imparerai come configurare l'inoltro delle metriche a InfluxDB e Graphite in Checkmk.
2. Invio delle metriche a InfluxDB

InfluxDB è un sistema di gestione di database (DBMS) open source per serie temporali ed è attualmente la soluzione più diffusa in questo settore. InfluxDB offre un'API unificata con l'API InfluxDB v2, che può essere utilizzata, tra le altre funzioni, per scrivere i dati delle metriche nel database. Checkmk utilizza l’API InfluxDB v2 e ti offre la possibilità non solo di inviare le metriche da Checkmk a InfluxDB, ma anche di memorizzarle in modo appropriato nella struttura esistente di InfluxDB. Utilizzando l’API, da un lato la configurazione per l’invio dei dati delle metriche viene semplificata e, dall’altro, Checkmk è pronto per future estensioni.
La configurazione descritta in questo capitolo si applica solo alla connessione di un InfluxDB con l'API InfluxDB v2. Checkmk attualmente non supporta l'API InfluxDB v3. Se stai utilizzando un InfluxDB <= V1.8, configuralo invece come descritto nel capitolo sulla connessione a Graphite, poiché InfluxDB supporta il protocollo Carbon in Graphite fino alla versione V1.8. |
2.1. Raccolta delle informazioni
Prima di iniziare la configurazione in Checkmk, dovresti procurarti le seguenti informazioni relative al sistema di destinazione InfluxDB che desideri collegare a Checkmk:
| Parametro | Descrizione |
|---|---|
Nome host |
Nome (o indirizzo IP) del server InfluxDB. Inserire il nome DNS è particolarmente importante se la connessione è crittografata tramite HTTPS, poiché i certificati non vengono quasi mai emessi per gli indirizzi IP. |
Numero di porta |
Numero della porta TCP attraverso la quale è possibile raggiungere il server InfluxDB.
La porta predefinita è |
Protocollo |
|
Organizzazione |
In InfluxDB l'organizzazione è l'area di lavoro per più utenti. L'organizzazione iniziale viene richiesta durante la configurazione di InfluxDB. È possibile creare ulteriori organizzazioni manualmente tramite la GUI di InfluxDB. |
Bucket |
InfluxDB memorizza i dati delle serie temporali in contenitori, chiamati bucket
.
In particolare, per ogni bucket viene definito un periodo di conservazione.
InfluxDB elimina automaticamente tutti i dati più vecchi di questo periodo. |
Token |
La comunicazione tra Checkmk e InfluxDB avviene tramite l'API InfluxDB v2. InfluxDB utilizza token API per autorizzare le richieste tramite API. Un token API appartiene a un utente specifico e identifica i permessi InfluxDB all'interno dell'organizzazione dell'utente. I token vengono creati tramite la GUI di InfluxDB, con accesso completo in lettura e scrittura a tutte le risorse all’interno di un’organizzazione (All Access Token) oppure con diritti di accesso selezionati a bucket specifici all’interno di un’organizzazione (Read/Write Token). Un token può essere copiato negli appunti, rendendo più facile incollarlo in seguito durante la configurazione di Checkmk. Il token utilizzato per connettersi al server Checkmk deve ovviamente avere permessi di lettura e scrittura per il bucket che si sta configurando in Checkmk. |
Per maggiori dettagli, consulta la documentazione di InfluxDB.
Con queste informazioni a portata di mano, la configurazione in Checkmk si completa con sole due semplici operazioni.
2.2. Collegamento di Checkmk a InfluxDB
Apri il menu Setup e attiva la modalità Show more — solo così verrà visualizzata la voce di menu Setup > Exporter > InfluxDB connections. Selezionala per visualizzare l'elenco delle connessioni InfluxDB esistenti. Dato che probabilmente non hai ancora configurato nulla qui, questo elenco sarà vuoto.
Una connessione è un prerequisito per l'invio dei dati. Tuttavia, senza la regola per selezionare le informazioni sulle metriche, non verrà inviato alcun dato.
Quindi crea prima una nuova connessione con
Add connection:

In General properties, specifichi l'ID interno e il titolo per la connessione, come al solito.
Se ci sono altri siti collegati al sito corrente, come nel caso di un monitoraggio distribuito, puoi limitare la connessione a siti specifici in Site restriction. Per farlo, sposta prima la voce All sites nella colonna di sinistra e poi sposta i siti che devono ricevere le metriche dalla colonna di sinistra a quella di destra Selected. I siti che non riceveranno le metriche rimangono quindi nella colonna di sinistra.
Si prosegue quindi nella casella successiva con l'InfluxDB Connection properties:

Qui inserisci la prima serie di valori dei parametri che hai compilato nella sezione precedente.
Salva la connessione con "Save" e tornerai all'elenco delle connessioni:

Nell'elenco delle connessioni, la colonna "Enabled" mostra informazioni importanti sullo stato della connessione.
Non stupirti se vedi tre voci nell'elenco nella schermata qui sopra:
Per poter vedere tutti i simboli in azione, abbiamo aggiunto altre due connessioni all'elenco.
Dalla prima colonna in Enabled puoi vedere se la connessione è
abilitata o
disabilitata.
Nella seconda colonna puoi vedere se esiste già una regola per
la connessione o
no.
Nessun dato verrà inviato tramite una connessione finché questa non sarà stata associata a una regola che seleziona le informazioni sulle metriche.
Questa regola si chiama Send metrics to InfluxDB.
Le icone delle regole sono pulsanti e forniscono una scorciatoia per la creazione delle regole.
Per una connessione con una regola, clicca su
per aprire la pagina di panoramica del set di regole, che evidenzia quale regola è o sarebbe in vigore per la connessione.
Per una connessione senza regole, cliccando su
si accede direttamente alla pagina di creazione delle regole.
Nel capitolo seguente descriveremo in dettaglio cosa è possibile specificare in questa regola.
2.3. Selezione delle informazioni sulle metriche
Con una regola si determina in Checkmk quali dati vengono inviati al server InfluxDB e dove vengono memorizzati.
Il set di regole "Send metrics to InfluxDB" si trova in "Setup > Services > Service monitoring rules", è accessibile più rapidamente tramite la ricerca nel menu "Setup" e, ancora più velocemente, cliccando nell'elenco delle connessioni:

Nella casella "Send metrics to InfluxDB", seleziona prima la connessione creata nella sezione precedente e poi specifica dove i dati saranno archiviati sul server InfluxDB. Qui, inserisci il secondo set di informazioni raccolte per il server InfluxDB. Usa "Organization" per decidere quali utenti ricevono i dati e "Bucket" per decidere per quanto tempo le metriche vengono conservate. Non è possibile effettuare una selezione multipla, ovvero non puoi inviare le metriche a più bucket per l'utilizzo da parte di diverse organizzazioni, ad esempio.
Qui sotto selezioni i dati delle metriche che verranno inviati da Checkmk al server InfluxDB. L'opzione " Metrics of service" è già selezionata di default e abilita l'invio delle metriche. Spuntando la casella "Service state" invierai lo stato del servizio come metrica a sé stante.
Dopo aver abilitato "Additional values per metric", puoi aggiungere una serie di metadati alle metriche a scopo di visualizzazione, ad esempio "State of service" e "Thresholds". Tieni presente che "Unit" attualmente funziona solo per le metriche provenienti da controlli attivi, se questi lo supportano. Il motivo è che solo i controlli attivi hanno un'opzione per fornire l'unità e il CMC non ha accesso agli altri.
Nell'ultimo menu di selezione, "Tags to use", ai dati vengono aggiunti metadati come tag o etichette dell'host, che servono principalmente per il filtraggio e sono stati ottimizzati proprio per questo scopo. I campi "Host name" e "Service name", selezionati di default, sono voci obbligatorie che non possono essere deselezionate.
In InfluxDB, le Additional values per metric vengono memorizzate come campi e le Tags to use come tag.
Infine, attiva le modifiche per creare la connessione e creare le regole. In caso di problemi con la trasmissione delle metriche, consulta le informazioni sulla diagnosi degli errori riportate di seguito.
2.4. Visualizzazione delle metriche in InfluxDB
Una volta che le metriche provenienti da Checkmk sono arrivate sul server InfluxDB, possono essere visualizzate nell'interfaccia grafica di InfluxDB.
Ad esempio, l'immagine seguente mostra il grafico della metrica total_used, che indica la quantità di memoria utilizzata:

Nota: questa metrica si trova in Checkmk nel servizio Memory sotto la metrica denominata Total used memory.
3. Invio delle metriche a Graphite

Graphite è anche un noto DBMS open source per serie temporali, utilizzato per archiviare, recuperare, condividere e visualizzare le metriche.
Graphite è costituito dal daemon Carbon, che attende i dati e li archivia in un database, da dove vengono elaborati e visualizzati sotto forma di grafici tramite l’applicazione web di Graphite.
Puoi usare Checkmk per inoltrare le metriche nel protocollo plaintext al daemon Carbon di Graphite, che attende i dati da questo protocollo sulla porta 2003.
Nel protocollo plaintext, un record ha una struttura molto semplice nel formato <metricpath> <value> <timestamp>, dove <metricpath> è un identificatore univoco separato da punti.
A differenza della connessione InfluxDB, per impostazione predefinita tutti i dati delle metriche vengono inviati non appena viene abilitata una connessione Graphite. Se non vuoi che ciò avvenga, devi selezionare le metriche tramite regola prima di abilitare la connessione, quindi abilitare sia le regole che la connessione contemporaneamente.
3.1. Selezione delle informazioni sulle metriche
In Checkmk, alla voce "Setup > Services > Service monitoring rules", troverai i due set di regole "Send host metrics to Graphite" e "Send service metrics to Graphite". La configurazione viene eseguita allo stesso modo sia per le metriche host che per quelle di servizio. Qui mostriamo la configurazione per le metriche di servizio. Puoi quindi configurare le metriche host allo stesso modo.
Puoi utilizzare la regola "Send service metrics to Graphite" per selezionare i valori da inviare con le metriche:

In secondo luogo, puoi limitare l'invio a determinati host e servizi nella casella "Conditions". Poiché senza una regola restrittiva verranno inviati tutti i dati, si consiglia di creare prima una regola che disabiliti l'invio a livello globale deselezionando tutte le caselle di controllo mostrate nella schermata sopra. Successivamente, crea una regola specifica con le informazioni sulle metriche desiderate per gli host e i servizi le cui metriche devono essere inviate al server Graphite. Metti la regola specifica prima della regola globale:

myhost
3.2. Collegamento di Checkmk con Graphite
Configuri la connessione al server Graphite in Setup > General > Global Settings > Monitoring Core > Send metrics to Graphite. Clicca lì su Add new Graphite connection:

Oltre alle ovvie informazioni sul server Graphite (il nome e il numero della porta per il protocollo Carbon in chiaro), puoi anche usare Optional variable prefix per configurare un prefisso da aggiungere a ogni nome host, ad esempio per garantire nomi univoci.
Checkmk imposta il percorso della metrica per il protocollo in chiaro su <host>.<service>.<metric>.
Un comando "activate changes" per le regole e la connessione completa la configurazione di Graphite.
3.3. Visualizzazione delle metriche in Graphite
Nella GUI di Graphite puoi anche visualizzare le metriche ricevute da Checkmk.
L'immagine seguente mostra il grafico per la metrica total_used che abbiamo già mostrato sopra come esempio nella GUI di InfluxDB:

4. Diagnosi degli errori
Se le metriche non arrivano dove ti aspetti, puoi trovare le informazioni diagnostiche relative al tuo sito nel file ~/var/log/cmc.log — il file di log di Checkmk Micro Core.
L'esempio seguente mostra i messaggi che compaiono se il bucket configurato in Checkmk non esiste sul server InfluxDB:
2022-01-10 11:41:35 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully initiated connection
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully connected
2022-01-10 11:41:36 [3] [influxdb https://myinfluxdb.example.com:8086] POST [404] {"code": "not found", "message": "bucket \"my_bucket\" not found"}
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Closing connectionL'esempio seguente mostra i messaggi ricevuti quando la connessione al server Graphite fallisce:
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Successfully initiated connection
2021-12-15 17:33:33 [4] [carbon 10.0.0.5:2003] Connection failed: Connection refused
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Closing connectionIn queste situazioni, Checkmk Micro Core continua a provare a connettersi autonomamente.
Importante: per motivi di prestazioni, le metriche generate in un momento in cui non c'è connessione al sistema di destinazione non vengono memorizzate nella cache, ma vanno perse (o sono poi disponibili solo negli RRD di Checkmk).
Nota: se i messaggi di log non sono abbastanza chiari per te, puoi modificare i valori predefiniti per il livello di log in Setup > General > Global Settings > Monitoring Core > Logging of the core. Qui trovi le voci per la registrazione di InfluxDB (InfluxDB processing) e per Graphite (Carbon connections).
