Le API svolgono un ruolo centrale nella costruzione di stack di monitoraggio di osservabilità aperta. Collegano strumenti separati e consentono di creare potenti stack di monitoraggio che raggruppano automaticamente le informazioni provenienti da soluzioni diverse, semplificando le interazioni tra i team.
In questo articolo, voglio presentarvi un esempio: l'integrazione delle notifiche ('Monitor') e degli eventi di Datadog in Checkmk. L'integrazione vi fa risparmiare tempo, perché sarete in grado di trovare più velocemente le cause dei problemi ed eliminare la necessità di controllare più sistemi di monitoraggio contemporaneamente.
Che cos'è Datadog?
Datadog è una piattaforma SaaS cloud-based per il monitoraggio delle applicazioni aziendali e delle infrastrutture IT. Un caso d'uso tipico è il monitoraggio delle prestazioni delle applicazioni (APM) da parte dei team DevOps.
Anche i team ITOps beneficiano delle informazioni ottenute con Datadog. Tuttavia, oltre alle applicazioni, devono monitorare anche l'infrastruttura sottostante, come reti o server. Soprattutto negli ambienti IT ibridi con una moltitudine di sistemi diversi, Checkmk può raccogliere facilmente tutti i dati di monitoraggio necessari.
Facile accesso ai dati tramite l'API di Datadog
Poiché ogni team IT ha esigenze diverse, alcune aziende utilizzano Datadog e Checkmk contemporaneamente. Pertanto, ha senso che entrambe le soluzioni condividano le informazioni. In questo modo, ad esempio, i team IT possono evitare che due soluzioni di monitoraggio interroghino due volte gli stessi dati di monitoraggio di un sistema.
Checkmk può raccogliere i dati di monitoraggio esistenti da Datadog proprio come farebbe con un normale host di monitoraggio. Tuttavia, in questo caso d'uso, Checkmk utilizzerà l'API di Datadog per recuperare i dati. A questo scopo, Checkmk utilizza lo special agent Datadog. In Checkmk, i Monitors appaiono quindi come un servizio di monitoraggio.
Trasferendo i Monitors in un servizio di monitoraggio, si ha il pieno controllo e si può decidere se si vuole solo monitorare i Monitors o se Checkmk debba intraprendere ulteriori azioni. Checkmk può, ad esempio, inviare una notifica in base allo stato del servizio.
Checkmk trasferisce gli eventi da Datadog direttamente alla Console eventi. L'integrazione nativa consente di utilizzare tutte le funzioni della Console eventi anche per gli eventi provenienti da Datadog. Naturalmente, è possibile configurare in Checkmk anche gli avvisi basati sugli eventi di Datadog.
Requisiti per l'integrazione di Datadog in Checkmk
È possibile integrare i dati di Datadog in qualsiasi edizione di Checkmk, ma è importante utilizzare almeno la versione 2.1 di Checkmk. A titolo di esempio, nel seguente tutorial utilizzo la versione 2.1 di Checkmk Enterprise Edition. È possibile scaricarla qui.
Inoltre, poiché Datadog è disponibile solo come soluzione cloud, l'istanza di Checkmk deve avere accesso a Internet per recuperare l'API di Datadog. Per questa connessione è possibile utilizzare un server proxy HTTP.
Passo 1: proteggere l'API di Datadog
Per proteggere l'accesso, è necessario creare una chiave API e una chiave di applicazione nell'applicazione Datadog. Solo Checkmk dovrà utilizzarle in seguito per raccogliere i dati. La loro creazione richiede solo pochi clic:
- Accedere all'app Datadog con le proprie credenziali.
- Fare clic sulla finestra di ricerca in alto a sinistra e cercare "Chiavi API".

- Nella nuova finestra vengono visualizzate le chiavi API precedenti. Fare clic su + Nuova chiave nell'angolo in alto a destra.
- Assegnate un nome alla chiave API. Io ho scelto "Checkmk_API". Confermare con Crea chiave.

