Checkmk
to checkmk.com
Important

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. Perché la riga di comando?

Una volta effettuato l'installazione di un sistema Checkmk, è possibile configurarlo e gestirlo al 100% tramite l'interfaccia web. Ci sono tuttavia situazioni in cui è utile addentrarsi nei meandri della riga di comando, ad esempio:

  • quando si cerca l'origine dei problemi

  • quando si automatizza l'amministrazione di Checkmk con l'API REST

  • quando si programmano e si testano le proprie estensioni

  • per capire come funziona Checkmk internamente

  • se semplicemente ti piace lavorare con la riga di comando!

Questo articolo ti presenterà i comandi, i file e le directory più importanti di Checkmk.

2. L'utente dell’istanza

2.1. Esegui il login come utente dell’istanza

Quando amministri Checkmk, salvo poche eccezioni, non dovrai mai lavorare come utente root. In questo articolo daremo per scontato che tu abbia effettuato l'accesso come utente dell’istanza. Questo si fa, ad esempio, con:

root@linux# su - mysite
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

È anche possibile effettuare un login SSH diretto a un’istanza senza passare per root. Dato che l'utente dell’istanza è un utente Linux "del tutto normale", devi semplicemente assegnargli una password (il che richiede i permessi di root, una sola volta, per la configurazione):

root@linux# passwd mysite
Enter new Unix password: **********
Retype new Unix password: **********
passwd: password updated successfully
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Successivamente dovrebbe essere possibile effettuare un login SSH direttamente da un altro computer (gli utenti Windows dovrebbero preferibilmente utilizzare PuTTY per questo). Da Linux questo login viene semplicemente eseguito con il comando ssh:

user@otherhost:~$ ssh mysite@myserver123
mysite@myserver123's password: **********
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Al primo login probabilmente riceverai un avviso relativo a una chiave host sconosciuta. Se sei certo che in quel breve momento nessun hacker abbia preso il controllo dell'indirizzo IP del tuo sistema operativo, puoi semplicemente verificarlo con yes.

Puoi anche lavorare con la riga di comando sull'Checkmk Appliance. Come farlo è spiegato in un articolo a parte.

2.2. Profilo e variabili d'ambiente

Affinché sorgano il minor numero possibile di problemi, in particolare a causa delle singole distribuzioni o delle diverse configurazioni del sistema operativo, il sistema Checkmk garantisce che l'utente dell’istanza – e allo stesso modo tutti i processi di monitoraggio – abbiano sempre un ambiente chiaramente definito. Insieme alla directory home e ai permessi, le variabili d'ambiente giocano un ruolo importante.

Tra le altre cose, quando accedi come utente dell’istanza, le seguenti variabili verranno impostate o modificate. Queste variabili sono disponibili per l'uso in tutti i processi in esecuzione all'interno dell'istanza. Ciò vale anche per gli script richiamati indirettamente da questi processi (ad esempio, gli script di notifica propri dell'utente).

OMD_SITE

Il nome del sito (mysite). Negli script personalizzati dovresti sempre usare questa variabile invece di un nome del sito hardcoded (ad es. con $OMD_SITE nella shell). In questo modo lo script può essere utilizzato senza modifiche anche in altre istanze.

OMD_ROOT

Il percorso della directory dell'istanza (/omd/sites/mysite/).

PATH

Directory in cui verranno cercati i programmi eseguibili. Ad esempio, Checkmk conserva qui il file ~/bin/ del sito. In caso di nomi identici, i programmi Checkmk hanno la priorità – questo è importante, ad esempio, per il comando mail, di cui viene fornita una versione speciale con l’installazione di Checkmk.

LD_LIBRARY_PATH

Directory in cui vengono cercate le librerie binarie aggiuntive. Utilizzando questa variabile, Checkmk garantisce che le librerie fornite con Checkmk abbiano la priorità su quelle installate nel normale sistema operativo.

PERL5LIB

Percorso di ricerca per i moduli Perl. Anche in questo caso, in caso di dubbio, le varianti dei moduli fornite da Checkmk hanno la priorità.

LANG

L'impostazione della lingua per i comandi da riga di comando. Questa impostazione viene ripresa dall'installazione di Linux. Questa variabile viene automaticamente rimossa nelle istanze del sito e l'impostazione torna all'inglese predefinito! Questo influisce anche su altre impostazioni regionali. Rimuovere LANG è molto importante, poiché diversi plug-in standard di Nagios, ad esempio l'impostazione della lingua tedesca, utilizzano una virgola come separatore decimale invece del punto. L'output non può quindi essere elaborato correttamente.

Con il comando env puoi visualizzare tutte le variabili d'ambiente; aggiungendo | sort a questo comando, l'elenco risulterà un po' più chiaro:

OMD[mysite]:~$ env | sort
HOME=/omd/sites/mysite
LANG=de_DE.UTF-8
LD_LIBRARY_PATH=/omd/sites/mysite/local/lib:/omd/sites/mysite/lib
LOGNAME=mysite
MAILRC=/omd/sites/mysite/etc/mail.rc
MAIL=/var/mail/mysite
MANPATH=/omd/sites/mysite/share/man:
MODULEBUILDRC=/omd/sites/mysite/.modulebuildrc
MP_STATE_DIRECTORY=/omd/sites/mysite/var/monitoring-plugins
NAGIOS_PLUGIN_STATE_DIRECTORY=/omd/sites/mysite/var/monitoring-plugins
OMD_ROOT=/omd/sites/mysite
OMD_SITE=mysite
PATH=/omd/sites/mysite/lib/rabbitmq/sbin:/omd/sites/mysite/lib/perl5/bin:/omd/sites/mysite/local/bin:/omd/sites/mysite/bin:/omd/sites/mysite/local/lib/perl5/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PERL5LIB=/omd/sites/mysite/local/lib/perl5/lib/perl5:/omd/sites/mysite/lib/perl5/lib/perl5:
PERL_MM_OPT=INSTALL_BASE=/omd/sites/mysite/local/lib/perl5/
PWD=/omd/sites/mysite
SHELL=/bin/bash
SHLVL=1
TERM=xterm
USER=mysite
_=/usr/bin/env
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

In Linux l'ambiente è un attributo di un processo. Ogni processo ha le proprie variabili, che trasmette automaticamente ai sottoprocessi. Questi iniziano inizialmente con le stesse variabili ereditate, ma possono anche modificarle.

