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

Le metriche sono i valori misurabili e calcolabili relativi agli host e ai servizi e vengono memorizzati internamente da Checkmk nei cosiddetti Database Round-Robin (RRD). Queste metriche vengono processate dal sistema integrato di grafici e visualizzate nell'interfaccia web di Checkmk in molti punti, 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 Raw. Per maggiori dettagli sull'argomento, consulta l'articolo Grafici.

Parallelamente al grafico integrato in Checkmk, puoi 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 scoprirai come impostare l'inoltro delle metriche a InfluxDB e Graphite in Checkmk.

2. Invio di metriche a InfluxDB

InfluxDB logo.

InfluxDB è un sistema di gestione di database (DBMS) open source per le serie temporali ed è attualmente la soluzione più popolare in questo segmento. A partire dalla versione V2.0, InfluxDB fornisce una nuova API unificata - l'API InfluxDB v2 - che può essere utilizzata per scrivere i dati della metrica nel database, oltre ad altre funzioni. Checkmk utilizza l'API InfluxDB v2 e ti offre la possibilità non solo di inviare le metriche da Checkmk a InfluxDB, ma anche di archiviarle in modo appropriato nella struttura esistente di InfluxDB. Utilizzando l'API, da un lato si semplifica la configurazione per l'invio dei dati delle metriche e dall'altro si prepara Checkmk a future estensioni.

Importante: la configurazione descritta in questo capitolo si applica solo alla connessione di un InfluxDB V2.0 (o successivo), poiché l'API di InfluxDB v2 è disponibile solo a partire da questa versione. Se utilizzi un InfluxDB <= V1.8, configuralo come descritto nel capitolo sulla connessione a Graphite, poiché InfluxDB supporta il protocollo carbon in Graphite fino alla V1.8.

2.1. Raccolta di informazioni

Prima di iniziare la configurazione in Checkmk, devi ottenere le seguenti informazioni sul sistema InfluxDB che vuoi connettere a Checkmk:

Parametro Descrizione

Nome host

Nome (o indirizzo IP) del server InfluxDB. L'inserimento del nome DNS è particolarmente importante se la connessione è criptata tramite HTTPS, poiché i certificati non vengono quasi mai rilasciati per indirizzi IP.

Numero di porta

Numero della porta TCP attraverso la quale è possibile raggiungere il server InfluxDB. La porta predefinita è 8086. Quando si inizia con influxd è possibile specificare un'altra porta con l'opzione --http-bind-address.

Protocollo

HTTP per connessioni non criptate o HTTPS per proteggere la connessione.

Organizzazione

In InfluxDB l'organizzazione è lo spazio di lavoro per più utenti. L'organizzazione iniziale viene richiesta durante la configurazione di InfluxDB. Altre organizzazioni possono essere create manualmente tramite la GUI di InfluxDB.

Secchi

InfluxDB archivia i dati della serie temporale in container, chiamati bucket. In particolare, per ogni bucket viene definito un periodo di conservazione. InfluxDB cancella automaticamente tutti i punti dati più vecchi di questo periodo.
Un bucket appartiene sempre a un'organizzazione. Il bucket iniziale viene definito insieme all'organizzazione durante la configurazione di InfluxDB. Altri bucket possono essere creati manualmente.

Token

La comunicazione tra Checkmk e InfluxDB avviene tramite l'API InfluxDB v2. InfluxDB utilizza i token API per autorizzare le richieste tramite API. Un token API appartiene a un utente specifico e identifica i permessi di 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) o con diritti di accesso selezionati a specifici bucket all'interno di un'organizzazione(Read/Write Token). Il token può essere copiato negli appunti per facilitarne l'incollaggio durante la configurazione di Checkmk. Il token utilizzato per connettersi al server Checkmk deve ovviamente avere i 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 realizza con due semplici operazioni.

2.2. Connessione di Checkmk a InfluxDB

Apri il menu di configurazione e attiva la modalità Mostra di più: solo in questo modo verrà visualizzata la voce di menu Setup > Exporter > InfluxDB connections. Selezionala per visualizzare l'elenco delle connessioni esistenti con InfluxDB. Poiché probabilmente non hai ancora configurato nulla, questo elenco sarà vuoto.