- Verrà visualizzata una finestra con l'ID della chiave e la chiave. Copiare la chiave facendo clic su "Copia chiave". L'ID della chiave non è necessario. Salvare la chiave e chiudere la finestra.
- Ora fare clic sulla voce Chiavi di applicazione nella barra dei menu a sinistra, appena sotto Chiavi API.
- Nella finestra Chiavi applicazione, fare nuovamente clic sul pulsante blu + Nuova chiave a destra.
- Anche in questo caso, scegliere un nome a piacere. Io ho scelto "Checkmk_App_Key". Confermare nuovamente con Crea chiave.
- Copiare e salvare la chiave di applicazione.

E avete finito con Datadog. Ora potete passare a Checkmk.
Passo 2: Configurare gli host di Datadog in Checkmk
In questa esercitazione, si creeranno due host Datadog separati in Checkmk. La suddivisione in due host semplifica l'amministrazione di Checkmk. Con il primo host, si utilizzano i monitor di Datadog come servizi di monitoraggio. Il secondo host viene utilizzato per gli eventi di Datadog. In seguito, questo host avrà un solo servizio che visualizza gli eventi trasferiti.
- Fare clic su Configurazione -> Host e quindi su Aggiungi host.
- Per il nome dell'host, utilizzare un nome a scelta. Io ho scelto 'datadog_monitors'.
- In Indirizzo di rete, fare clic su "Mostra altro" e attivare la famiglia di indirizzi IP. Selezionare l'opzione "Nessun IP".
- Fare clic su Salva e vai alla cartella ("Save & go to folder"). Ora è stato creato l'host per i vostri Monitors.

- Ripetete i passaggi per il secondo host con un nome diverso. Nel mio esempio, ho chiamato il mio host per gli eventi Datadog "datadog_events".
- Anche in questo caso, è necessario regolare la famiglia di indirizzi IP e poi fare clic su Salva e vai alla cartella.
Gli host Datadog non hanno un indirizzo IP. Nella fase successiva, invece, si utilizza la regola di monitoraggio di Datadog per configurare l'agente Datadog per recuperare i dati dall'API Datadog e assegnarli all'host appropriato.
Fase 3: Impostazione delle regole dell'agente per l'agente Datadog
Poiché si utilizzano due host separati per i Monitors e gli eventi, è necessario impostare separatamente la regola Datadog per ciascun host. Iniziare con la regola per i Monitors:
- Fare clic su Impostazione e cercare "Datadog".
- In Altre integrazioni, fare clic su Datadog.
- Selezionare Aggiungi regola per creare una nuova regola.
- In Datadog, aggiungere la chiave API e la chiave dell'applicazione nell' istanza Datadog.
- Per l'host API, verificare che l'URL dell'API Datadog corrisponda alla regione di hosting dell'istanza Datadog. Nella documentazione di Datadog, si possono trovare maggiori dettagli sui siti Datadog. Nel mio caso, l'impostazione predefinita è corretta.

L'opzione proxy HTTP è necessaria solo se la comunicazione di Checkmk con Datadog passa attraverso un server proxy. Per me non è questo il caso.
Ora si prosegue con la parte più importante della regola. Si deve decidere cosa importare di Checkmk:
- Utilizzare Fetch monitors per abilitare l'importazione dei monitor. Sono disponibili due opzioni per filtrare i monitor:
- Utilizzare Limita per tag ("Restrict by tags") per filtrare per tag in Datadog. Checkmk trasferisce quindi i monitor nella cui configurazione compare un tag specifico.
- Limita per tag del monitor ("Restrict by monitor tags") consente di trasferire i monitor che sono stati precedentemente etichettati in Datadog. Qui inserisco 'checkmk', perché ho etichettato tutti i monitor in Datadog che voglio trasferire a Checkmk con questo tag.