Con il comando `env` puoi sempre effettuare la visualizzazione dell'ambiente della shell corrente. Se sospetti che ci sia un errore nell'ambiente di un particolare processo, con un piccolo trucco puoi comunque visualizzare un elenco del suo ambiente. Per questo ti serve solo l'ID del processo (PID). Puoi identificarlo, ad esempio, con ps ax, pstree -p o top. In questo modo puoi accedere direttamente al file environ del processo tramite il file system /proc. Ecco, ad esempio, un comando adatto per il PID 13222:

OMD[mysite]:~$ tr \\0 \\n < /proc/13222/environ | sort
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Se hai bisogno di variabili personalizzate per i tuoi script o altri software da eseguire nell'istanza, salvale nel file ~/etc/environment, creato appositamente per questo scopo. Tutte le variabili definite qui saranno disponibili ovunque all'interno dell'istanza:

~/etc/environment
# Custom environment variables
#
# Here you can set environment variables. These will
# be set in interactive mode when logging in as site
# user and also when starting the OMD processes with
# omd start.
#
# This file has shell syntax, but without 'export'.
# Better use quotes if your values contain spaces.
#
# Example:
#
# FOO="bar"
# FOO2="With some spaces"
#
MY_SUPER_VAR=blabla123
MY_OTHER_VAR=10.88.112.17

2.3. Personalizzazione della shell

Se desideri personalizzare la tua shell (prompt o altre cose), puoi farlo come al solito nel file .bashrc. Le variabili d'ambiente appartengono comunque a ~/etc/environment, in modo che siano sicuramente disponibili per tutti i processi.

Non c'è nulla che ti impedisca di avere il tuo file .vimrc se ti piace lavorare con Vim.

3. La struttura delle directory

3.1. La separazione tra software e dati

Il grafico seguente mostra le directory più importanti in un'installazione di Checkmk con un'istanza denominata mysite e un <version> chiamato, ad esempio, 2.4.0p24.cee:

Illustration of the directory structure of a Checkmk site.

La base di questa struttura è fornita dalla directory /omd. Senza eccezioni, tutti i file di Checkmk si trovano qui. /omd è in realtà un collegamento simbolico a /opt/omd, mentre i dati fisici effettivi si trovano in /opt – ma tutti i percorsi dei dati in Checkmk utilizzano sempre /omd.

È importante la separazione tra dati (evidenziati in giallo) e software (in blu). I dati dell’istanza si trovano in /omd/sites/, mentre il software installato in /omd/versions/.

3.2. Directory dell'istanza

Come ogni utente Linux, anche l'utente dell'istanza ha una directory home, che chiamiamo directory dell'istanza. Se il tuo sito si chiama mysite, lo troverai in /omd/sites/mysite/. Come di consueto in Linux, la shell abbrevia la propria directory home con una tilde (~) (o trattino). Dato che subito dopo il login ti troverai effettivamente in questa directory, la tilde appare automaticamente nel prompt di input:

OMD[mysite]:~$

Le sottodirectory della directory dell'istanza vengono mostrate relative alla tilde:

OMD[mysite]:~$ cd var/log
OMD[mysite]:~/var/log$
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

All'interno della directory dell'istanza si trovano diverse sottodirectory, che possono essere elencate con ll (alias di ls -l):

OMD[mysite]:~$ ll
total 16
lrwxrwxrwx  1 mysite mysite   11 Jan 24 11:56 bin -> version/bin/
drwxr-xr-x 19 mysite mysite 4096 Jan 24 11:56 etc/
lrwxrwxrwx  1 mysite mysite   15 Jan 24 11:56 include -> version/include/
lrwxrwxrwx  1 mysite mysite   11 Jan 24 11:56 lib -> version/lib/
drwxr-xr-x  5 mysite mysite 4096 Jan 24 11:56 local/
lrwxrwxrwx  1 mysite mysite   13 Jan 24 11:56 share -> version/share/
drwxr-xr-x  2 mysite mysite 4096 Jan 24 09:57 tmp/
drwxr-xr-x 12 mysite mysite 4096 Jan 24 11:56 var/
lrwxrwxrwx  1 mysite mysite   29 Jan 24 11:56 version -> ../../versions/2.4.0p24.cee/
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Come puoi vedere, le directory bin , include , lib , share e version sono collegamenti simbolici. Le altre sono directory "normali". Questo rispecchia la separazione tra software e dati spiegata sopra. La directory del software deve essere accessibile come sottodirectory all'interno dell'istanza, ma si trova fisicamente in /omd/versions/ e può essere utilizzata anche da altri siti.

Software Dati

Directory

bin, include, lib, share

etc, local, tmp, var

Proprietario

root

Utente dell’istanza (mysite)

Creato da

Installazione di Checkmk

Creazione, configurazione e monitoraggio dell'istanza

Ubicazione fisica

/omd/versions/2.4.0p24.cee/

/omd/sites/mysite/

Tipo di file

Collegamenti simbolici

Directory normali

3.3. Software

Le directory del software, come di consueto in Linux, appartengono a root e quindi non possono essere modificate dagli utenti dell’istanza. Sono presenti le seguenti sottodirectory: quelle riportate nell'esempio si trovano fisicamente all'interno di /omd/versions/2.4.0p24.cee/ e sono accessibili tramite collegamenti simbolici dalla directory dell'istanza:

bin/

Directory per i programmi eseguibili. Qui si trova, ad esempio, il comando cmk.

lib/

Directory C, plug-in per Apache e Python – e nella sottodirectory nagios/plugins/ – plug-in di monitoraggio standard, scritti per lo più in C o Perl.

share/

La parte principale del software installato. In share/check_mk si trovano moltissimi componenti – tra gli altri, ben oltre 2.000 plug-in di controllo.

include/

Contiene file di inclusione per programmi in C, che dovrebbero essere collegati alle librerie in lib/. Questa directory non è importante e viene utilizzata solo se desideri tradurre tu stesso i programmi in C.

Il collegamento simbolico version è una "tappa intermedia" e funge da punto di transito per la versione utilizzata dall'istanza. Durante un aggiornamento del software, questo verrà switchato dalla versione vecchia a quella nuova. Tuttavia, non tentare di eseguire un aggiornamento manualmente modificando il collegamento, poiché un aggiornamento richiede una serie di ulteriori passaggi – che falliranno.

3.4. Dati

I dati effettivi di un sito si trovano nelle restanti sottodirectory della directory dell'istanza. Senza eccezioni, questi appartengono all’utente dell’istanza. È inclusa anche la directory dell'istanza stessa. Checkmk non memorizza nulla oltre alle directory elencate lì. Qui puoi creare senza problemi i tuoi file e directory, in cui puoi conservare a tuo piacimento test, dati di scaricamento, copie dei file di log, ecc.

