The functionality presented here is a technical preview, i.e. a preview of a new feature that will be subject to development and expansion until further notice. During this phase, it is possible that functionality will not only be added, but also modified in such a way that existing configurations will become obsolete and you will have to recreate them. We ask for your understanding in this matter. |
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. |
La funzionalità qui presentata è una technical preview, ovvero un'anteprima di una nuova funzionalità che sarà soggetta a sviluppo e ampliamento fino a nuovo avviso. Durante questa fase, è possibile che la funzionalità non solo venga ampliata, ma anche modificata in modo tale che le configurazioni esistenti diventino obsolete e tu debba ricrearle. Ti chiediamo la tua comprensione in merito. |
1. Introduzione
A partire da Checkmk 2.4.0 puoi ricevere le metriche OpenTelemetry in
Checkmk Ultimate ed elaborarle nel monitoraggio.
A questo scopo, Checkmk include un Collettore OpenTelemetry.
Questo collector supporta i protocolli di trasporto gRPC e HTTP(S) come destinatari in una configurazione push.
Come scraper, può anche raccogliere dati dagli endpoint Prometheus (in una configurazione pull).
In base ai servizi OpenTelemetry identificati, gli host possono essere creati automaticamente con la gestione dinamica degli host. A questi host vengono poi assegnate le metriche OpenTelemetry come servizi Checkmk da un special agent.
Riassumendo brevemente: tre componenti (collettore, gestione dinamica degli host e special agent) devono interagire prima che i servizi possano essere rilevati e le metriche generate. Dovresti quindi configurare prima questi tre componenti e attivare le modifiche in sospeso solo alla fine.
Questo articolo descrive lo stato dell'integrazione di OpenTelemetry al momento del rilascio di Checkmk 2.4.0 p10. Stiamo continuando a lavorare per incorporare le modifiche successive provenienti dai patch release. Alcune delle limitazioni descritte sono già state risolte e sono state aggiunte funzionalità richieste frequentemente. Fai riferimento ai Werks relativi a OpenTelemetry per scoprire lo stato attuale della versione di Checkmk che stai utilizzando. |
2. Configurazione
2.1. Attivazione del Collettore OpenTelemetry
Per prima cosa, devi attivare il collector quando l’istanza è inattiva.
Puoi farlo come utente dell’istanza dalla riga di comando utilizzando omd config nel menu di configurazione testuale:
Vai su Addons e attiva OPENTELEMETRY_COLLECTOR:
┌──────────────────────────Addons─────────────────────────────┐ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ MKEVENTD on │ │ │ │ MKEVENTD_SNMPTRAP off │ │ │ │ MKEVENTD_SYSLOG off │ │ │ │ MKEVENTD_SYSLOG_TCP off │ │ │ │ OPENTELEMETRY_COLLECTOR on │ │ │ │ OPENTELEMETRY_COLLECTOR_SELF_MONITORING_PORT 14317 │ │ │ │ TRACE_RECEIVE off │ │ │ │ TRACE_SEND off │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ < Change > <Main menu> │ └─────────────────────────────────────────────────────────────┘
Non è necessario modificare la porta per il monitoraggio del collector, poiché è impostata sulla porta libera successiva a partire da 14317, anche se vengono utilizzate più istanze.
Dopo aver attivato il collector, riavvia l'istanza con omd start.
2.2. Configurazione del Collettore OpenTelemetry
Vai su Setup > Hosts > OpenTelemetry collector (experimental) e inizia a configurare un nuovo collector cliccando sul pulsante Add OpenTelemetry collector configuration:

In General properties, assegna un ID e un titolo al nuovo collettore.
Per Site restriction, devi spostare almeno una voce dalla parte sinistra a quella destra.
Nello screenshot qui sopra, l'istanza locale mysite è l'unica disponibile.