Una connessione è un prerequisito per l'invio dei dati, ma senza la regola di selezionare le informazioni sulla metrica, non verrà inviato alcun dato.

Quindi, per prima cosa crea una nuova connessione con Add connection:

The general properties of an InfluxDB connection.
ID, titolo e selezione del sito sono sufficienti per le proprietà generali.

In General properties, specifica l'ID interno e il titolo della connessione, come di consueto.

Se ci sono altri siti collegati al sito corrente, come nel caso di un monitoraggio distribuito, puoi restringere 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 metriche rimarranno nella colonna di sinistra.

Continuiamo poi nel box successivo con la voce InfluxDB Connection properties:

Setting the InfluxDB-specific connection properties.
Impostazione delle proprietà specifiche di InfluxDB

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:

List of InfluxDB connections.
Attiva, inattiva, con o senza regola? L'elenco delle connessioni mostra la configurazione

Nell'elenco delle connessioni, la colonna Enabled mostra informazioni importanti sullo stato della connessione. Non sorprenderti di vedere tre voci dell'elenco nella schermata precedente: per poter vedere tutti i simboli in azione, abbiamo aggiunto altre due connessioni all'elenco. Dalla prima colonna di Enabled puoi vedere se la connessione è abilitata o disabilitata. Nella seconda colonna puoi vedere se esiste già una regola per la connessione o meno.

Nessun dato sarà inviato attraverso una connessione finché non sarà associata a una regola che seleziona le informazioni sulla metrica. Questa regola si chiama Send metrics to InfluxDB. I simboli delle regole sono pulsanti e forniscono una scorciatoia per la creazione delle regole. Per una connessione con una regola, clicca per aprire la pagina di panoramica del set di regole, che evidenzia quale regola ha o avrebbe effetto per la connessione. Per una connessione senza regole, cliccando si accede direttamente alla pagina di creazione delle regole.

Nel capitolo successivo descriveremo in dettaglio cosa è possibile specificare in questa regola.

2.3. Selezionare le informazioni sulle metriche

Con una regola puoi determinare in Checkmk quali dati vengono inviati al server Checkmk e dove vengono archiviati.

Il set di regole Send metrics to InfluxDB si trova in Setup > Services > Service monitoring rules, è accessibile più rapidamente con la ricerca nel menu di configurazione e più velocemente facendo clic nell'elenco delle connessioni:

Rule to select metrics information to send via InfluxDB connection.
La selezione delle informazioni sulla metrica avviene per regola

Nel box Send metrics to InfluxDB, seleziona prima la connessione creata nella sezione precedente e poi specifica dove verranno archiviati i dati sul server InfluxDB. Qui, inserisci la seconda serie 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, cioè non puoi inviare le metriche a più bucket da utilizzare, ad esempio, da organizzazioni diverse.

Qui di seguito puoi selezionare i dati delle metriche che verranno inviati da Checkmk al server Checkmk.Metrics of service è già selezionato per impostazione predefinita e abilita l'invio delle metriche. Selezionando il checkbox Service state lo stato del servizio verrà inviato come metrica a sé stante.

Dopo aver abilitato Additional values per metric puoi aggiungere una serie di meta-dati alle metriche a scopo di visualizzazione, ad es. State of service e Thresholds. Nota che Unit attualmente funziona solo per le metriche dei check attivi, se questi lo supportano. Il motivo è che solo i check attivi hanno l'opzione di fornire l'unità e il CMC non ha accesso agli altri.

Nell'ultimo menu di selezione, Tags to use, vengono aggiunti alle metriche i metadati come i tag dell'host o le etichette, che vengono utilizzati principalmente per il filtraggio e sono stati ottimizzati per questo scopo. Host name e Service name selezionati per impostazione predefinita sono voci obbligatorie che non possono essere deselezionate.

In InfluxDB, le Additional values per metric sono 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 di Checkmk sono arrivate al server Checkmk, possono essere visualizzate nella GUI di InfluxDB. A titolo di esempio, la seguente immagine mostra il grafico della metrica total_used, che indica la quantità di memoria utilizzata:

Display of the used memory metric in the InfluxDB GUI.
Nella GUI di InfluxDB, sotto il grafico sono presenti degli elenchi per la selezione e il filtraggio.

Nota: questa metrica si trova in Checkmk al servizio Memory sotto la metrica denominata Total used memory.

3. Invio delle metriche a Graphite

Graphite-Logo.

Graphite è un noto DBMS open source per l'archiviazione, il recupero, la condivisione e la visualizzazione dei dati della serie temporale. Graphite è composto dal demone Carbon, che attende i dati e li archivia in un database, da cui vengono elaborati e visualizzati come grafici tramite l'applicazione web Graphite. Puoi usare Checkmk per inoltrare le metriche nel protocollo plaintext al demone Carbon di Graphite, che attende i dati da questo protocollo sulla porta 2003. Nel protocollo plaintext, un record è strutturato in modo molto semplice nel formato <metricpath> <value> <timestamp>, dove <metricpath> è un identificatore unico separato da periodi.

A differenza della connessione InfluxDB, per impostazione predefinita tutti i dati delle metriche vengono inviati non appena viene abilitata la connessione a Graphite. Se non vuoi che ciò avvenga, devi selezionare le metriche per regola prima di abilitare la connessione e poi abilitare sia le regole che la connessione insieme.

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 per le metriche host e di servizio. Qui mostriamo la configurazione per le metriche di servizio. Poi imposta le metriche host allo stesso modo.

Puoi utilizzare la regola Send service metrics to Graphite per selezionare i valori da inviare con le metriche:

Rule for selecting the service metrics to send over the Graphite connection.
Allo stesso modo con Graphite, la selezione delle informazioni sulle metriche avviene per regola.

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

List of rules for sending over the Graphite connection.
Mettendo le due regole in questa sequenza, verranno inviate solo le metriche dei servizi dell'host myhost.

3.2. Connessione di Checkmk con Graphite

La connessione al server Graphite va impostata in Setup > General > Global Settings > Monitoring Core > Send metrics to Graphite. Clicca qui su Add new Graphite connection:

The properties for a Graphite connection.
La connessione a Graphite verrà creata in Global Settings.

Oltre agli ovvi dettagli del server Checkmk (il nome e il numero della porta per il protocollo Carbon plaintext), puoi utilizzare Optional variable prefix per configurare un prefisso da aggiungere a ciascun nome host, ad es. per imporre nomi unici. Checkmk imposta il percorso metrico per il protocollo plaintext su <host>.<service>.<metric>.

L'attivazione delle modifiche alle regole e alla connessione completa la configurazione di Graphite.

3.3. Visualizzare le metriche in Graphite

Nella GUI di Graphite puoi anche visualizzare le metriche ricevute da Checkmk. L'immagine seguente mostra il grafico della metrica total_used che abbiamo già mostrato come esempio nella GUI di InfluxDB:

Displaying the metric for memory used in the Graphite GUI.
Nell'interfaccia grafica di Graphite la selezione viene effettuata in un pannello di navigazione a sinistra del grafico.

4. Diagnosi degli errori

Se le metriche non arrivano dove ti aspetti, puoi trovare le informazioni diagnostiche della tua istanza Checkmk nel file ~/var/log/cmc.log, il file di log di Checkmk Micro Core.

L'esempio seguente mostra i messaggi se il bucket configurato in Checkmk non esiste sul server Checkmk:

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

Il seguente esempio mostra i messaggi ricevuti quando la connessione al server Graphite fallisce:

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

In queste situazioni, il Checkmk Micro Core continua a tentare la connessione da solo.

Importante: Per motivi di prestazioni, le metriche generate durante un periodo in cui non c'è connessione con il sistema di destinazione non vengono cache, ma vengono perse (o sono disponibili solo negli RRD di Checkmk).

Nota: se i messaggi di log non sono abbastanza significativi per te, puoi modificare i valori predefiniti per il livello di log in Setup > General > Global Settings > Monitoring Core > Logging of the core. Qui puoi trovare le voci relative al log di InfluxDB (InfluxDB processing) e di Graphite (Carbon connections).

In questa pagina