Sono state predefinite le seguenti directory:

etc/

File di configurazione.
Questi vengono modificati tramite le azioni nel Setup di Checkmk.
Nota: anche gli script in etc/init.d sono in realtà "file di configurazione", poiché si trovano in etc/. Questo segue lo stesso schema presente in ogni sistema Linux in /etc/init.d/. Sconsigliamo tuttavia di modificare questo script, poiché ciò può causare conflitti durante un aggiornamento del software. Non è necessario apportare modifiche agli script.

var/

Dati di tempo di esecuzione.
Tutti i dati generati dal monitoraggio verranno memorizzati qui. A seconda del numero di host e servizi, può accumularsi un volume immenso di dati – di cui la maggior parte è costituita dai valori misurati registrati negli RRD.

tmp/

Dati volatili.
Checkmk e altri componenti memorizzano qui i dati temporanei (che non devono essere conservati). Qui viene quindi montato un file system tmpfs. Si tratta di un file system che gestisce i dati nella RAM, generando così zero Disk-IO. Il riavvio del computer comporta la perdita di tutti i dati presenti in tmp/! Tuttavia, l'arresto e l'avvio dell'istanza non cancellano i dati. Dati come socket, pipe e file PID si trovano in tmp/run: sono necessari per la comunicazione e la gestione dei processi del server. Non usare tmp/ per archiviare i tuoi dati, poiché questa directory è montata sulla RAM, dove lo spazio è piuttosto limitato. Archivia i tuoi dati direttamente nella directory dell'istanza o in una tua sottodirectory al suo interno.

local/

Estensioni personalizzate.
Una gerarchia "ombra" delle directory del software bin/, lib/ e share/ si trova in local/. Queste sono destinate alle tue modifiche o estensioni al software. Vale anche qui: In nessun caso memorizzare file di test, file di log, copie di sicurezza o qualsiasi altra cosa che non appartenga a quel luogo, in local/. Checkmk potrebbe tentare di eseguire questi file come parte del software. Allo stesso modo, in un monitoraggio distribuito, i dati verranno duplicati anche su tutte le istanze remote.

3.5. Modifica ed estensione di Checkmk – i file locali

Tip

Alcune affermazioni riportate in questa sezione riguardo alla priorità dei file locali (specifici del sito) rispetto ai file con lo stesso nome nella directory del software non sono più corrette. Aggiorneremo presto le sezioni interessate.

Come appena mostrato nella tabella sopra, la directory ~/local/ con le sue numerose sottodirectory è destinata alle tue estensioni personalizzate. In una nuova istanza, tutte le directory in ~/local/ sono inizialmente vuote.

Con il pratico comando tree puoi ottenere rapidamente una panoramica della struttura di ~/local/. L'opzione -L 3 limita la profondità a 3:

OMD[mysite]:~$ tree -L 3 local
local
├── bin
├── lib
│   ├── apache
│   ├── check_mk -> python3/cmk
│   ├── nagios
│   │   └── plugins
│   ├── python
│   └── python3
│       ├── cmk
│       └── cmk_addons
└── share
    ├── check_mk
    │   ├── agents
    │   ├── alert_handlers
    │   ├── checkman
    │   ├── checks
    │   ├── inventory
    │   ├── locale
    │   ├── mibs
    │   ├── notifications
    │   ├── pnp-rraconf
    │   ├── pnp-templates
    │   ├── reporting
    │   └── web
    ├── diskspace
    ├── doc
    │   └── check_mk
    ├── nagios
    │   └── htdocs
    ├── nagvis
    │   └── htdocs
    └── snmp
        └── mibs
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Tutte le directory al livello più basso sono attivamente integrate nel software. Un file memorizzato qui verrà trattato come se si trovasse nella directory con lo stesso nome all'interno di /omd/versions/…​ (o, rispettivamente, nel percorso logico dall'istanza in ~/bin/, ~/lib/ o ~/share/).

Esempio: nell'istanza, i programmi eseguibili verranno cercati in ~/bin/ e in ~/local/bin/.

In questo caso, se i nomi sono identici, il file in ~/local/ ha sempre la priorità. Questo permette di modificare il software senza dover cambiare i file di installazione in /omd/versions/. La procedura è semplice:

  1. Copia il file desiderato nella directory appropriata in ~/local/.

  2. Modifica questo file.

  3. Riavvia il servizio corrispondente affinché la modifica abbia effetto.

Per quanto riguarda il punto 3 sopra, se non sai esattamente a quale servizio si applica la modifica, riavvia semplicemente l'intera istanza con omd restart.

3.6. File di log

In Checkmk – come già descritto – i file di log sono memorizzati nella directory dei dati var/. Lì si trovano i file di log dei componenti rilevanti. Di seguito è riportato un output abbreviato per una delle edizioni commerciali:

OMD[mysite]:~$ ll -R var/log/
var/log/:
total 1268
drwxr-x--- 2 mysite_cce mysite_cce   4096 May 19 15:20 agent-receiver/
-rw------- 1 mysite_cce mysite_cce  13646 Aug 14 12:02 alerts.log
drwxr-x--- 2 mysite_cce mysite_cce   4096 May 19 15:20 apache/
drwx------ 2 mysite_cce mysite_cce   4096 May 19 15:20 automation-helper/
-rw------- 1 mysite_cce mysite_cce 379995 Aug 14 14:35 cmc.log
-rw------- 1 mysite_cce mysite_cce  57808 Aug 14 12:03 dcd.log
-rw------- 1 mysite_cce mysite_cce      0 May 19 16:05 diskspace.log
-rw------- 1 mysite_cce mysite_cce 529922 Aug 14 18:12 licensing.log
-rw------- 1 mysite_cce mysite_cce   8395 Aug 14 12:02 liveproxyd.log
-rw-rw---- 1 mysite_cce mysite_cce     62 Aug 14 18:13 liveproxyd.state
drwxr-x--- 2 mysite_cce mysite_cce   4096 May 19 15:19 mkeventd/
-rw------- 1 mysite_cce mysite_cce  37345 Aug 14 12:02 mkeventd.log
-rw------- 1 mysite_cce mysite_cce  63829 Aug 14 14:35 mknotifyd.log
-rw-rw---- 1 mysite_cce mysite_cce    564 Aug 14 18:13 mknotifyd.state
-rw------- 1 mysite_cce mysite_cce  30060 Aug 14 14:35 notify.log
-rw------- 1 mysite_cce mysite_cce  32202 Aug 14 12:02 redis-server.log
-rw------- 1 mysite_cce mysite_cce      0 May 19 15:20 rrdcached.log
-rw------- 1 mysite_cce mysite_cce  21132 Sep  4 18:43 security.log
drwx------ 2 mysite_cce mysite_cce   4096 May 19 15:20 ui-job-scheduler/
-rw------- 1 mysite_cce mysite_cce  25871 Sep  4 09:17 update.log
-rw------- 1 mysite_cce mysite_cce   2486 Aug 14 12:12 web.log