Quale sia l'opzione di filtro più adatta a voi, o se dobbiate usarle entrambe insieme, dipende dalla vostra configurazione di Datadog. La restrizione per tag è adatta, ad esempio, se si desidera trasferire completamente un determinato gruppo di monitor a Checkmk. Ad esempio, si può usare 'linux' per i sistemi Linux.
Nel mio esempio, ho etichettato alcuni monitor in Datadog con il tag Monitor 'checkmk' e ho usato i tag Restrict by monitor per contrassegnare solo quelli da trasferire. Soprattutto in ambienti Datadog più grandi, ha senso assegnare i tag esistenti ai singoli monitor e usare i tag Restrict by monitor.
- Scorrere fino a Condizioni.
- Abilitare gli host espliciti e selezionare l'host Datadog per i monitor. Per me è 'datadog_monitors'.
- Salvare la regola con Salva.
Ora creare una nuova regola Datadog, ma per gli eventi Datadog.
- In Impostazione, cercare nuovamente 'datadog'. In Altre integrazioni, selezionare Datadog. Fare clic sulla seconda icona per clonare questa regola.
La chiave API e la chiave dell'applicazione dell'istanza Datadog, così come l'URL dell'host API, sono già stati inseriti dopo aver copiato la regola. Non è necessario modificare nulla.
- Deselezionare la casella in Fetch monitors e abilitare Fetch events per configurare il trasferimento degli eventi da Datadog.
- Per l'età massima degli eventi recuperati ("Maximum age of fetched events"), si consiglia di utilizzare l'impostazione predefinita di 10 minuti.
- Con Restrizione per tag ("Restrict by tags"), è possibile utilizzare i tag di Datadog per filtrare gli eventi. Ad esempio, voglio trasferire in Checkmk tutti gli eventi che riguardano il mio sito Datadog, quindi uso il tag 'source:datadog'. Questo mi permette di vedere in Checkmk quando qualcuno modifica la configurazione di Datadog e aggiunge un nuovo monitor, ad esempio.
Se si vuole essere informati di un avviso in Datadog, ad esempio, si deve inserire 'source:alert' in Restrict by tags.

- Gli altri campi di Fetch events si riferiscono ai parametri con cui Checkmk deve creare gli eventi da Datadog nella Console eventi di Checkmk. I dettagli a riguardo sono riportati nell'articolo del manuale della Console eventi. Nel mio esempio non ho personalizzato nient'altro.
- In Condizioni, attivare Host espliciti e selezionare l'host Datadog per gli eventi. Nel mio caso, è 'datadog_events'.
- Salvare la regola con Salva.
L'intervallo di tempo per la trasmissione degli eventi in Età massima degli eventi recuperati può essere regolato individualmente. Si noti però che non deve essere inferiore all'intervallo di controllo, altrimenti Checkmk potrebbe perdere degli eventi. Inoltre, Datadog può utilizzare un timestamp del passato quando crea gli eventi. Pertanto, l'intervallo non deve essere troppo breve. In ogni caso, si consiglia l'impostazione predefinita.
Se non si applica alcun filtro ai monitor Fetch e agli eventi Fetch, Checkmk trasferisce tutti i monitor e gli eventi da Datadog.
Passo 4: Individuazione del servizio tramite l'API di Datadog
L'ultimo passo consiste nell'avviare il rilevamento automatico dei servizi per gli host Datadog.
- Andare a Configurazione -> Host.
- Per prima cosa, fare clic sull'icona del cubo giallo di uno degli host Datadog. Nel mio esempio, inizio con l'host "datadog_monitors".

- Attendere il rilevamento automatico dei servizi e controllarli. Se si desidera accettare tutti i servizi in Checkmk, fare clic su Accetta tutto. Nel mio esempio, è stato rilevato un servizio.

- Tornare a Configurazione -> Host.
- Ripetere il rilevamento dei servizi per l'host degli eventi Datadog e includere anche il servizio eventi nel monitoraggio.
- Fare clic sull'icona gialla del punto esclamativo nell'angolo in alto a destra. Dovrebbe essere visualizzato il numero di "modifiche".
- Fare clic su Attiva nei siti selezionati.
Questa esercitazione è stata completata con successo. Checkmk ora integra i monitoraggi e gli eventi di Datadog e dispone di tutte le informazioni in un unico monitoraggio.
Pensieri finali
Grazie a questo tutorial, è possibile integrare gli eventi e i monitor di Datadog in Checkmk in pochi minuti. In questo modo, avrete tutte le informazioni automaticamente in Checkmk e non dovrete più fare avanti e indietro tra più strumenti. Inoltre, l'integrazione con Datadog è solo un esempio di come Checkmk possa accettare dati da altri strumenti. Checkmk può anche integrare dati provenienti da strumenti come ntop o Prometheus.