Impostazioni di base
Presta attenzione ai seguenti punti nelle proprietà del collector:
Devi configurare almeno uno dei due endpoint push (tramite gRPC o HTTP) o uno scraper Prometheus (pull). Lo screenshot mostra un endpoint gRPC non crittografato e non autenticato sulla porta predefinita 4317 su tutti gli indirizzi IPv4 (
0.0.0.0).Crea almeno un campo per Host name computation. Nell'esempio è stata selezionata l'opzione più semplice: il campo
service.namericevuto tramite OpenTelemetry viene utilizzato come nome host in Checkmk. Nell'aiuto in linea puoi trovare ulteriori informazioni sulle opzioni per la creazione di nomi host dai dati OpenTelemetry.
Se vuoi creare nomi host più complessi, salva la configurazione del collector e attiva le modifiche senza aggiungere una regola per l'Host name computation. Assicurati poi che le metriche vengano inviate al collector. Se ora aggiungi regole per l'Host name computation, verranno visualizzati i suggerimenti per i campi disponibili. |
Invio dei log alla Console degli Eventi
OpenTelemetry offre anche opzioni per il trasferimento dei messaggi di log. Il collettore OpenTelemetry può essere configurato per trasferirli in formato syslog via TCP a qualsiasi applicazione in grado di ricevere messaggi syslog. Nel contesto di Checkmk, è interessante l’elaborazione dei messaggi di log da parte della Console degli Eventi. Puoi attivare questa funzione con la checkbox Send log messages to event console.
Assicurati che OpenTelemetry Instrumentation garantisca già che i messaggi di log vengano inviati con parsimonia.
Se non è chiaro cosa arriva al server Checkmk, attiva temporaneamente un' |
Usa Save per salvare il collector.
2.3. Configurazione della gestione dinamica degli host
Per garantire che gli host vengano creati automaticamente, configura una nuova connessione OpenTelemetry con la gestione dinamica degli host. Come preparazione — almeno per i primi test — ti consigliamo di creare una cartella separata in cui archiviare gli host OpenTelemetry generati automaticamente.
Per configurare la nuova connessione per la gestione dinamica degli host, vai su Setup > Hosts > Dynamic host management > Add connection:

Effettua le seguenti impostazioni nella box Connection properties:
Imposta Connector type su OpenTelemetry collector data.
La cartella
OpenTelemetryTestviene utilizzata come cartella di destinazione per i nuovi host (Create hosts in) nell'esempio.Imposta Host attributes in base al tuo ambiente di sistema.
A meno che tu non ti sia preso la briga di creare nomi di host esistenti durante la configurazione del Collettore OpenTelemetry, gli host creati automaticamente saranno host virtuali utilizzati solo nel contesto di OpenTelemetry. Puoi quindi utilizzare solo special agents come agenti di monitoraggio (Configured API integrations, no Checkmk agent) e lasciare le impostazioni per gli indirizzi IP su No IP.Selezionando la checkbox su Service discovery, specifichi che la scoperta del servizio verrà eseguita sugli host generati automaticamente. Questo porta al risultato desiderato se l'special agent per OpenTelemetry è stato configurato ed è attivo.
Per gli altri parametri, puoi trovare ulteriori informazioni nell'articolo sulla gestione dinamica degli host.
Completa la nuova connessione con Save.
2.4. Configurazione dell'special agent
Per garantire che vengano generati anche i servizi Checkmk, è necessario creare almeno una configurazione dell'special agent OpenTelemetry. La regola richiesta si trova in Setup > Agents > Other integrations > OpenTelemetry (experimental):

Nella box "OpenTelemetry (experimental)", decidi se vuoi effettuare il monitoraggio del Collettore OpenTelemetry stesso — tramite la porta visualizzata durante l'attivazione del Collettore.
Nella condizione della regola, è ovvio assegnare l'special agent alla cartella in cui verranno creati automaticamente gli host — nell'esempio, questa è la cartella OpenTelemetryTest.
Salva la regola con il nome Save.
Ora che i tre componenti — collector, gestione dinamica degli host e special agent — sono stati configurati, dovresti attivare le modifiche in sospeso.
2.5. Invio dei dati di test al collector
Probabilmente vorrai configurare il Collettore OpenTelemetry per Checkmk perché da qualche parte nel tuo ambiente IT qualcosa sta già generando alcune metriche OpenTelemetry.
Se non è ancora così, o se vuoi provare rapidamente la Setup di esempio descritta in questo articolo, puoi farlo con l'applicazione di esempio "Hello metric" fornita nel nostro repository GitHub, che gira in un ambiente Python virtuale.
Ci vogliono circa due o tre minuti dal momento in cui vengono inviati i primi dati, l'host è stato creato e il servizio è stato rilevato, per poi diventare visibile nel monitoraggio. L'immagine seguente mostra i servizi dell'applicazione di esempio "Hello metric":