var/log/agent-receiver:
total 264
-rw-r--r-- 1 mysite_cce mysite_cce 233243 Jun 18 10:25 access.log
-rw-r--r-- 1 mysite_cce mysite_cce      0 May 19 15:20 agent-receiver.log
-rw-r--r-- 1 mysite_cce mysite_cce  27546 Aug 14 12:02 error.log
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Sull'interfaccia web puoi configurare facilmente la quantità di dati da scrivere nei file di log cercando in Setup > General > Global settings tutte le voci con logging:

List of global settings for logging.
Le impostazioni globali per la registrazione in un'edizione commerciale
Important

I file di log possono diventare rapidamente molto grandi se è stato impostato un livello di log elevato. In genere è consigliabile utilizzare tali impostazioni per una personalizzazione temporanea, ad esempio come ausilio nell'identificazione dei problemi.

4. Il comando cmk

Insieme al comando omd, che serve per avviare e arrestare le istanze, per la configurazione di base dei componenti e per avviare un aggiornamento software, cmk è il comando più importante. Con questo comando puoi creare una configurazione per un nucleo di monitoraggio, eseguire controlli manualmente, effettuare la scoperta del servizio e molto altro ancora.

4.1. Le opzioni del comando

Il comando cmk è in realtà un'abbreviazione di check_mk, introdotta per rendere il comando più veloce da digitare. Il comando include una guida in linea integrata e molto dettagliata, che può essere richiamata con l'opzion--help:

OMD[mysite]:~$ cmk -h
WAYS TO CALL:
 cmk  --automation [COMMAND...]          Internal helper to invoke Check_MK actions
 cmk  --check [HOST [IPADDRESS]]         Check all services on the given HOST
 cmk  --check-discovery HOSTNAME         Check for not yet monitored services
...
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Come puoi vedere nel comando sopra, abbiamo richiamato la guida con l'opzione -h invece che --help. Perché ciò che vale per il comando stesso vale anche per le sue opzioni: meno c'è da digitare, più veloce è. Non per tutte le opzioni, ma per quelle che servono spesso, c'è quindi un modulo abbreviato oltre a quello lungo. Anche se il modulo lungo è più intuitivo, soprattutto per i principianti (check_mk --list-hosts) rispetto al modulo abbreviato (cmk -l), useremo il modulo abbreviato nel manuale. In caso di dubbio, puoi sempre consultare la guida del comando. Dare un'occhiata più approfondita alla guida del comando è comunque una buona idea, dato che non presenteremo tutte le opzioni nel manuale.

Inserendo un'opzione, avvii il comando cmk in una determinata modalità. Di seguito trovi una panoramica delle opzioni che presenteremo in questo capitolo, ma anche in altre parti del manuale:

Opzione Funzione

Nucleo di monitoraggio

cmk -R

Riavvio del core

cmk -O

Caricamento di una nuova configurazione nel core

cmk -U

Creazione di una nuova configurazione per il core

cmk -N

Visualizza la configurazione Nagios del core

Controlli

cmk myserver123

Esecuzione dei controlli sull'host myserver123

Servizi

cmk -I myserver123

Esecuzione della scoperta del servizio

cmk --check-discovery myserver123

Esegue il discovery check sull'host, che verifica la presenza di servizi nuovi e scomparsi e di nuove etichette dell'host. Quando si verifica una modifica, l'host viene "contrassegnato" creando un file con il nome host in ~/var/check_mk/autodiscovery — ma solo se l'aggiornamento automatico della configurazione dei servizi è abilitato in Checkmk (nel set di regole Periodic service discovery).

Agenti

cmk -d myserver123

Recupero dell'output dell'agente

cmk -A myserver123

Agenti di baking

Diagnostica

cmk -l

Elenco degli host

cmk --list-tag mytag

Elenco degli host con tag host

cmk -D myserver123

Visualizzazione della configurazione dell'host

Informazioni

cmk -V

Visualizza la versione di Checkmk installata nell'istanza.

cmk -L

Elenco dei plug-in di controllo

cmk -m

Accedere al catalogo dei plugin per i controlli

cmk -M df

Visualizzazione della pagina di manuale del plug-in di controllo (in questo caso del plug-in df)

Temi speciali

cmk --update-dns-cache

Cancella la cache DNS e la ricrea. Per i dettagli sulla cache DNS, vedi l'articolo sugli host. Di default, questo comando viene eseguito in un'istanza Checkmk una volta al giorno tramite cronjob.

cmk --cleanup-piggyback

Elimina tutti i dati piggyback obsoleti nella directory ~/tmp/check_mk/piggyback/. Per impostazione predefinita, questo comando viene eseguito in un'istanza Checkmk una volta al giorno tramite cronjob.

cmk -P

Gestione degli MKP

cmk --snmpwalk myswitch

Esecuzione di uno SNMP walk dall'host myswitch

cmk --snmptranslate

Tradurre un SNMP walk

cmk --create-diagnostics-dump

Creazione di un dump di supporto e diagnostica

In alcune modalità sono disponibili ulteriori opzioni specifiche, ad esempio puoi limitare la scoperta del servizio a determinati controlli, come il controllo df con il comando cmk -I --detect-plugins=df myserver123.

Alcune opzioni funzionano sempre, indipendentemente dalla modalità con cui viene eseguito il comando:

Opzione Funzione

cmk -v

Richiede a cmk di produrre un dump dettagliato della sua attività corrente ("verbose")

cmk -vv

Come sopra, ma con ancora più dettagli: "very verbose"

cmk --cache

Le informazioni vengono lette dai file di cache, anche se non sono aggiornati. L'agente viene contattato solo se non esiste alcun file di cache. I dati dell'agente memorizzati nella cache dell'host si trovano in ~/tmp/check_mk/cache.

cmk --no-tcp

Funziona come --cache, ma si interrompe se un file di cache è assente o non aggiornato. In questo modo, in qualsiasi situazione puoi impedire l'accesso all'agente.

cmk --no-cache

Le informazioni vengono sempre recuperate aggiornate, ovvero non vengono utilizzati file di cache.

cmk --usewalk

