![]() |
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
1.1. Premessa e motivazione
Forse ti starai chiedendo perché mai dovresti integrare Prometheus in Checkmk - per questo motivo vorremmo fare una nota importante a questo punto: la nostra integrazione di Prometheus è rivolta a tutti i nostri utenti che già utilizzano Prometheus. Integrando Prometheus in Checkmk, possiamo colmare il divario che si è venuto a creare, in modo che tu non debba controllare continuamente due sistemi di monitoraggio.
Questo ti permette di correlare i dati dei due sistemi, di accelerare l'analisi degli errori e, allo stesso tempo, di facilitare la comunicazione tra gli utenti di Checkmk e Prometheus. In questo modo Checkmk rimane il tuo "unico pannello di vetro".
Infine, di nuovo il contesto
Come piacevole beneficio collaterale di questa integrazione, è probabile che le tue metriche da Prometheus ricevano automaticamente un contesto significativo grazie a Checkmk. Ad esempio, mentre Prometheus ti mostra correttamente la quantità di memoria principale utilizzata, non dovrai fare alcun passo manuale in più in Checkmk per scoprire a quanto ammonta la memoria totale disponibile. Per quanto banale possa essere questo esempio, mostra in quali punti Checkmk facilita il monitoraggio, anche in alcuni dei più piccoli dettagli.
1.2. Esportatore o PromQL
L'integrazione dei principali esportatori per Prometheus avviene tramite uno special agent. Sono disponibili i seguenti esportatori per Prometheus:
Se non supportiamo l'esportatore di cui hai bisogno, gli utenti esperti di Prometheus hanno anche la possibilità di inviare query autodefinite a Prometheus direttamente tramite Checkmk, utilizzando il linguaggio di query proprio di Prometheus , PromQL.
2. Impostazione dell'integrazione
2.1. Creare un host
Poiché il concetto di host in Prometheus semplicemente non esiste, per prima cosa crea un luogo che raccoglie le metriche desiderate. Questo host costituisce il punto di contatto centrale per l'agente speciale, che in seguito distribuirà i dati consegnati agli host corretti in Checkmk. Per fare ciò, crea un nuovo host utilizzando Setup > Hosts > Hosts > Add host.

Se il nome host specificato non può essere risolto dal server Checkmk, inserisci l'indirizzo IP con cui è possibile raggiungere il server Prometheus.
Effettua tutte le altre impostazioni per il tuo ambiente e conferma la tua scelta con Save & view folder.
2.2. Creazione di una regola per Prometheus
Prima che Checkmk possa trovare le metriche da Prometheus, devi prima configurare l'agente special agent utilizzando il set di regole Prometheus. Puoi trovarlo tramite Setup > Agents > VM, cloud, container. Ci sono diverse opzioni per personalizzare la connessione del frontend web del tuo server Checkmk, indipendentemente dall'esportatore che vuoi utilizzare.
URL server addressSpecifica qui l'URL del tuo server Prometheus, includendo tutte le porte necessarie. Non includere il protocollo, che può essere selezionato in seguito.
AuthenticationSe è richiesto un login, inserisci qui i dati di accesso.
ProtocolDopo l'installazione, il frontend web è fornito via HTTP. Se hai protetto l'accesso con HTTPS, cambia il protocollo qui di conseguenza.
Puoi vedere i valori predefiniti nella seguente schermata:

Integrazione con l'esportatore di nodi
Se, ad esempio, vuoi integrare i componenti hardware di un cosiddetto Scrape Targets di Prometheus, utilizza il Nodo Exporter. Seleziona Add new Scrape Target, e dal menu a discesa che si apre, seleziona Node Exporter:

Qui puoi selezionare quale hardware o quali istanze del sistema operativo devono essere interrogate dal Node Exporter. Hai sempre la possibilità di deselezionare le informazioni se non vuoi recuperarle. I servizi creati in questo modo utilizzano gli stessi plug-in di controllo utilizzati per gli altri host Linux. Ciò significa che il loro comportamento è identico a quelli già noti, quindi senza doverti adattare a qualcosa di nuovo puoi configurare rapidamente i threshold o lavorare con i grafici.
Normalmente l'agente Checkmk cercherà di assegnare automaticamente i dati agli host di Checkmk, e lo stesso vale per l'host di Checkmk che recupera i dati. Tuttavia, se nei dati del server Checkmk non sono presenti né l'indirizzo IP, né l'FQDN, né il localhost, usa l'opzione Explicitly map Node Exporter host per specificare quale host del server Prometheus deve essere assegnato all'host di Prometheus in Checkmk.
Integrazione con cAdvisor
L'esportatore cAdvisor permette di monitorare gli ambienti Docker e restituisce le metriche.
Tramite il menu Entity level used to create Checkmk piggyback hosts puoi stabilire se e come i dati di Prometheus debbano essere raccolti in un modulo pronto per l'uso. Puoi scegliere tra le seguenti tre opzioni:
Container - Display the information on container level
Pod - Display the information for pod level
Both - Display the information for both, pod and container, levels
Seleziona Both o Container e definisci anche il nome con cui vengono creati gli host per i tuoi container. Le tre opzioni seguenti sono disponibili per la denominazione. L'opzione Short è quella predefinita:
Short - Use the first 12 characters of the docker container ID
Long - Use the full docker container ID
Name - Use the name of the container

Tieni presente che la tua scelta influisce sulla creazione e sull'eliminazione automatica degli host in base alla tua configurazione dinamica degli host.
Con Monitor namespaces matching hai la possibilità di limitare il numero di oggetti monitorati: tutti i namespace che non sono coperti dalle espressioni regolari saranno ignorati.
Integrazione tramite PromQL
Come già accennato, con l'aiuto dello special agent è anche possibile inviare richieste ai server Prometheus tramite PromQL. Seleziona Service creation using PromQL queries > Add new Service. Usa il campo Service name per determinare come deve essere chiamato il nuovo servizio in Checkmk.
Quindi, seleziona Add new PromQL query e utilizza il campo Metric label per specificare il nome della metrica da importare in Checkmk. Ora inserisci la tua query nel campo PromQL query. È importante che questa query possa restituire un solo valore.

In questo esempio, Prometheus viene interrogato sul numero di processi in esecuzione e bloccati. In Checkmk questi processi e le due metriche -Running e Blocked- vengono poi combinati in un servizio chiamato Processes.
Puoi anche assegnare delle soglie a queste metriche: per farlo, attiva Metric levels e poi scegli tra Lower levels o Upper levels. Nota che queste specificano sempre numeri in virgola mobile, ma ovviamente si riferiscono anche a metriche che restituiscono solo numeri interi.
Assegnare una regola all'host Prometheus
Infine, assegna esplicitamente questa regola all'host appena creato e confermala con Save.

2.3. La scoperta del servizio
Ora che hai configurato lo special agent, è il momento di eseguire una scoperta del servizio sull'host Prometheus.

3. Configurazione dinamica dell'host
3.1. Configurazione generale
Il monitoraggio dei cluster Kubernetes è probabilmente una delle attività più comuni che Prometheus svolge. Per garantire l'integrazione dei container, a volte di breve durata, che vengono orchestrati tramite Kubernetes e monitorati con Prometheus - anche in Checkmk senza grandi sforzi - le edizioni commerciali offrono la configurazione di un host dinamico. I dati dei singoli container vengono inoltrati come dati piggyback a Checkmk.
Ora crea una nuova connessione utilizzando Setup > Hosts > Hosts > Dynamic host management > Add connection, seleziona Piggyback data come tipo di connettore e utilizza Add new element per definire le condizioni in cui i nuovi host devono essere creati dinamicamente.
Considera se è necessario per il tuo ambiente eliminare dinamicamente gli host quando non arrivano più dati a Checkmk tramite il meccanismo del piggyback. Imposta l'opzione Delete vanished hosts di conseguenza.
3.2. Caratteristiche speciali nelle interazioni con cAdvisor
I container ricevono di solito un nuovo ID quando vengono riavviati. In Checkmk le metriche dell'host con il vecchio ID non vengono trasferite automaticamente al nuovo ID. Nella maggior parte dei casi, questo non ha senso. Nel caso dei container, tuttavia, può essere molto utile, come si vede nell'esempio precedente.
Se i container vengono solo riavviati, probabilmente non vuoi perdere la loro storia. Per ottenere questo risultato, non creare i container con il loro ID, ma con il loro nome con l'opzione Name - Use the name of the container nella regola di Prometheus.
In questo modo, con l'opzione Delete vanished hosts nella configurazione dinamica dell'host, potrai comunque eliminare i container che non esistono più, senza temere che anche la loro cronologia vada persa. Al contrario, questa continuerà - grazie all'uso dell'identico nome del container - anche se in realtà si tratta di un container diverso che utilizza lo stesso nome.