Il nome host hello-metric viene generato dal nome del servizio specificato come opzione nel comando opentelemetry-instrument — esattamente come specificato nella configurazione del Collettore OpenTelemetry.
Il nome del servizio OTel metric hellolevel in Checkmk viene generato dal nome della metrica, con il prefisso OTel metric aggiunto dall'special agent.
Se attivi l'opzione Monitor the collector nella configurazione dell'special agent, ovvero il monitoraggio del collector, verranno creati diversi servizi aggiuntivi sull'host,
L'applicazione di esempio "Dice Roll" presentata sul sito web di OpenTelemetry funziona in modo molto simile a "Hello metric".
Questa applicazione di esempio è sotto molti aspetti più pratica di "Hello metric".
Ad esempio, "Dice Roll" invia metriche OpenTelemetry ogni volta che viene chiamato il server dell'applicazione (e solo allora!) e inserisce il tipo di dati "Contatore". Puoi utilizzare l'ambiente Python virtuale creato per l'esempio "Hello metric" per provare anche l'esempio "Dice Roll". Tuttavia, dovrai anche effettuare l'installazione del modulo Python flask (pip install flask) e creare il file app.py nella versione estesa con le metriche, come descritto in queste istruzioni.
Nella seguente chiamata, sostituisci il server Checkmk come destinazione (qui 198.51.100.42 con porta gRPC 4317):
La restrizione a un solo punto dati, applicata fino alla versione Checkmk 2.4.0 p3, è stata rimossa. Il ticket #18209 descrive come vengono generati i nomi delle metriche Checkmk per le metriche OpenTelemetry con più punti dati. |
Il tuo server Flask è ora pronto ed è accessibile alla porta selezionata (qui: 8080) per lanciare un dado ad ogni chiamata.
Puoi vedere i dati del dado, ad esempio, come output di curl -v http://localhost:8080/rolldice.
Ogni lancio di dado che attivi in questo modo viene trasmesso a Checkmk come punto dati.
Dopo pochi minuti, l'host dice-server apparirà nel monitoraggio con il servizio OTel metric dice.rolls.
Questo presenta sei grafici, da Value_1__Per_Sec a Value_6__Per_Sec, che corrispondono alle frequenze dei numeri da uno a sei ottenuti finora.
Il motivo della conversione è che le metriche OpenTelemetry utilizzano contatori, che possono solo incrementarsi — un tipo di dati non previsto in Checkmk.
Per una visualizzazione più chiara, Checkmk esegue quindi la conversione tenendo conto della componente temporale.
Lo screenshot mostra uno di questi grafici, basato sulle chiamate una volta al secondo a /rolldice durante il periodo di monitoraggio.

2.6. Personalizzazione dei servizi
Puoi impostare soglie e altro per i servizi utilizzando la regola Setup > Services > Service monitoring rules > OpenTelemetry (experimental). Qui puoi impostare regole per singole metriche o per tutte le metriche di un servizio. Lo screenshot di esempio mostra la selezione del contatore per gli errori con il numero 5, come mostrato sopra. I nomi delle metriche conosciute sono accessibili tramite l'elenco o come suggerimenti durante la digitazione. Puoi inserire metriche non ancora conosciute ma che sai che appariranno come testo libero.
A seconda del tipo di dati fornito dal punto dati OpenTelemetry, può essere utile calcolare le frequenze. Questo è utile per i contatori, ad esempio per i pacchetti di rete persi. Se più sorgenti dati forniscono dati assegnati allo stesso servizio Checkmk, puoi anche specificare se deve essere eseguita un'aggregazione (ad es. somma o media) o se devono avere la priorità semplicemente i punti dati più recenti, più grandi o più piccoli di un intervallo.

3. File e directory
| Percorso del file | Descrizione |
|---|---|
|
È qui che vengono creati i dati di OpenTelemetry. Per ogni host viene creata una sottodirectory. I file creati lì sono in formato JSON. |
|
File di log del Collettore OpenTelemetry |
|
Directory temporanea in cui vengono memorizzati i dati aggregati dal collector per essere valutati dall'special agent. |
|
Directory temporanea in cui vengono memorizzati i file richiesti dalla funzione di suggerimento (elenci di voci e suggerimenti durante la digitazione). |