Per gli host SNMP: invece di accedere all'agente SNMP, questa opzione utilizza un walk SNMP memorizzato, che è stato precedentemente recuperato con cmk --snmpwalk myserver123. Questi walk sono memorizzati in ~/var/check_mk/snmpwalks.

cmk --debug

Se si verifica un errore, questa opzione garantisce che non venga più intercettato, ma che venga visualizzata per intero l'eccezione Python originale. Questa può essere un'informazione importante per lo sviluppatore, poiché mostra la posizione esatta del programma in cui si trova l'errore. Sarà anche molto utile per individuare gli errori nei plug-in di controllo scritti autonomamente. Se durante l'esecuzione di cmk si verifica un errore che dovrebbe essere segnalato al supporto o tramite feedback, ripeti la richiesta aggiungendo l'opzione --debug e allega la traccia Python alla tua e-mail.

Nella sezione seguente mostreremo come utilizzare i comandi. Gli output di esempio sono per lo più riportati in forma abbreviata.

4.2. Comandi per il nucleo di monitoraggio

Le edizioni commerciali utilizzano il Checkmk Micro Core (CMC) come nucleo di monitoraggio, mentre la Comunità Checkmk utilizza Nagios. Un compito importante dell'cmk è la generazione di un file di configurazione leggibile dal nucleo, che contenga tutti gli host, i servizi, i contatti, i gruppi di contatti, i periodi di tempo, ecc. configurati. Sulla base di queste informazioni, il nucleo sa quali controlli devono essere eseguiti e quali oggetti deve fornire alla GUI tramite Livestatus.

Sia per Nagios che per il CMC, è fondamentale che il numero di host, servizi e altri oggetti rimanga sempre statico durante il funzionamento, e che questo numero possa essere modificato solo tramite la generazione di una nuova configurazione, seguita da un ricaricamento del core. Con Nagios, questo richiede un riavvio del core. Il CMC dispone di una funzione molto efficiente per il ricaricamento della propria configurazione durante l'elaborazione attiva.

La tabella seguente evidenzia le differenze importanti tra le configurazioni dei due core:

Nagios CMC

File di configurazione

~/etc/nagios/conf.d/check_mk_objects.cfg

~/var/check_mk/core/config

Tipo di file

File di testo con comandi define

Binary file compresso e ottimizzato

Attivazione

Riavvio del core

Comando del core per ricaricare la configurazione

Comando

cmk -R

cmk -O

È sempre necessario rigenerare la configurazione se sono stati modificati i contenuti dei file di configurazione in ~/etc/check_mk/conf.d o i servizi rilevati automaticamente in ~/var/check_mk/autochecks. L'Setupe tiene traccia di tali modifiche e le evidenzia nella GUI come modifiche da attivare. I seguenti comandi sono disponibili per l'attivazione tramite la riga di comando:

Opzione Funzione

cmk -R

Genera una nuova configurazione per il core e riavvia il core (analogamente a omd restart core). Questo è il metodo previsto per Nagios.

cmk -O

Genera la configurazione per il core e la carica senza riavviare l'elaborazione attiva (analogo a omd reload core). Questa è la variante consigliata con il CMC. Attenzione: con Nagios come core, questa opzione funziona, ma può causare perdite di memoria e altre instabilità. A parte questo, questa opzione non esegue comunque un vero e proprio ricaricamento, ma piuttosto arresta e riavvia internamente il processo, per così dire.

cmk -U

Genera la configurazione per il core senza attivarla.

cmk -N

A scopo diagnostico, questa opzione visualizza la configurazione da generare sull'output standard, senza modificare il file di configurazione effettivo. Qui puoi inserire un nome host semplicemente per effettuare la visualizzazione della configurazione dell'host (ad es. cmk -N myserver123).

4.3. Esecuzione dei checks

Una seconda modalità in Checkmk riguarda l'esecuzione dei controlli basati su Checkmk di un host. In questo modo puoi consentire che tutti i servizi rilevati automaticamente, e anche quelli configurati manualmente, vengano controllati immediatamente, senza doverti preoccupare del nucleo di monitoraggio o della GUI.

Per farlo, inserisci cmk --check seguito dal nome di un host configurato nel monitoraggio. Dato che l'opzione --check è l'opzione predefinita di cmk, puoi anche ometterla. Inoltre, dovresti sempre aggiungere le due opzioni -n (non inviare i risultati al core) e -v (visualizza tutti i risultati). Maggiori informazioni su questo nella descrizione delle opzioni qui sotto.

OMD[mysite]:~$ cmk -nv myserver123
+ FETCHING DATA
Get piggybacked data
CPU load             15 min load: 1.53, 15 min load per core: 0.19 (8 cores)
CPU utilization      Total CPU: 10.02%
Check_MK Agent       Version: 2.4.0p24, OS: linux, ...
Disk IO SUMMARY      Read: 412 kB/s, Write: 1.15 MB/s, Latency: 57 microseconds
Filesystem /         Used: 61.61% - 287 GiB of 466 GiB, trend per 1 day 0 hours: +671 MiB, trend per 1 day 0 hours: +0.14%, Time left until disk full: 272 days 23 hours
Interface 2          [tun0], (up), Speed: 10 GBit/s, In: 511 B/s (<0.01%), Out: 184 B/s (<0.01%)
Kernel Performance   Process Creations: 67.64/s, Context Switches: 8509.18/s, Major Page Faults: 2.18/s, Page Swap in: 0.00/s, Page Swap Out: 0.00/s
Memory               Total virtual memory: 37.07% - 6.08 GB of 16.41 GB
Mount options of /   Mount options exactly as expected
Number of threads    2684 (warn/crit at 2000/4000)(!), Usage: 2.13%
TCP Connections      Established: 36
Temperature Zone 0   Temperature: 25.0 °C
Uptime               Up since 2025-09-08 08:54:55, Uptime: 8 hours 8 minutes
[agent] Success, [piggyback] Success (but no data found for this host), execution time 2.1 sec | execution_time=2.070 user_time=0.160 system_time=0.000 ...
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Altri consigli:

  • Non utilizzare questo comando su host di produzione monitorati che utilizzano il monitoraggio dei file di log. I messaggi di log vengono inviati una sola volta dagli agenti e può capitare che un comando manuale cmk -nv li "intercetti", causandone la perdita dal monitoraggio. In tal caso, utilizza l'opzione --no-tcp.

  • Se si utilizza Nagios per il core e si omette l'-n, l'effetto sarà un aggiornamento immediato dei risultati dei check nel core e nella GUI.

  • Il comando è utile quando sviluppi i tuoi plug-in di controllo, perché consente un test più rapido rispetto all'uso della GUI. Se il controllo fallisce e restituisce un SCONOSCIUTO, l'opzione --debug può aiutarti a individuare il punto del codice in cui si trova il problema.

