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. Contesto e motivazione
Forse ti starai chiedendo perché dovresti integrare Prometheus in Checkmk: vorremmo quindi fare una precisazione 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 è creato, in modo che tu non debba controllare continuamente due sistemi di monitoraggio.
Questo ti permette di correlare i dati dei due sistemi, accelerare l'analisi degli errori e, allo stesso tempo, facilitare la comunicazione tra gli utenti di Checkmk e Prometheus. Checkmk rimane quindi il tuo "pannello di controllo unico".
Infine, ancora il contesto
Come piacevole vantaggio 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 devi compiere alcun passo manuale aggiuntivo in Checkmk per scoprire a quanto ammonta questa rispetto alla memoria totale disponibile. Per quanto banale possa sembrare questo esempio, mostra in quali punti Checkmk semplifica il monitoraggio — anche nei minimi dettagli.
1.2. Esportatore o PromQL
L'integrazione dei più importanti esportatori per Prometheus è fornita tramite un 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 personalizzate a Prometheus direttamente tramite Checkmk. Questo viene fatto utilizzando il linguaggio di query proprio di Prometheus, PromQL.
2. Configurazione dell'integrazione
2.1. Creazione di un host
Dato che il concetto di host in Prometheus semplicemente non esiste, crea prima un punto in cui raccogliere le metriche desiderate. Questo host costituisce il punto di contatto centrale per l'special agent, che in seguito distribuirà i dati ricevuti agli host corretti in Checkmk. Per farlo, 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 tramite il quale è possibile raggiungere il server Prometheus.
Effettua tutte le altre impostazioni per il tuo ambiente e conferma la tua selezione 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'special agent utilizzando il set di regole Prometheus. Lo trovi su Setup > Agents > VM, cloud, container. Ci sono diverse opzioni per personalizzare la connessione al frontend web del tuo server Prometheus, indipendentemente dall'esportatore che vuoi usare.
URL server address: Specifica qui l'URL del tuo server Prometheus, incluse tutte le porte necessarie. Non includere il protocollo qui, poiché è selezionabile più in basso.
Authentication: Se è richiesto un login, inserisci qui i dati di accesso.
Protocol: Dopo l'installazione, il frontend web è disponibile tramite HTTP. Se hai protetto l'accesso con HTTPS, modifica qui il protocollo di conseguenza.
Puoi vedere i valori predefiniti nella seguente schermata:

Integrazione tramite Node Exporter
Se, ad esempio, desideri ora integrare i componenti hardware di un cosiddetto Scrape Targets da Prometheus, utilizza Node Exporter. Seleziona "Add new Scrape Target" e, dal menu a discesa che si apre, seleziona "Node Exporter":

Qui puoi selezionare quali istanze hardware o di sistema operativo devono essere interrogate da 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 altri host Linux. Ciò significa che il loro comportamento è identico a quello a cui sei già abituato, quindi senza doverti adattare a qualcosa di nuovo puoi configurare rapidamente le soglie o lavorare con i grafici.
Normalmente l’agente cercherà di assegnare automaticamente i dati agli host in Checkmk, e lo stesso vale per l’host in Checkmk che recupera i dati. Tuttavia, se nei dati provenienti dal server Prometheus non sono presenti né l’indirizzo IP, né l’FQDN, né localhost, usa l’opzione Explicitly map Node Exporter host per specificare quale host dei dati del server Prometheus deve essere assegnato all’host Prometheus in Checkmk.
Integrazione tramite cAdvisor
L'esportatore cAdvisor consente il monitoraggio degli ambienti Docker e restituisce le metriche.
Tramite il menu Entity level used to create Checkmk piggyback hosts puoi determinare se e come i dati da Prometheus debbano essere raccolti in forma già aggregata. 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. Per la denominazione sono disponibili le seguenti tre opzioni. 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 selezione qui influisce sulla creazione e l'eliminazione automatica degli host in base alla tua gestione dinamica degli host.
Con l'opzione "Monitor namespaces matching" hai la possibilità di limitare il numero di oggetti sottoposti al monitoraggio. Tutti gli spazi dei nomi non coperti dalle espressioni regolari verranno quindi ignorati.
Integrazione tramite PromQL
Come già accennato, con l’aiuto dell’special agent è anche possibile inviare richieste ai tuoi server Prometheus tramite PromQL. Seleziona “Service creation using PromQL queries > Add new Service”. Usa il campo “Service name” per determinare come si chiamerà il nuovo servizio in Checkmk.
Successivamente, 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 restituisca 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. Tieni presente che queste specificano sempre numeri in virgola mobile, ma ovviamente si riferiscono anche a metriche che restituiscono solo numeri interi.
Assegnazione di una regola all'host Prometheus
Infine, assegna esplicitamente questa regola all'host che hai appena creato e conferma con Save.

2.3. Scoperta del servizio
Ora che hai configurato l'special agent, è il momento di eseguire la scoperta del servizio sull'host Prometheus.

3. Gestione dinamica degli host
3.1. Configurazione generale
Il monitoraggio dei cluster Kubernetes è probabilmente una delle attività più comuni svolte da Prometheus.
Per garantire l'integrazione dei container, che a volte hanno una durata molto breve, orchestrati tramite Kubernetes e monitorati con Prometheus — anche in Checkmk senza grandi sforzi — nelle edizioni commerciali è possibile configurare una gestione dinamica degli host.
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 connessione e usa Add new element per definire le condizioni in base alle quali i nuovi host devono essere creati dinamicamente.
Valuta se nel tuo ambiente è necessario eliminare dinamicamente gli host quando non arrivano più dati a Checkmk tramite il meccanismo piggyback. Imposta l'opzione Delete vanished hosts di conseguenza.
3.2. Caratteristica speciale nelle interazioni con cAdvisor
I container di solito ricevono 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, ciò non avrebbe alcun senso. Nel caso dei container, tuttavia, questo può essere molto utile, come si vede nell'esempio sopra.
Se i container vengono solo riavviati, probabilmente non vuoi perdere la loro cronologia. Per ottenere questo risultato, non creare i container in base ai loro ID, ma piuttosto in base ai loro nomi con l'opzione Name - Use the name of the container nella regola Prometheus.
In questo modo, con l'opzione Delete vanished hosts nella gestione dinamica degli host puoi comunque eliminare i container che non esistono più, senza dover temere che vada persa anche la loro cronologia. Al contrario, questa verrà mantenuta — grazie all'uso del nome identico del container — anche se in realtà si tratta di un container diverso che utilizza lo stesso nome.
