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
Checkmk supporta il concetto di etichette, di cui puoi assegnarne un numero qualsiasi a un host. Le etichette e i tag host funzionano in modo molto simile:
Le etichette vengono "associate" agli host allo stesso modo dei tag.
Le etichette possono essere utilizzate come condizioni per le regole allo stesso modo dei tag.
Le etichette vengono create in modo simile ai tag secondo il principio "
key:value".
Allora perché c'è un nuovo concetto qui? Beh, il mondo IT sta cambiando e sta diventando molto più dinamico. I sistemi cloud e container come Amazon Web Services (AWS), Microsoft Azure e Kubernetes creano ed eliminano in modo autonomo quelli che chiamano "oggetti" — che corrispondono agli host in Checkmk. In queste tecnologie le etichette e i tag giocano un ruolo importante perché creano le connessioni tra gli oggetti monitorati e le loro funzioni. I nomi degli host, invece, sono sempre più casuali e privi di significato.
Checkmk può creare automaticamente questi host dinamici grazie alla gestione dinamica degli host e può anche ricevere informazioni su eventuali etichette/tag già presenti. Queste etichette/tag possono poi essere utilizzate per condizioni di regole, ricerche, valutazioni, dashboard e altre attività.
Ovviamente sorge la domanda: perché non mappiamo semplicemente queste etichette dinamiche al concetto esistente di tag host? A prima vista sembra una conclusione molto ovvia. Tuttavia, i tag host hanno una proprietà molto importante che renderebbe tutto ciò molto difficile e complicato: Checkmk definisce rigidamente quali tag e gruppi di tag sono presenti. Tutto è ben definito. Ogni host ha esattamente un tag per ogni gruppo. Tutti possono fare affidamento su questo. Non possono verificarsi errori di digitazione nell'ortografia dei tag — nemmeno con host che non seguono lo schema — perché la sua conformità è rigorosamente controllata da Checkmk. Questo è molto importante e utile in ambienti molto eterogenei con molte migliaia di host gestiti manualmente.
Al contrario, le etichette dinamiche di Kubernetes e simili sono di fatto "a forma libera" e, anche se seguono uno schema, questo è sconosciuto a Checkmk. Inoltre, potresti effettuare il monitoraggio di diverse piattaforme, che a loro volta utilizzano le etichette in modi molto diversi.
Ecco perché è stato introdotto un concetto di etichette Checkmk che si adatta a questa dinamica in crescita. Naturalmente puoi usare le etichette anche se non utilizzi connessioni ad ambienti cloud.
Per rispondere alla domanda "Quando usare le etichette e quando usare i tag host?", trovi maggiori informazioni nell'articolo sulla strutturazione degli host.
Ecco le caratteristiche delle etichette:
Le etichette non devono essere predefinite da nessuna parte. Non esiste uno schema fisso per le etichette. Tutto è a forma libera. Tutto è permesso.
Ogni host può avere tutte le etichette che vuoi. Queste possono essere gestite manualmente, definite tramite regole o create automaticamente.
Le etichette sono strutturate secondo il principio "
key:value". Ogni host può avere un solo valore per chiave. Quindi un host che ha l'etichettafoo:barnon può avere allo stesso tempofoo:bar2.A differenza dei tag host, sia la chiave che il valore — con l'eccezione dei due punti (:) — possono contenere qualsiasi carattere.
Non c'è distinzione tra ID e titolo (o nome visualizzato): la chiave dell'etichetta è entrambe le cose allo stesso tempo.
Le etichette hanno i seguenti compiti:
Costituiscono la base per le condizioni nelle regole di configurazione, ad esempio: "Tutti gli host con l'etichetta
os:windowsdevono essere sottoposti a monitoraggio allo stesso modo."È molto facile memorizzare informazioni aggiuntive o commenti su un host (ad esempio,
location:RZ 74/123/xyz) e visualizzarli, ad esempio, nelle visualizzazioni.
2. Creazione delle etichette
2.1. Etichette esplicite
È possibile assegnare etichette a un host in diversi modi.
Il primo è semplice: Nella pagina delle proprietà dell'host, che viene visualizzata quando crei o modifichi un host nel Setup, puoi assegnare a un host tutte le etichette che vuoi:

Seleziona la checkbox "Labels", quindi clicca nel campo "Add some label", inserisci la definizione dell'etichetta seguendo lo schema key:value e conferma con Invio.
Puoi modificare un'etichetta esistente cliccandoci sopra nel testo, oppure eliminarla con la piccola "x".
Sia la chiave che il valore di un'etichetta possono includere qualsiasi carattere, tranne i due punti ( |
Naturalmente le etichette possono anche essere ereditate da una cartella.
Come altri attributi, le etichette possono trovarsi nelle sottocartelle o sull'host, per poi essere sovrascritte nuovamente secondo necessità — in realtà singolarmente.
Se, ad esempio, l'etichetta location:munich è impostata nella cartella, questa verrà ereditata da tutti gli host in questa cartella che non hanno già l'etichetta location definita.
Le altre etichette che un host potrebbe avere rimarranno inalterate.
Le etichette definite esplicitamente per host o cartelle appaiono in viola nell'elenco degli host:

2.2. Creazione di etichette tramite regole
Come di consueto in Checkmk, gli attributi possono essere assegnati agli host e ai servizi anche tramite regole. Questo ti renderà indipendente dalla struttura delle cartelle e vale anche per le etichette. Per questa funzione è disponibile un set di regole Host labels, che puoi trovare rapidamente tramite una ricerca nel menu di configurazione.
La seguente regola aggiunge l'etichetta "hw:real" a tutti gli host nella cartella "Bavaria" che hanno il tag host "Real Hardware":

Avrai notato che le etichette non possono essere utilizzate nelle condizioni di questa regola. Non si tratta di un errore, ma di una scelta intenzionale, che evita dipendenze ricorsive e altre anomalie.
Le etichette aggiunte tramite regole appaiono in rosso sull'host visualizzato, ma non compaiono nell'elenco degli host nel Setup, bensì solo nella visualizzazione dello stato dell'host.
2.3. Etichette generate automaticamente
Il terzo modo in cui è possibile creare le etichette è in modo completamente automatico. Varie sorgenti dati, come gli agenti speciali per il monitoraggio dei sistemi cloud e container, generano automaticamente le etichette. In particolare, vanno menzionati qui gli agenti speciali per AWS, Azure e Kubernetes. A volte questi elementi vengono chiamati anche tag sulle rispettive piattaforme e vengono creati in Checkmk come etichette dell'host o di servizio. I rispettivi set di regole forniscono informazioni sufficienti al riguardo.
Il bello è che non devi configurare assolutamente nulla. Non appena queste sorgenti dati sono attive, le etichette corrispondenti vengono generate.
Nella sezione Etichette dell'host generate automaticamente troverai una panoramica delle etichette che Checkmk genera automaticamente.
2.4. Specificare le etichette tramite un plug-in dell'agente
Un modo semplice per manipolare direttamente le etichette è aggiungere un plug-in dell'agente che, analogamente ai check locali, crea una sezione chiamata "labels".
In questo modo puoi assegnare etichette in modo più dettagliato rispetto alla sola valutazione dell'inventario HW/SW — ad esempio, in base alle sfumature dell'hardware installato (come le caratteristiche della CPU) o in relazione ai processi effettivamente in esecuzione (anziché semplicemente al software installato).
L'output dell'etichetta deve essere formattato come un dizionario Python, come nell'esempio seguente:
<<<labels:sep(0)>>>
{"cpu/vendor": "zilog"}Evita conflitti con le etichette assegnate automaticamente da Checkmk stesso e da altri plug-in, poiché non è possibile garantire un ordine di valutazione particolare.
2.5. Inclusione delle etichette trovate nel discovery check
Se hai abilitato il discovery check — che è l'impostazione predefinita per le nuove installazioni — ti avviserà quando vengono trovate nuove etichette dell'host che non sono ancora state aggiunte alle proprietà dell'host nel Setup. Ad esempio, apparirà così:

Hai due opzioni per rispondere a questo avviso. La prima è aggiungere le nuove etichette richiamando la configurazione del servizio per l’host in Setup e aggiornando la configurazione delle etichette con la voce di menu “Hosts > Update host labels”. Il discovery check rOKrà nuovamente alla prossima esecuzione (con un ritardo massimo di due ore), anche se non hai ancora attivato le modifiche. Se non vuoi aspettare così a lungo, puoi anche aggiornare manualmente il servizio immediatamente selezionando "Reschedule check" nel menu azione del servizio.
Se questo riguarda molti host contemporaneamente, sicuramente non vorrai visitare la configurazione del servizio per ogni singolo host. La cosa migliore da fare in questo caso è eseguire l’azione massiva per “Run bulk service discovery” e selezionare “Only discover new host labels” come modalità — oppure, in alternativa, “Add unmonitored services and new host labels” se vuoi anche cogliere l’occasione per aggiungere nuovi servizi.
Il secondo modo per far diventare verde il discovery check è riconfigurarlo in modo che non ti avvisi più delle nuove etichette. Per farlo, vai al set di regole "Periodic service discovery" e modifica la regola esistente: lì troverai l'opzione "Severity of new host labels":

Per impostazione predefinita, questa opzione è impostata su "Warning". Scegli "OK - do not alert, just display" e il check non emetterà più alcun avviso.
Le etichette trovate tramite il discovery check vengono visualizzate in giallo-ocra.
2.6. Ordine di priorità nell'assegnazione delle etichette
In teoria, la stessa etichetta può essere definita con valori diversi in più fonti contemporaneamente. Ecco perché esiste il seguente ordine di priorità:
Innanzitutto, le etichette esplicite, ovvero quelle che definisci per l'host o la cartella direttamente nel Setup.
Al secondo posto ci sono le etichette create dalle regole.
All'ultimo posto ci sono le etichette generate automaticamente.
Queste regole di precedenza ti offrono il massimo controllo sulle etichette.
3. Le etichette come condizioni nelle regole
3.1. Condizioni nelle regole
Una funzione importante delle etichette è la stessa delle caratteristiche dell'host: ovvero, il loro utilizzo come condizione nelle regole. Questo è particolarmente utile per le etichette generate automaticamente, perché puoi adattare il tuo monitoraggio in modo completamente automatico sulla base delle informazioni provenienti da AWS, Azure, Kubernetes e simili.
Aggiungi le condizioni con Add to condition per le etichette dell'host o di servizio.
Ora seleziona is o not per formulare una condizione positiva o negativa e poi inserisci l'etichetta nel formato usuale key:value.
Presta attenzione all’ortografia esatta, comprese le maiuscole.
Poiché le etichette possono essere definite senza specifiche, Checkmk non è in grado di riconoscere gli errori di battitura.
Tuttavia: quando digiti un’etichetta, Checkmk suggerisce le etichette esistenti se corrispondono a ciò che hai digitato in precedenza.
Nei suggerimenti non viene fatta alcuna distinzione tra etichette di host e di servizio: vengono proposte tutte le etichette corrispondenti.
Presta attenzione all’ortografia corretta, poiché errori di ortografia, maiuscole errate, ecc. comporteranno il mancato funzionamento della regola.
Tuttavia, la definizione della condizione va oltre:
Per affinare ulteriormente la condizione, hai a disposizione anche gli operatori booleani Not, And e Or.
Qui, Not è l'abbreviazione di And Not.
Notsignifica che la condizione A deve essere soddisfatta e la condizione B non deve essere soddisfatta allo stesso tempo.Andsignifica che sia la condizione A che la condizione B devono essere soddisfatte contemporaneamente.Orsignifica che deve essere soddisfatta o la condizione A o la condizione B, ma possono essere soddisfatte anche entrambe le condizioni.
Gli operatori vengono elaborati esattamente in questa priorità — |
Ad esempio, per trovare host con l'etichetta cmk/site:today ma senza l'etichetta cmk/piggyback_source_today:yes, la condizione potrebbe essere simile a questa:

Puoi affinare questa condizione con is o not aggiungendo qualsiasi altra specifica. Oppure puoi aggiungere un nuovo gruppo di condizioni con Add to condition, il che rende la condizione, ora più complessa, più facile da leggere, ma non cambia la valutazione dell'algebra booleana:

Se non hai definito né Host tags né Host labels, la regola in questione viene sempre applicata a tutti gli host o servizi. Se hai creato diverse regole, le regole successive potrebbero non essere più valutate, vedi Tipi di analisi delle regole. |
Puoi utilizzare sia le etichette che i tag host in una regola. Questi vengono automaticamente collegati con un AND. La regola si applica quindi solo se entrambe le condizioni sono soddisfatte contemporaneamente.
3.2. Condizioni nelle regole di notifica
Puoi utilizzare le etichette anche come condizioni nelle regole di notifica. L'utilizzo è lo stesso delle altre condizioni, quindi non devi imparare nulla di nuovo per usarle. Seleziona "Match host labels" e inserisci semplicemente quali etichette deve avere un host o un servizio, in modo da attivare una notifica tramite questa regola. Anche in questo caso, più etichette sono collegate dall'operazione AND.
4. Etichette nelle visualizzazioni
Finora abbiamo parlato solo delle etichette nell'ambiente di configurazione (o, in breve: il Setup). Le etichette sono visibili anche nell'ambiente di monitoraggio, ad esempio nella visualizzazione di stato di un host:

Qui puoi vedere le etichette in diversi colori a seconda di come sono state create: le etichette esplicite in viola, quelle create dalle regole in rosso e quelle create da un discovery check in giallo-ocra.
L'evidenziazione colorata delle etichette non solo risalta visivamente nella visualizzazione, ma è anche pratica perché puoi cliccarci sopra, il che ti porta a una ricerca di tutti gli host con questa etichetta:

Qui puoi cercare gli host con questa etichetta (utilizzando l'is predefinito) o senza questa etichetta (utilizzando l'opzione is not).
Puoi anche utilizzare gli operatori booleani Not, And e Or nella ricerca per etichetta, come descritto nella sezione Condizioni nelle regole.
Ad esempio, per trovare host Linux che si trovano a Monaco e che non sono server web, il filtro potrebbe essere simile a questo:

Puoi affinare ulteriormente questo filtro, ad esempio per trovare anche host Windows che siano sia "headless" (con or), sia francesi (con and). Puoi inserire le tre nuove righe per questa estensione del filtro direttamente sotto quelle esistenti — oppure puoi creare un nuovo gruppo con Add to query, il che rende il filtro, ora più complesso, più facile da leggere, ma non modifica la valutazione dell'algebra booleana:

Se ti interessa sapere quale sostituzione di parentesi genera Checkmk dai filtri di etichetta inseriti, puoi visualizzare la query Livestatus associata. Per farlo, attiva Setup > General > Global settings > Debug Livestatus queries. |
Nella barra dei filtri puoi ovviamente combinare la ricerca per etichette con gli altri parametri di ricerca disponibili.
5. Etichette di servizio
Anche i servizi possono avere delle etichette. Sono simili alle etichette dell'host, ma con alcune piccole differenze:
Non puoi definire le etichette di servizio in modo esplicito. Queste possono essere create solo tramite regole (Service labels) o automaticamente.
Puoi anche formulare condizioni con le etichette di servizio. In un set di regole, le etichette di servizio vengono proposte come input solo se la regola può corrispondere a un servizio.
6. Etichette agenti
Checkmk Ultimate include l'opzione per creare host automaticamente. A tal fine, l'intera catena di registrazione dell'agente, creazione dell'host, scoperta del servizio e attivazione delle modifiche è automatizzata. La creazione dell'host avviene dopo la registrazione.
Questa automazione crea alcune difficoltà nella strutturazione degli host appena creati.
Finora, il sistema operativo (memorizzato nell'etichetta dell'host cmk/os_family) poteva essere determinato solo dall'output dell'agente.
Tuttavia, per ottenerlo, l'host deve essere già stato creato.
Per questo motivo è stato introdotto il concetto di etichette agente volatili. Queste etichette vengono inviate durante la registrazione e sono quindi disponibili prima della creazione del primo agente. Durante la registrazione, puoi utilizzare le etichette agente per determinare se un host debba effettivamente essere creato nel monitoraggio e, in tal caso, per influenzare la cartella dell’host, nonché altri attributi dell’host. Una volta completata la registrazione, non è più possibile accedere alle etichette agente.
Durante la registrazione vengono sempre trasferite due etichette agente predefinite:
cmk/os-familycontiene la famiglia del sistema operativo (attualmenteWindowsoLinux).cmk/hostname-simplecontiene il nome del computer in forma abbreviata (cioè senza la parte relativa al dominio)
Puoi assegnare liberamente etichette agenti aggiuntive e personalizzate, ad esempio:
organizational/department:documentation.
Agli host registrati automaticamente viene assegnata l'etichetta dell'host cmk/agent_auto_registered:yes.
L'assegnazione diretta di etichette dell'host in base a specifiche etichette agente non è supportata.
Tuttavia, hai la possibilità di registrare gli host in una cartella (temporanea) e poi assegnare etichette dell'host a tutti gli host presenti in quella cartella.
7. Ulteriori informazioni
7.1. Etichette dell'host generate automaticamente
| Chiave | Valori |
|---|---|
|
|
|
|
|
Nome dell'account AWS a cui appartiene l'host |
|
Tag dagli oggetti AWS |
|
Gruppo di risorse a cui appartiene l'oggetto Azure |
|
Tag dagli oggetti Azure |
|
|
|
|
|
Nome del dispositivo SNMP trasmesso, ad es. |
|
Immagine Docker, ad es. |
|
Nome dell'immagine Docker, ad es. |
|
Versione dell'immagine Docker, ad es. |
|
|
|
Queste etichette vengono generate per qualsiasi etichetta Kubernetes che sia un'annotazione Kubernetes valida (configurabile tramite la regola Kubernetes). |
|
|
|
nome del cluster Kubernetes |
|
nome dell'host del cluster Kubernetes |
|
Cronjob Kubernetes |
|
Nome del DaemonSet |
|
Nome del deployment |
|
Nome dello spazio dei nomi Kubernetes associato |
|
Nome del nodo Kubernetes associato. Gli host Checkmk di tipo Pod o Node ricevono questa etichetta. |
|
Tipo di oggetto Kubernetes, ad es. |
|
Nome dello StatefulSet |
|
|
|
Tipo di dispositivo Meraki, ad es. |
|
ID di rete a cui appartiene il dispositivo Meraki |
|
ID dell'organizzazione a cui appartiene il dispositivo Meraki |
|
Nome dell'organizzazione a cui appartiene il dispositivo Meraki |
|
|
|
Sistema operativo, segnalato dall'agente come |
|
Tipo di sistema operativo, segnalato dall'agente come |
|
Nome del sistema operativo, segnalato dall'agente come |
|
Piattaforma del sistema operativo, segnalata dall'agente come |
|
Versione del sistema operativo, segnalata dall'agente come |
|
|
|
|