Le seguenti opzioni influenzano il comando:

Opzione Funzione

-v

Output dei risultati del check: Senza questa opzione vedrai solo l'output del servizio di check stesso, e non i risultati degli altri servizi.

-n

Simulazione: i risultati non vengono trasmessi al core, il contatore della performance non viene aggiornato.

--detect-plugins=df,uptime

Limita l'esecuzione ai plug-in di controllo df e uptime. Nel caso di host SNMP, verranno recuperati solo i dati necessari per questi. Questa opzione è utile se sviluppi i tuoi plug-in di controllo e vuoi solo testarli.

4.4. Recupero dell'output dell'agente

Il comando cmk -d recupera e visualizza l'output dell'agente Checkmk di un host. Con cmk -d i dati dell'agente vengono recuperati allo stesso modo del monitoraggio. Non vengono né convalidati né elaborati. Pertanto, i dati mostrati hanno una corrispondenza esatta con quelli trasmessi all'Agent Controller (quando la crittografia TLS è abilitata) o a un programma di tunneling nel caso in cui siano configurati programmi di origine dati.

OMD[mysite]:~$ cmk -d myserver123
<<<check_mk>>>
Version: 2.4.0p24
AgentOS: linux
Hostname: myserver123
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins
LocalDirectory: /usr/lib/check_mk_agent/local
OSType: linux
OSName: Ubuntu
OSVersion: 24.04
OSPlatform: ubuntu
...
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Puoi anche eseguire cmk -d utilizzando il nome o l'indirizzo IP di un host non configurato nel monitoraggio. In questo caso verranno applicate le impostazioni legacy per l'host (connessione TCP alla porta 6556, nessun Agent Controller, nessuna crittografia, nessun programma di origine dati).

4.5. Creazione degli agenti

Nelle edizioni commerciali puoi anche eseguire il baking degli agenti dalla riga di comando, come faresti altrimenti tramite l'interfaccia web. Questo ti offre la possibilità, ad esempio, di aggiornare regolarmente gli agenti, ad esempio tramite un cronjob.

Per eseguire il baking degli agenti, usa l'opzione -A seguita dal nome di uno o più host:

OMD[mysite]:~$ cmk -Av myserver123
Baking packages for targets myserver123:
...
Baking...linux_deb:baking...linux_rpm:baking...solaris_pkg:baking...windows_msi:baking...linux_tgz:baking...solaris_tgz:baking...aix_tgz:baking
...
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

L'output mostra che i pacchetti degli agenti disponibili per l'host myserver123 sono stati compilati con successo. Se non specifichi un host, i pacchetti verranno compilati per tutti gli host.

Il comando esegue il baking solo quando necessario. Se i pacchetti sono ancora aggiornati, l'output sarà simile a questo:

OMD[mysite]:~$ cmk -Av myserver123
Baking packages for targets myserver123:
...
myserver123..linux_deb: up to date (not baking)...linux_rpm: up to date (not baking)...solaris_pkg: up to date (not baking)...windows_msi: up to date (not baking)...linux_tgz: up to date (not baking)...solaris_tgz: up to date (not baking)...aix_tgz: up to date (not baking)...
...
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Puoi comunque forzare la compilazione con l'opzione -f (force).

4.6. Elenco degli host

Il comando `cmk -l` crea semplicemente un elenco dei nomi degli host configurati nell'Setup:

OMD[mysite]:~$ cmk -l
myserver123
myserver124
myserver125
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Poiché i dati vengono forniti "nudi" e "non elaborati", è facile usarli negli script – ad esempio, puoi creare un ciclo su tutti i nomi host:

OMD[mysite]:~$ for host in $(cmk -l) ; do echo "Host: $host" ; done
Host: myserver123
Host: myserver124
Host: myserver125
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Se, invece di echo, inserisci un comando che esegue un'operazione significativa, questo può essere davvero utile.

Anche l'invocazione di cmk --list-tag restituisce i nomi degli host, ma offre anche la possibilità di filtrare in base ai tag host. Basta inserire un tag host e riceverai tutti gli host che hanno questo tag. L'esempio seguente fornisce un elenco di tutti gli host monitorati da SNMP:

OMD[mysite]:~$ cmk --list-tag snmp
myswitch01
myswitch02
myswitch03
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Inserisci più tag e questi verranno collegati con AND. Il comando qui sotto mostra tutti gli host monitorati sia da SNMP che dall'agente Checkmk. Poiché nessun host soddisfa questa condizione, l'output rimane vuoto:

OMD[mysite]:~$ cmk --list-tag snmp checkmk-agent
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

4.7. Visualizzazione della configurazione dell'host

Per uno o più host specificati, cmk -D visualizza i servizi configurati, i tag host, le etichette e altri attributi. Poiché l'elenco dei servizi è molto esteso, può sembrare un po' confuso sul terminale. Invia l'output tramite less -S per evitare un'interruzione:

OMD[mysite]:~$ cmk -D myserver123 | less -S
myserver123
Addresses:              192.168.178.34
Tags:                   [address_family:ip-v4-only], [agent:cmk-agent], [criticality:prod], [ip-v4:ip-v4], [networking:lan], [piggyback:auto-piggyback], [site:mysite], [tcp:tcp]
Labels:                 [cmk/check_mk_server:yes], [cmk/os_family:linux]
Host groups:            mylinuxservers
Contact groups:         all
Agent mode:             Normal Checkmk agent, or special agent if configured
Type of agent:
  TCP: 192.168.178.34:6556
  Process piggyback data from /omd/sites/mysite/tmp/check_mk/piggyback/mycmkserver
Services:
Type of agent:          TCP (port: 6556)
Is aggregated:          no
Services:
  checktype        item              params
  ---------------- ----------------- ------------
  cpu_loads        None              (5.0, 10.0)
  kernel_util      None              {}
...
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

4.8. Informazioni sui plug-in di controllo

Checkmk fornisce di serie un gran numero di plug-in di controllo pronti all’uso. In ogni versione ne vengono aggiunti alcuni nuovi, e la versione 2.4.0 include già più di 2.000 plug-in. Tre opzioni del comando cmk ti danno accesso alle informazioni su questi plug-in.

cmk -L genera un elenco di tutti i plug-in con il loro nome, tipo e una descrizione. Allo stesso tempo, verranno elencati anche eventuali plug-in scritti da te e memorizzati in ~/local/.

