Ep 46: Lavorare con l'API REST di Checkmk

[0:00:00] Salve, mi chiamo Bastian Kuhn e oggi vi mostrerò una breve introduzione all'API REST di Checkmk.
[0:00:18] Per prima cosa, vi mostrerò la documentazione Swagger, che potrete utilizzare per "giocare" un po' e per vedere tutte le call possibili. Poi vi mostrerò dove potete trovare alcuni esempi di codifica per utilizzare gli endpoint dell'API.
[0:00:34] Per prima cosa, diamo un'occhiata alla documentazione di Swagger. La si può trovare sul lato sinistro, nella parte della Guida. C'è un link per la GUI interattiva dell'API REST.
[0:00:50] Posso aprirla in una nuova finestra. Ci vuole solo un attimo per caricarla. Ok. Una volta caricata la pagina, è sufficiente scorrere un po' verso il basso. E in effetti è un bel po', perché qui si trova già molta documentazione. Si tratta fondamentalmente della sintassi e dei comandi che si possono usare per sostituire le query di Livestatus.
[0:01:26] Ma naturalmente si può fare molto di più. A un certo punto, si finisce con l'elenco degli endpoint ed eccoli qui. Sono separati in gruppi diversi.
[0:01:42] Si può andare, ad esempio, con la parte degli agenti, dove si può gestire tutto ciò che riguarda la agent bakery, compresa l'acquisizione degli agenti, il "baking" degli agenti, la firma degli agenti. È possibile controllare il demone di configurazione dinamica.
[0:02:02] È possibile impostare i riconoscimenti, che verranno esaminati in seguito. È possibile attivare le modifiche, gestire i tag. Si possono impostare anche regole per la Business intelligence. È possibile gestire i gruppi, come gruppi di contatti, gruppi di host, gruppi di servizi. È possibile impostare i tempi di inattività. Analizzeremo anche questo aspetto.
[0:02:26] Potete ottenere tutte le informazioni dalla Console eventi. È possibile gestire la struttura delle cartelle nella configurazione. Ciò significa creare cartelle, ottenere un elenco di cartelle, eliminare cartelle. È possibile fare lo stesso per gli host.
[0:02:42] Inoltre, per questo faremo un piccolo esempio. Quindi, è possibile creare ed eliminare host o modificarne gli attributi. In un altro gruppo è possibile creare gruppi di tag. Poi potete gestire il vostro archivio di password. È possibile creare ogni tipo di regola. È possibile cercare i set di regole.
[0:03:09] La parte relativa allo stato del servizio sostituisce tutto ciò che si faceva prima con Livestatus. È possibile gestire la scoperta del servizio, il che significa che è possibile avviare la scoperta. In altri gruppi, in questo caso i gruppi di servizi, è possibile creare periodi di tempo. Infine, gli Utenti. L'ultimo è solo la versione.
[0:03:34] L'aspetto positivo di Specker è che siete già autenticati. Quindi, quando faccio clic su uno degli endpoint, ad esempio la versione, posso provarla. Posso provarlo, questo non ha parametri, e fare clic su esegui. Vedo che la richiesta è stata inviata. Vedo l'URL a cui è stata inviata la richiesta.
[0:04:01] Infine, posso vedere la risposta. La risposta è sempre come qui, è un oggetto JSON. Quindi, facciamo qualche esempio. Per prima cosa, iniziamo con il Riconoscimento. Per questo, ho bisogno di correggere l'endpoint. Questo è fondamentalmente all'inizio. Qui si può impostare il riconoscimento per l'host o per il servizio.
[0:04:34] Cominciamo con il servizio. Proverò. Questa volta, ho un corpo di richiesta, in cui devo inserire le informazioni necessarie. Per prima cosa, acknowledge_type, service. È corretto. Non vogliamo che il riconoscimento sia "appiccicoso". "Appiccicoso" significa che, quando il riconoscimento è per un server di avviso o per un servizio di avviso, rimarrà riconosciuto se lo stato cambia in critico.
[0:05:07] Non vogliamo che il comando sia persistente. Ciò significa che il comando rimane al servizio o al server anche se il problema è stato risolto. Non si vuole inviare una notifica. Ma ciò di cui abbiamo bisogno è un commento. Per questo esempio, lo manteniamo così com'è. Ora dobbiamo solo inserire l'host e la descrizione del servizio.
[0:05:29] Per questo, torno a Checkmk e cerco un problema. Ne ho due. Vediamo. Su pve ho il servizio Check_MK in errore. Vediamo cosa succede. Entro in pve, e qui "Check_MK". Eseguo.
[0:06:03] Vedo di nuovo la richiesta curl, che posso usare sulla linea di comando per testarla. Solo una piccola informazione: se si fa la stessa cosa da linea di comando, non si viene autenticati, sono necessarie alcune informazioni di intestazione. Ma vi mostrerò più avanti come funziona. Per ora restiamo alla risposta. Fondamentalmente, non ce n'è nessuna. Ma vediamo.
[0:06:35] In Check_MK, c'è già il mio riconoscimento. Ma no, diciamo che vogliamo fare un downtime. Scorro un po' in basso fino alla parte Downtimes. Poi ne farò uno relativo all'host. Lo provo. Poi vedo il corpo della richiesta. Devo inserire alcune informazioni valide. Ecco fatto. No, torniamo a marzo.
[0:07:24] Partiamo dal 10 e andiamo fino al mese prossimo. Le opzioni qui sono ora di inizio, ora di fine. Se impostate la durata, cosa che ora non facciamo, creerete un tempo di inattività flessibile. Questa volta rimaniamo in tema di aggiornamenti di sicurezza. È per l'host e questa volta è per il pve. Eseguiamo.
[0:07:59] E poi dovremmo già avere un downtime qui. E aggiorniamo. E con questa icona qui, posso vedere gli host in downtime. Come ultimo esempio, mostrerò come ottenere gli host e cambiarli. Cercherò la parte Hosts, che si trova qui. La cosa più semplice è ottenere l'elenco di tutti gli host.
[0:08:30] A questo endpoint, provate. Eseguo. Ora la risposta è un po' più grande, ma non troppo. Ho solo due oggetti. C'è un valore parziale in basso. Abbiamo l'host pve. E abbiamo, ancora un po', l'oggetto cluster e un po' più in basso abbiamo il testrv.
[0:09:10] Questi sono fondamentalmente i nostri host con cui possiamo lavorare. Se vado direttamente a un host, usiamo questo come esempio, facciamo un collasso e andiamo con Show a host. Possiamo provarlo. Il nome dell'host è qui. Gli attributi_effettivi significano fondamentalmente se si vogliono ottenere tutti gli attributi, che l'host ottiene dalle cartelle.
[0:09:43] Nel mio esempio, sono nella cartella principale e c'è roba o niente. Quindi, posso salvarlo ed eseguirlo. E ora ho solo questo singolo oggetto. Una piccola parte è importante. Nelle intestazioni della risposta, si troverà anche questo etag. Se poi vogliamo.
[0:10:17] Se in seguito vogliamo cambiare questo oggetto, dobbiamo assicurarci di avere l'etag più recente. Quindi, in pratica, con questa funzione impediamo di modificare all'interno dell'API un host che è stato cambiato nel frattempo da un altro sistema. Quindi, immaginiamo di caricare le informazioni sull'host, di cambiare le informazioni sull'host e di memorizzarle di nuovo. Ma nel frattempo le informazioni sono state modificate, quindi l'etag cambierà e non sarà possibile aggiornare il sistema.
[0:10:51] Per ora ci limitiamo a copiarlo. Infine, aggiungeremo un'etichetta al sistema. Qui è come se fosse quello messo. Proverò. Dobbiamo inserire l'intestazione etag qui.
[0:11:22] Dobbiamo inserire il nome dell'host. E qui vedete già un piccolo esempio di come aggiungere nuovi attributi, c'è questa parte qui. Come aggiornare gli attributi esistenti, quindi in pratica come cambiarli e come rimuoverli. Vogliamo aggiungerne di nuovi, quindi li rimuoverò entrambi dagli esempi. E poiché qui abbiamo Json, è necessario rimuovere la virgola anche qui.
[0:11:58] Non è come in Python. E vogliamo creare l'etichetta, in modo da poter vedere come appaiono le etichette. Quindi, torniamo alla risposta. Purtroppo, se scorriamo gli attributi verso il basso, abbiamo solo un tag, ma non ancora l'etichetta.
[0:12:26] Per mostrarvi come scoprire l'aspetto, aggiungerò un'etichetta a uno degli host. Usiamo questo. Andiamo con server: sì. Attivo le modifiche. Poi vario l'host.
[0:13:07] E ora possiamo vedere che negli attributi abbiamo una chiave labels. E qui abbiamo anche un'etichetta. La copio e la incollo qui. Rimuovo la parte dell'indirizzo IP perché non mi serve, voglio solo impostare l'etichetta. E testlabel: sì. Esegui. Scusate, devo rimuovere la virgola. Esegui.
[0:14:00] E vediamo una risposta 200. Se poi guardiamo il sistema, vediamo l'etichetta. Un altro modo simpatico per vedere queste etichette è possibile anche nella panoramica. Se torno alla cartella con l'opzione Display, posso, ad esempio, mostrare le etichette host esplicite. E ora posso già vederle qui.
[0:14:32] Se ora volete creare i vostri script, vi mostrerò un'altra documentazione. Anch'essa si trova nella Guida. È la documentazione dell'API REST. Anche questa documentazione ha bisogno di un po' di tempo per essere caricata Sul lato sinistro si trovano alcuni esempi. Come ho mostrato prima, Acknowledgment e Downtimes. Utilizziamo Acknowledgment come esempio.
[0:15:08] Ora avete la documentazione completa sui termini. E la cosa migliore è che qui, sul lato destro, ci sono gli esempi. Questo è il normale Payload, ma potete vedere un esempio in Python per l'intera operazione. Un altro esempio Python con urllib.
[0:15:32] Sul lato destro, potete vedere il Payload. Potete vedere un esempio di richiesta con Python. Si può vedere un esempio di urllib con Python. E per esempio, se volete lavorare sulla linea di comando, c'è anche un esempio di curl con uno script di ritorno. L'ultima cosa di cui dobbiamo parlare è l'autenticazione. È molto semplice. Si tratta di un utente con una password di automazione segreta.
[0:16:04] Come si può vedere nell'esempio qui riportato, per l'autenticazione è necessaria solo questa intestazione e il nome utente e la password sono impostati qui. Questi utenti non sono altro che quelli che si trovano in Setup, Utenti. È possibile utilizzare l'automazione, con il segreto dell'automazione o un utente normale con una password normale.
[0:16:32] Spero che questo video vi abbia fornito una breve introduzione all'API REST di Checkmk. Non dimenticate di iscrivervi e alla prossima puntata.

Vuoi saperne di più su Checkmk? Partecipa al nostro webinar "Introduzione a Checkmk".

Registrati adesso

Altri Video di Checkmk