Ecco i tipi disponibili:

agent

Valuta i dati provenienti dai plug-in degli agenti o da special agents. L'agente viene (normalmente) recuperato tramite la porta TCP 6556.

snmp

Si occupa del monitoraggio dei dispositivi tramite SNMP.

active

Esegue un active check. Questo include plug-in di terze parti compatibili con Nagios per i quali Checkmk si limita ad adottare la configurazione.

L'elenco può ovviamente essere filtrato semplicemente con grep se si sta cercando qualcosa di specifico:

OMD[mysite]:~$ cmk -L | grep f5
f5_bigip_apm                      snmp   F5 Big-IP: Number of Current SSL/VPN Connections
f5_bigip_chassis_temp             snmp   F5 Big-IP: Chassis Temperature
f5_bigip_cluster                  snmp   F5 Big-IP: Cluster State, Up to Firmware Version 10
f5_bigip_cluster_status           snmp   F5 Big-IP: Active/Active or Passive/Active Cluster Status (< V11.2)
f5_bigip_cluster_status_v11_2     snmp   F5 Big-IP: Active/Active or Passive/Active Cluster Status (> V11.2)
f5_bigip_cluster_v11              snmp   F5 Big-IP: Cluster State for Firmware Version >= 11
f5_bigip_conns                    snmp   F5 Big-IP: Number of Current Connections
f5_bigip_cpu_temp                 snmp   F5 Big-IP: CPU Temperature
f5_bigip_fans                     snmp   F5 Big-IP: System Fans
f5_bigip_interfaces               snmp   F5 Big-IP: Special Network Interfaces
f5_bigip_mem                      snmp   F5 Big-IP: Usage of Memory
f5_bigip_pool                     snmp   F5 Big-IP: Load Balancing Pools
f5_bigip_psu                      snmp   F5 Big-IP: Power Supplies
f5_bigip_snat                     snmp   F5 Big-IP: Source NAT
f5_bigip_vcmpfailover             snmp   F5 Big-IP: Active/Active or Passive/Active vCMP Guest Failover Status
f5_bigip_vcmpguests               snmp   F5 Big-IP: Show Failover States of all vCMP Guests Running on a vCMP Host
f5_bigip_vserver                  snmp   F5 Big-IP: Virtual Servers
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Se vuoi maggiori informazioni su un determinato plug-in, puoi richiamare la documentazione sotto forma di pagina di manuale con cmk -M:

OMD[mysite]:~$ cmk -M f5_bigip_pool
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Questo produce il seguente output:

Example of a check plug-in manual page.

Usando cmk -m senza altre opzioni si accede a un catalogo completo di tutte le pagine di manuale dei plugin per i controlli.

OMD[mysite]:~$ cmk -m
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Puoi navigare in modo interattivo in questo catalogo:

Main menu for selecting a manual page.
Submenu for selecting a manual page.

5. File di configurazione

Conoscere la posizione e la struttura dei file di configurazione può spesso aiutare a risolvere i problemi e a identificare gli errori, ad esempio nelle estensioni sottoposte a scaricamento da Checkmk Exchange o programmate autonomamente.

Il confronto tra Setup e i file di configurazione in questo capitolo non ha lo scopo di incoraggiare la modifica dei file di configurazione tramite script. Se è necessario automatizzare le modifiche alla configurazione, puoi farlo in modo sicuro e senza effetti collaterali utilizzando l'API REST.

Important

Non apportare alcuna modifica ai file di configurazione a meno che non ti sia stato espressamente richiesto da un rappresentante dell'assistenza Checkmk, perché…​ Ci sono dei pericoli!

5.1. Dove si trova la documentazione?

Non qui. I file di configurazione sono definiti dai componenti che li scrivono e li leggono. In definitiva, solo esaminando il codice sorgente e i test associati è possibile rivelare la struttura della configurazione memorizzata nel file system.

Tieni inoltre presente che i formati dei file di configurazione possono cambiare tra le versioni patch. In questo caso, le routine di migrazione garantiscono la conversione dei formati di dati modificati.

Inoltre, le unità utilizzate potrebbero differire tra la visualizzazione nell'Setupe e la memorizzazione nel file di configurazione. Questo vale, ad esempio, per la visualizzazione di periodi di tempo o temperature.

L'esempio seguente mostra un set completo di parametri per il plug-in di controllo che effettua il monitoraggio dei file system in Checkmk (qui in una versione precedente). A causa dell'elevato numero di parametri, lo screenshot è stato diviso in due parti e impostato con un carattere piccolo:

“Complete parameter set of the check plug-in for monitoring file systems.”

La sezione corrispondente nel file di configurazione vero e proprio ha questo aspetto (formattata in modo un po' più ordinato):

{ 'inodes_levels'      : (10.0, 5.0),
  'levels'             : (80.0, 90.0),
  'levels_low'         : (50.0, 60.0),
  'magic'              : 0.8,
  'magic_normsize'     : 20,
  'show_inodes'        : 'onlow',
  'show_levels'        : 'onmagic',
  'show_reserved'      : True,
  'subtract_reserved'  : False,
  'trend_mb'           : (100, 200),
  'trend_perc'         : (5.0, 10.0),
  'trend_perfdata'     : True,
  'trend_range'        : 24,
  'trend_showtimeleft' : True,
  'trend_timeleft'     : (12, 6)},

Come puoi vedere, qui ci sono più di 10 parametri diversi, ognuno dei quali segue una propria logica. Alcuni sono configurati usando numeri in virgola mobile (0.8), altri usando numeri interi (24), alcuni usando keyword ('onlow'), altri usando valori booleani (True) e infine alcuni usando tuple come ((5.0, 10.0)).

Questo esempio mostra solo uno degli oltre 2.000 plug-in di controllo. Inoltre, Checkmk riconosce altre configurazioni come parametri del check: basti pensare ai periodi di tempo, alle regole della Console degli Eventi, ai profili degli utenti e molto altro ancora.

Tip

Quando si tratta dei nomi delle directory dei file, dei file stessi o persino del contenuto dei file, troverai spesso l'abbreviazione wato. WATOè l'abbreviazione di Web Administration Tool, lo strumento di configurazione di Checkmk fino alla versione 1.6.0 inclusa. A partire dalla versione 2.0.0, le funzioni di WATO sono state sostituite dal menu Setup, o Setup in breve. Sebbene WATO sia stato completamente sostituito da Setup nell'interfaccia web, continua a vivere nei nomi dei file e delle directory.

5.2. Quale file di configurazione viene utilizzato attualmente?

C'è un comando molto utile per scoprire quale file Setup ha appena modificato: find. Se lo chiami con i seguenti parametri, troverai tutti i file (-type f) in ~/etc/ che sono stati modificati nell'ultimo minuto (-mmin -1):

OMD[mysite]:~$ find ~/etc/ -mmin -1 -type f
/omd/sites/mysite/etc/check_mk/conf.d/wato/rules.mk
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

La base della configurazione è sempre la directory ~/etc/check_mk/. Questa è suddivisa in vari domini, la maggior parte dei quali è correlata a una funzionalità specifica. Ogni dominio ha una directory che termina con .d, da cui tutti i file che terminano con .mk vengono letti automaticamente in ordine alfanumerico.

5.3. File di Setup e configurazione

All’interno delle directory di configurazione .d/ c’è sempre una sottodirectory chiamata wato, ad esempio ~/etc/check_mk/conf.d/wato/. Di solito, il servizio Setup legge e scrive solo in questa directory. Tuttavia, il servizio responsabile della directory di configurazione legge anche gli altri file nella “propria” directory .d.

Se i file si trovano al di fuori della directory wato/, sono stati creati manualmente in passato con l'obiettivo di apportare modifiche effettive ma non visibili nell'Setup, oppure sono stati creati da altri componenti di Checkmk.

File e cartelle bloccati

Vari meccanismi di automazione che funzionano all’interno di Checkmk o accedono a Checkmk dall’esterno (ad es. tramite API REST) possono apportare modifiche alla configurazione. In alcuni casi, è auspicabile che gli host e le cartelle creati in questo modo siano visibili e verificabili in Setup, ma non è auspicabile che le modifiche vengano apportate da utenti “umani”. In questi casi, gli host o le cartelle possono essere bloccati.

Puoi riconoscere un file hosts.mk di un host bloccato dalla riga con l'attributo lock:

hosts.mk
# Created by WATO
# encoding: utf-8

_lock = True

Quando apri una cartella del genere in Setup, sopra l'elenco degli host verrà visualizzato il seguente messaggio:

“Message indicating that editing hosts function in the folder is locked.”

Tutte le azioni che richiederebbero una modifica al file hosts.mk vengono quindi bloccate nella GUI. Questo, tra l'altro, non influisce sulla scoperta del servizio. I servizi configurati di un host sono memorizzati sotto ~/var/check_mk/autochecks/.

Anche le proprietà delle cartelle possono essere bloccate. Questo si ottiene tramite una voce nel file .wato della cartella. Nel dizionario del file, la chiave lock avrà quindi il valore True:

.wato
{'title': 'My folder',
 'attributes': {},
 'num_hosts': 1,
 'lock': True,
 'lock_subfolders': False,
 '__id': '7f2a8906d3c3448fac8a379e2d1cec0e'}

Se il valore della chiave lock_subfolders è impostato su True, la creazione e l'eliminazione delle sottocartelle viene impedita.

5.4. Contenuto e sintassi dei file

I file di configurazione possono essere file di testo per la visualizzazione con qualsiasi editor, oppure file binary che richiedono strumenti speciali. I file di testo seguono la sintassi Python, ma ci sono delle differenze nel modo in cui vengono handleati da Checkmk:

  • I file che contengono assegnazioni di variabili (=) vengono eseguiti come uno script, ad esempio hosts.mk.

  • I file che contengono solo valori semplici o dizionari Python vengono letti come variabili, ad esempio .wato.

Per la codifica dei caratteri viene sempre utilizzato UTF-8. Se per qualsiasi motivo devi apportare modifiche, assicurati che il file modificato possa ancora essere analizzato da Python.

I file binari hanno l'estensione .pb, che sta per Protocol Buffers e talvolta viene anche chiamato Protobuf. Questo formato, sviluppato da Google per serializzare configurazioni e messaggi, può essere scritto e letto con un overhead ridotto. Tuttavia, per la visualizzazione sono necessari strumenti speciali. Il pacchetto Checkmk include protoc, che esegue molte operazioni semplici. Ad esempio, quanto segue fornisce una panoramica "grezza" dell'ultimo stato di un CMC arrestato:

OMD[mysite]:~$ cat ~/var/check_mk/core/state.pb | protoc --decode_raw | less
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Per un'analisi più dettagliata dei file Protobuf, puoi usare protoscope.

5.5. Verifica dei file di configurazione

Se sospetti che i file di configurazione possano essere danneggiati (ad es. a causa di un supporto dati difettoso), puoi farli checkare. Checkmk fornisce a questo scopo il programma cmk-validate-config, che, a differenza di cmk-update-config, chiamato durante un aggiornamento del software, non apporta alcuna modifica, come la migrazione dei formati di dati. cmk-validate-configcontrolla sia la sintassi (parentesi, assegnazioni corrette, ecc.) sia, in parte, la semantica (tipi di dati utilizzati e presenza di determinate chiavi). Se il programma rileva errori di sintassi, verrà visualizzato il primo file danneggiato:

OMD[mysite]:~$ cmk-validate-config
Cannot read in configuration file etc/check_mk/conf.d/wato/rules.mk: invalid syntax (rules.mk, line 42)
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Se i file checkati sono OK, verrà visualizzato un elenco di tutti i file esaminati:

OMD[mysite]:~$ cmk-validate-config
The following mk files have passed the validation:
  etc/check_mk/multisite.d/wato/roles.mk...................... Passed
  etc/check_mk/conf.d/wato/groups.mk.......................... Passed
  etc/check_mk/multisite.d/wato/groups.mk..................... Passed
  etc/check_mk/conf.d/wato/passwords.mk....................... Passed
  etc/check_mk/conf.d/wato/notifications.mk................... Passed
  etc/check_mk/multisite.d/wato/tags.mk....................... Passed
  etc/check_mk/multisite.d/sites.mk........................... Passed
  etc/check_mk/multisite.d/broker_connections.mk.............. Passed
  etc/check_mk/multisite.d/wato/user_connections.mk........... Passed
  etc/check_mk/multisite.d/wato/users.mk...................... Passed
  etc/check_mk/conf.d/wato/contacts.mk........................ Passed
  etc/check_mk/multisite.d/wato/configuration_bundles.mk...... Passed
  etc/check_mk/conf.d/wato/timeperiods.mk..................... Passed
  etc/check_mk/conf.d/wato/rules.mk........................... Passed
  etc/check_mk/conf.d/wato/opentelemetrytest/rules.mk......... Passed
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Last modified: Mon, 02 Feb 2026 13:33:08 GMT via commit 6a4536036
In questa pagina