![]() |
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 linea di comando?
Una volta installato, un Checkmk-System può essere configurato e operato al 100% tramite l'interfaccia web. Ci sono tuttavia situazioni in cui è utile immergersi nelle profondità della riga di comando, ad esempio:
quando si cerca l'origine dei problemi
quando si automatizza l'amministrazione di Checkmk
quando si programmano e si testano le proprie estensioni
per comprendere il funzionamento interno di Checkmk
se semplicemente ti piace lavorare con la riga di comando!
Questo articolo ti presenterà i comandi, i file e le directory più importanti della linea di comando di Checkmk.
2. L'utente dell'istanza
2.1. Effettuare il login come utente dell'istanza
Quando amministri Checkmk, a parte alcune eccezioni, non devi mai lavorare come utente di root
. In questo articolo assumeremo generalmente che tu sia loggato come utente dell'istanza. Questo si fa con, es:
root@linux# su - mysite
È anche possibile effettuare un login SSH diretto a un sito senza passare per root
. Poiché l'utente dell'istanza è un utente Linux "completamente normale", devi semplicemente assegnare 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
Successivamente dovrebbe essere possibile effettuare un login SSH direttamente da un altro computer (gli utenti Windows preferiscono utilizzare PuTTY). Da Linux questo login viene effettuato semplicemente dalla linea di comando utilizzando il comando ssh
:
user@otherhost> ssh mysite@myserver123
mysite@localhost's password: **********
Al primo login verrà probabilmente ricevuto un "avviso" relativo a una chiave host sconosciuta. Quando sei sicuro che in questo breve momento nessun malintenzionato si sia impossessato dell'indirizzo IP del tuo sistema operativo, puoi semplicemente verificarlo con yes
.
Puoi anche lavorare con la linea di comando della Checkmk Appliance. Le modalità di esecuzione sono spiegate in un apposito articolo.
2.2. Profilo e variabili d'ambiente
Affinché si verifichino il minor numero possibile di problemi, in particolare a causa di distribuzioni individuali o configurazioni diverse del sistema operativo, il sistema Checkmk fa in modo che l'utente dell'istanza - e allo stesso modo tutti i processi del monitoraggio - abbiano sempre un ambiente chiaramente definito. Oltre alla directory home e ai permessi, le variabili d'ambiente svolgono un ruolo importante.
Tra le altre cose, quando si effettua il log-in come utente dell'istanza, vengono impostate o modificate le seguenti variabili. Queste variabili sono disponibili per l'utilizzo in tutti i processi in esecuzione all'interno del sito. Questo vale anche per gli script che vengono invocati indirettamente da questi processi (ad esempio, gli script di notifica dell'utente).
|
Il nome del sito ( |
|
Il percorso della directory del sito ( |
|
Le directory in cui verranno cercati i programmi eseguibili. Ad esempio, l'istanza Checkmk conserva qui la directory |
|
Directory in cui vengono cercate le librerie binary aggiuntive. Utilizzando questa variabile Checkmk si assicura che le librerie fornite con Checkmk abbiano la priorità rispetto a quelle installate nel normale sistema operativo. |
|
Percorso di ricerca del modulo Perl. Anche in questo caso, le varianti del modulo fornite da Checkmk hanno la priorità in caso di dubbio. |
|
Impostazione della lingua per i comandi da riga di comando. Questa impostazione è adottata dall'installazione di Linux. Questa variabile viene eliminata automaticamente nei processi del sito e l'impostazione ritorna all'inglese predefinito! Questo influisce anche sulle altre impostazioni regionali. La rimozione di |
Con il comando env
puoi ottenere l'output di tutte le variabili d'ambiente - aggiungendo | sort
a questo comando l'elenco è 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/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
REQUESTS_CA_BUNDLE=/omd/sites/mysite/var/ssl/ca-certificates.crt
SHELL=/bin/bash
SHLVL=1
TERM=xterm
USER=mysite
_=/usr/bin/env
In Linux l'ambiente è un attributo di un processo. Ogni processo ha le proprie variabili che trasmette automaticamente ai sottoprocessi, i quali iniziano inizialmente con le stesse variabili ereditate, ma possono anche modificarle.
Con il comando env
puoi sempre visualizzare solo l'ambiente della shell corrente. Se sospetti che ci sia un errore nell'ambiente di un particolare processo, con un piccolo trucco puoi comunque produrre un elenco del suo ambiente. A questo scopo ti serve solo l'identificatore del processo (ID), che puoi identificare con, ad es. ps ax
, pstree -p
o top
. Con questo comando puoi accedere al file environ
del processo direttamente tramite il file system /proc
. Ecco un esempio di comando adatto al PID 13222
:
OMD[mysite]:~$ tr \\0 \\n < /proc/13222/environ | sort
Se hai bisogno di variabili personalizzate per i tuoi script o altri software da eseguire nel sito, memorizzale nel file etc/environment
che è stato creato appositamente per questo scopo. Tutte le variabili definite qui saranno disponibili ovunque nel sito:
# 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. Personalizzare la shell
Se desideri personalizzare la tua shell (Prompt o altro), puoi farlo come al solito nel file .bashrc
. Le variabili d'ambiente appartengono comunque aetc/environment
, quindi sono sicuramente disponibili per tutti i processi.
Inoltre, nulla ti impedisce di avere un 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 di un'installazione di Checkmk con un sito chiamato mysite
e un <version>
chiamato ad esempio 2.0.0p8.cee
:

La base di questa struttura è costituita dalla directory /omd
. Senza eccezioni, tutti i file di Checkmk si trovano qui./omd
è in realtà un link simbolico a /opt/omd
, mentre i dati fisiciveri e propri 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 del sito si trovano in /omd/sites
e il software installato in /omd/versions
.
3.2. Directory del sito
Come ogni utente dell'istanza Linux, anche l'utente del sito ha una directory home, a cui ci riferiamo come directory del sito. Se il tuo sito si chiamamysite
, si troverà in /omd/sites/mysite
. Come di consueto in Linux, la shell abbrevia la propria directory home con una tilde (~
) (o trattino mobile). Poiché subito dopo il login ti troverai in questa directory, la tilde appare automaticamente nel prompt di input:
OMD[mysite]:~$
Le sottodirectory della directory del sito sono indicate rispetto alla tilde:
OMD[mysite]:~$ cd var/log
OMD[mysite]:~/var/log$
All'interno della directory del sito sono presenti diverse sottodirectory, che possono essere elencate con ll
:
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.0.0p8.cee/
Come si può notare, le directory bin
, include
, lib
,share
e version
sono collegamenti simbolici, mentre le altre sono directory "normali". Questo rispecchia la separazione tra software e dati spiegata in precedenza. La directory software deve essere accessibile come sottodirectory nel sito, ma si trova fisicamente in /omd/versions
e può essere utilizzata anche da altri siti.
Software | Dati | |
---|---|---|
Directory |
|
|
Proprietario |
|
Utente dell'istanza ( |
Creato da |
Installazione di Checkmk |
Creazione, configurazione e monitoraggio del sito |
Posizione fisica |
|
|
Tipo di file |
Collegamenti simbolici |
Directory normali |
3.3. Software
Le directory software, come di consueto in Linux, appartengono a root
e quindi non possono essere modificate dall'utente dell'istanza. Sono presenti le seguenti sottodirectory: quelle dell'esempio si trovano fisicamente all'interno di/omd/versions/2.0.0p8.cee
e sono accessibili tramite link simbolici dalla directory del sito:
|
Directory per i programmi eseguibili. Qui si trova il comando |
|
Directory C, plug-in per Apache e Python - e nella sottodirectory |
|
La parte principale del software installato. In |
|
Contiene i file di inclusione per i programmi C, che devono essere collegati alle librerie presenti in |
Il link simbolico version/
è una "tappa intermedia" e serve come punto di collegamento per la versione utilizzata dal sito. Durante un aggiornamento del software verrà switchato dalla vecchia alla nuova versione. Tuttavia, ti invitiamo a non tentare di eseguire un aggiornamento manualmente modificando il link, poiché l'aggiornamento richiede una serie di altri passaggi che non andranno a buon fine.
3.4. I dati
I dati effettivi di un sito si trovano nelle altre sottodirectory della directory del sito. Senza eccezioni, queste appartengono all'utente dell'istanza. Anche la directory del sito è inclusa. Checkmk non memorizza nulla oltre alle directory elencate. Puoi creare senza problemi i tuoi file e le tue directory in cui conservare i test, i dati scaricati, le copie dei file di log e così via.
Le seguenti directory sono state predefinite:
|
File di configurazione. Questi possono essere modificati a mano o utilizzando il Setup di Checkmk. Nota: gli script presenti in |
|
Dati nel tempo di esecuzione. Tutti i dati generati dal monitoraggio saranno archiviati qui. A seconda del numero di host e servizi, si può accumulare un'immensa mole di dati, di cui la maggior parte sono i dati sulle prestazioni registrati negli RRD. |
|
Dati volatili. Checkmk e altri componenti archiviano qui i dati temporanei (che non devono essere conservati). Per questo motivo, qui viene montato un |
|
Estensioni proprie. Una gerarchia "ombra" delle directory software |
3.5. Modificare ed estendere Checkmk - i file locali
Come mostrato nella tabella precedente, la directory local
con le sue numerose sottodirectory è destinata alle tue estensioni. In un nuovo sito, tutte le directory di 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
└── 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
Tutte le directory del livello più basso sono integrate attivamente nel software. Un file memorizzato qui sarà trattato come se si trovasse nella directory con lo stesso nome all'interno di /omd/versions/…
(o rispettivamente nel percorso logico dal sito sotto bin
, lib
o share
).
Esempio: Nel sito, i programmi eseguibili verranno cercati in bin
e in local/bin
.
In questo caso vale il principio che, in caso di nomi 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:
Copia il file desiderato nella directory appropriata in
local
.Modificare questo file.
Riavvia il servizio appropriato in modo che la modifica abbia effetto.
Per quanto riguarda il punto 3, se non si sa esattamente a quale servizio si applica la modifica, è sufficiente riavviare l'intero sito con omd restart
.
3.6. File di log
In Checkmk - come già descritto - i file di log sono archiviati nelladirectory var/
. Tutti i file di log dei componenti rilevanti si trovano lì:
OMD[mysite]:~$ ll -R var/log/
var/log/:
total 48
-rw-r--r-- 1 mysite mysite 759 Sep 21 16:54 alerts.log
drwxr-xr-x 2 mysite mysite 4096 Sep 21 16:52 apache/
-rw-r--r-- 1 mysite mysite 8603 Sep 21 16:54 cmc.log
-rw-r--r-- 1 mysite mysite 3175 Sep 21 11:38 dcd.log
-rw-rw---- 1 mysite mysite 0 Oct 27 11:05 diskspace.log
-rw-r--r-- 1 mysite mysite 313 Sep 21 16:54 liveproxyd.log
-rw-r--r-- 1 mysite mysite 62 Sep 21 16:54 liveproxyd.state
drwxr-xr-x 2 mysite mysite 4096 Sep 20 13:44 mkeventd/
-rw-r--r-- 1 mysite mysite 676 Sep 21 16:54 mkeventd.log
-rw-r--r-- 1 mysite mysite 310 Sep 21 16:54 mknotifyd.log
-rw-r--r-- 1 mysite mysite 327 Sep 21 16:54 notify.log
-rw-r--r-- 1 mysite mysite 458 Sep 21 16:54 rrdcached.log
-rw-r--r-- 1 mysite mysite 0 Sep 21 16:52 web.log
var/log/apache:
total 32
-rw-r--r-- 1 mysite mysite 26116 Sep 21 16:54 access_log
-rw-r--r-- 1 mysite mysite 841 Sep 21 16:54 error_log
-rw-r--r-- 1 mysite mysite 0 Sep 22 10:21 stats
var/log/mkeventd:
total 0
Nell'interfaccia web puoi facilmente configurare la misura in cui i dati devono essere scritti nei file di log cercando in Setup > General > Global settings tutte le voci con logging
:

In alternativa, è possibile personalizzare i livelli di log anche da linea di comando in file di configurazione. I file si chiamano global.mk
, ma si trovano in directory diverse. Specifica le voci se non sono già presenti, nel caso in cui un Factory setting non sia ancora stato modificato.
notification_logging = 15
alert_logging = 10
cmc_log_levels = {
'cmk.alert' : 5,
'cmk.carbon' : 5,
'cmk.core' : 5,
'cmk.downtime' : 5,
'cmk.helper' : 5,
'cmk.livestatus' : 5,
'cmk.notification' : 5,
'cmk.rrd' : 5,
'cmk.smartping' : 5,
}
cmc_log_rrdcreation = None
In questo file vengono impostate le voci Monitoring Core, Notifications e Alert Handlers:
Per
notification_logging
puoi scegliere tra i valori 10 per Full dump of all variables and command, 15 per Normal logging e 20 per Minimal logging.La voce
alert_logging
può essere impostata a 10 per Full dump of all variables o a 20 per Normal logging.Per
cmc_log_levels
la quantità di dati logati aumenta con l'aumentare del numero. Qui ci sono otto gradazioni (da 0 a 7) che vanno da 0 per Emergency a 7 per Debug.Con i tre valori
None
,'terse'
e'full'
percmc_log_rrdcreation
puoi decidere se la creazione di RRD deve essere registrata e come.
log_levels = {
'cmk.web' : 50,
'cmk.web.auth' : 10,
'cmk.web.automations' : 15,
'cmk.web.background-job' : 10,
'cmk.web.bi.compilation' : 20,
'cmk.web.ldap' : 30,
}
In questo file di log puoi impostare il log di User Interface.
Il livello di log più basso è 50 (Critical) mentre la maggior parte dei dati verrà registrata a 10, che corrisponde al livello più alto (Debug).
liveproxyd_log_levels = {'cmk.liveproxyd': 20}
Questo file viene utilizzato per Livestatus Proxy logging. I valori possibili qui corrispondono a quelli per il log User Interface.
Importante: I file di log possono diventare rapidamente molto grandi se è stato impostato un livello elevato. In genere è consigliabile utilizzare queste impostazioni per una personalizzazione "temporanea", ad esempio come aiuto nell'identificazione dei problemi.
4. Il comando cmk
Oltre al comandoomd
, che serve per l'avvio e l'arresto dei siti, per la configurazione di base dei componenti e per l'avvio di unaggiornamento del software, cmk
è il comando più importante. Con questo comando è possibile creare la configurazione di un nucleo di monitoraggio, eseguire manualmente i controlli, 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 più veloce la digitazione del comando. Il comando include una guida in linea integrata e molto dettagliata, che può essere richiamata con l'opzione --help
:
OMD[mysite]:~$ cmk -h
WAYS TO CALL:
cmk --automation [COMMAND...] Internal helper to invoke Check_MK actions
cmk --backup BACKUPFILE.tar.gz make backup of configuration and data
cmk --cap [pack|unpack|list FILE.cap] Pack/unpack agent packages (Enterprise only)
cmk --check [HOST [IPADDRESS]] Check all services on the given HOST
...
Come puoi vedere nel comando qui sopra, abbiamo richiamato l'aiuto con l'opzione -h
invece di --help
. Perché ciò che è vero per il comando stesso è vero anche per le sue opzioni: Non per tutte le opzioni, ma per quelle che sono spesso necessarie, esiste una forma breve oltre a quella lunga. Anche se la forma lunga è più intuitiva, soprattutto per i principianti (check_mk --list-hosts
) rispetto a quella breve (cmk -l
), nella Guida per principianti utilizzeremo quella breve. In caso di dubbio, puoi sempre consultare la guida del comando. In ogni caso, è consigliabile dare un'occhiata alla guida del comando, poiché non presenteremo tutte le opzioni nella guida dell'utente.
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 | |
|
|
|
|
|
|
|
|
Controlli | |
|
Esecuzione dei controlli sull'host |
Servizi | |
|
|
|
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 "marcato" creando un file con il nome host in |
Agenti | |
|
|
|
|
Diagnostica | |
|
|
|
|
|
|
Informazioni | |
|
Visualizza la versione di Checkmk installata nel sito. |
|
|
|
|
|
Mostra la pagina di manuale di un plug-in di controllo (qui del plug-in |
Temi speciali | |
|
Cancella la cache DNS e la ricrea. Per maggiori dettagli sulla cache DNS, consulta l'articolo sugli host. Per impostazione predefinita, questo comando viene eseguito in un'istanza Checkmk una volta al giorno tramite cronjob. |
|
Cancella tutti i dati piggyback obsoleti nella directory |
|
|
|
|
|
Prelevare un walk SNMP dall'host |
|
|
|
In alcune modalità sono disponibili ulteriori opzioni specifiche, ad esempio puoi limitare la scoperta del servizio a determinati controlli, ad es. al controllo df
con il comando cmk -I --detect-plugins=df myserver123
.
Alcune opzioni funzionano sempre, indipendentemente dalla modalità di esecuzione del comando:
Opzione | Funzione |
---|---|
|
Chiede a |
|
Come il precedente, con ancora più dettagli: 'molto verboso' |
|
Le informazioni vengono lette dai file di cache, anche se non sono aggiornati. L'agente viene contattato solo se non esiste un file cache. I dati dell'agente nella cache dell'host si trovano sotto |
|
Funziona come |
|
Le informazioni sono sempre aggiornate, cioè non vengono utilizzati file di cache. |
|
Per gli host SNMP: invece di accedere all'agente SNMP, utilizza una passeggiata SNMP memorizzata, che è stata precedentemente estratta con |
|
Se si verifica un errore, questa opzione fa sì che non venga più intercettato, ma che venga visualizzata per intero l'eccezione originale di Python. Questa può essere un'informazione importante per lo sviluppatore, in quanto mostra l'esatta posizione del programma in cui si trova l'errore. Sarà anche molto utile per individuare gli errori nei plug-in di controllo scritti in proprio. Se durante l'invocazione di |
Nella sezione seguente mostreremo come possono essere utilizzati i comandi. Gli esempi sono mostrati per lo più in forma abbreviata.
4.2. Comandi per il nucleo di monitoraggio
Le edizioni commerciali utilizzano Checkmk Micro Core (CMC) come nucleo di monitoraggio, mentre Checkmk Raw utilizza Nagios. Un compito importante di cmk
è la generazione di un file di configurazione leggibile per il nucleo e contenente tutti gli host, i servizi, i contatti, i gruppi di contatti, i periodi di tempo, ecc. configurati. Sulla base di queste informazioni, il core sa quali controlli devono essere eseguiti e quali oggetti deve fornire utilizzando il Livestatus della GUI.
Sia per Nagios che per il CMC, è fondamentale che il numero di host, servizi e altri oggetti rimanga sempre statico durante l'operazione e che questo numero possa essere modificato solo attraverso la generazione di una nuova configurazione, seguita da un ricaricamento del core. Con Nagios è necessario anche un riavvio del core. Il CMC ha una funzione molto efficiente per ricaricare la configurazione durante il processo attivo.
La tabella seguente evidenzia le differenze più importanti tra le configurazioni dei due core:
Nagios | CMC | |
---|---|---|
File di configurazione |
|
|
Tipo di file |
File di testo con comandi |
File binario compresso e ottimizzato |
Attivazione |
Riavvio del core |
Comando core per ricaricare la configurazione |
Comando |
|
|
La rigenerazione della configurazione è sempre necessaria se il contenuto del file di configurazione in etc/check_mk/conf.d
o i servizi rilevati automaticamente in var/check_mk/autochecks
sono stati modificati. Il Setup tiene traccia di tali modifiche e le evidenzia nella GUI per attivare le modifiche. Nel caso in cui dovessi "aggirare il Setup" modificando la configurazione manualmente o con uno script, dovrai occuparti anche dell'attivazione manualmente. I seguenti comandi svolgono questa funzione:
Opzione | Funzione |
---|---|
|
Genera una nuova configurazione per il core e lo riavvia (analogamente a |
|
Genera la configurazione del core e la carica senza riavviare il processo attivo (analogo a Attenzione: Con Nagios come core questa opzione funziona ancora, ma può portare a buchi di memoria e altre instabilità. Inoltre, questa opzione non esegue in ogni caso un vero e proprio ricaricamento, ma arresta e riavvia internamente il processo, per così dire. |
|
Genera la configurazione del core senza attivarlo. |
|
A scopo diagnostico, questa opzione genera la configurazione sullo standard output, senza alterare il file di configurazione attuale. Qui puoi inserire semplicemente il nome di un host per visualizzarne la configurazione (es. |
Per riassumere: Se vuoi personalizzare la configurazione di Checkmk e attivare le modifiche, in Nagios dovrai successivamente richiedere:
OMD[mysite]:~$ cmk -R
E con la CMC:
OMD[mysite]:~$ cmk -O
4.3. Esecuzione dei controlli
Una seconda modalità di Checkmk riguarda l'esecuzione dei controlli basati su Checkmk di un host. Con questa modalità puoi permettere a tutti i servizi rilevati automaticamente e configurati manualmente di essere 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
(inviare tutti i risultati). Per saperne di più, leggi la descrizione delle opzioni qui sotto.
OMD[mysite]:~$ cmk -nv myserver123
Checkmk version 2.0.0p8
CPU load 15 min load 0.22 at 8 Cores (0.03 per Core)
CPU utilization Total CPU: 8.20%
Disk IO SUMMARY Read: 14.0 kB/s, Write: 316 kB/s, Latency: 442 microseconds
Filesystem / 82.0% used (177.01 of 215.81 GB), (warn/crit at 80.00/90.00%),
Interface 2 [wlo1], (up), MAC: 5C:80:B6:3E:38:7F, Speed: unknown, In: 1.02 kB/s, Out: 902 B/s
Kernel Performance Process Creations: 67.82/s, Context Switches: 4183.41/s, Major Page Faults: 1.71/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
NTP Time sys.peer - stratum 2, offset 16.62 ms, jitter 5.19 ms, last reac
Number of threads Count: 1501 threads, Usage: 1.19%
TCP Connections Established: 11
Temperature Zone 0 25.0 °C
Uptime Up since Jul 29 2021 08:38:32, Uptime: 4 hours 43 minutes
[agent] Version: 2.0.0b5, OS: linux, execution time 0.9 sec | execution_time=0.850 user_time=0.050 system_time=0.010 children_user_time=0.000 children_system_time=0.000 cmk_time_agent=0.800
Altri suggerimenti:
Non utilizzare questo comando negli host di produzione monitorati che utilizzano il monitoraggio dei file di log. I messaggi di log vengono inviati una sola volta dagli agenti di monitoraggio e può succedere che un
cmk -nv
manuale li "catturi" e che quindi vengano persi dal monitoraggio. In questo caso, utilizza l'opzione--no-tcp
.Se si utilizza Nagios per il core e si omette l'opzione
-n
, l'effetto sarà un'attualizzazione immediata dei risultati del controllo nel core e nella GUI.Questo comando è utile quando si sviluppano plug-in di controllo personalizzati, perché consente di effettuare un test più rapido rispetto all'utilizzo della GUI. Se il controllo fallisce e restituisce uno SCONOSCIUTO, l'opzione
--debug
può aiutare a trovare la posizione del problema nel codice.
Le seguenti opzioni influenzano il comando:
Opzione | Funzione |
---|---|
|
Output dei risultati del controllo: Senza questa opzione vedrai solo l'output del servizio Check_MK e non i risultati degli altri servizi. |
|
Esecuzione a secco: I risultati non vengono passati al core e il contatore delle prestazioni non viene aggiornato. |
|
Limita l'esecuzione ai plug-in di controllo |
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é processati. Pertanto i dati mostrati corrispondono esattamente a quelli che vengono trasmessi all'Agent Controller (quando è abilitata la crittografia TLS) o a un programma di tunneling nel caso in cui siano configurati programmi datasource.
OMD[mysite]:~$ cmk -d myserver123
<<<check_mk>>>
Version: 2.1.0b5
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
OnlyFrom:
<<<df>>>
udev devtmpfs 8155492 4 8155488 1% /dev
tmpfs tmpfs 1634036 1208 1632828 1% /run
/dev/sda5 ext4 226298268 175047160 39732696 82% /
none tmpfs 4 0 4 0% /sys/fs/cgroup
Puoi anche eseguire cmk -d
utilizzando il nome o l'indirizzo IP di un host non configurato nel monitoraggio. In questo caso verranno assunte le impostazioni tradizionali dell'host (connessione TCP alla porta 6556, nessun Agent Controller, nessuna crittografia, nessun programma datasource).
4.5. Baked agents
Nelle edizioni commerciali puoi anche creare gli agenti dalla linea di comando, come faresti altrimenti tramite l'interfaccia web. Questo ti dà la possibilità, ad esempio, di aggiornare regolarmente gli agenti, ad esempio tramite un cronjob.
Per creare gli agenti, usa l'opzione -A
seguita dal nome di un host (o di più host):
OMD[mysite]:~$ cmk -Av myserver123
myserver123...linux_deb:baking...linux_rpm:baking...(fast repackage)...solaris_pkg:baking...windows_msi:baking...linux_tgz:baking...(fast repackage)...solaris_tgz:baking...(fast repackage)...aix_tgz:baking...OK
L'output mostra che i pacchetti di agenti disponibili per l'host myserver123
sono stati preparati con successo. Se non specifichi un host, i pacchetti verranno creati per tutti gli host.
Il comando esegue il bake solo quando è necessario. Se i pacchetti sono ancora aggiornati, l'output sarà simile a questo:
OMD[mysite]:~$ cmk -Av myserver123
myserver123..linux_deb:uptodate...linux_rpm:uptodate...solaris_pkg:uptodate...windows_msi:uptodate...linux_tgz:uptodate...solaris_tgz:uptodate...aix_tgz:uptodate...OK
Puoi comunque forzare la cottura con l'opzione -f
(force).
4.6. Elenco degli host
Il comando cmk -l
elenca semplicemente i nomi di tutti gli host configurati nel Setup:
OMD[mysite]:~$ cmk -l
myserver123
myserver124
myserver125
Poiché i dati vengono forniti "nudi" e "non elaborati", è facile utilizzarli negli script: ad esempio è possibile costruire 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
Se al posto di echo
inserisci un comando che esegua qualcosa di significativo, questo può essere davvero utile.
Anche l'invocazione cmk --list-tag
fornisce i nomi host, ma offre anche la possibilità di filtrare in base ai tag degli host. Basta inserire un tag host e riceverai tutti gli host che hanno questo tag. L'esempio seguente elenca tutti gli host monitorati da SNMP:
OMD[mysite]:~$ cmk --list-tag snmp
myswitch01
myswitch02
myswitch03
Se inserisci più tag, questi verranno collegati con "e". Il comando seguente fornisce tutti gli host monitorati sia dagli agenti SNMP che da Checkmk. Poiché nessun host soddisfa questa condizione, l'output rimane vuoto:
OMD[mysite]:~$ cmk --list-tag snmp tcp
4.7. Visualizzazione della configurazione degli host
Per uno o più host specificati, cmk -D
mostra i servizi configurati, le etichette dell'host, le etichette e altri attributi. Dato che l'elenco dei servizi è così ampio, il terminale può creare un po' di confusione. Invia l'output attraverso 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 {}
4.8. Informazioni sui plug-in di controllo
Checkmk fornisce di serie un gran numero di plug-in pronti all'uso. In ogni versione ne vengono aggiunti alcuni nuovi e la versione 2.0.0 include già circa 2.000 plug-in. Tre opzioni del comando cmk
ti permettono di accedere alle informazioni su questi plug-in.
cmk -L
produce una tabella di tutti i plug-in con il loro nome, il tipo e una descrizione. Allo stesso tempo, vengono elencati anche i plug-in scritti in proprio memorizzati in local/
.
I tipi possibili sono i seguenti:
|
Valuta i dati di un agente Checkmk. Questo viene (normalmente) recuperato tramite la porta TCP 6556. |
|
Serve al monitoraggio dei dispositivi tramite SNMP. |
|
Richiama un tipo standard di plug-in compatibile con Nagios per il monitoraggio. In questo caso Checkmk adotta solo la configurazione. |
Naturalmente l'elenco può essere filtrato semplicemente con grep
se si cerca 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_mem_tmm snmp F5 Big-IP: Usage of TMM 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
Se vuoi maggiori informazioni su un determinato plug-in, la documentazione come pagina di manuale (o pagina man) può essere richiamata con cmk -M
:
OMD[mysite]:~$ cmk -M f5_bigip_pool
Questo produce il seguente output:

Utilizzando cmk -m
senza altre opzioni, si accede a un catalogo completo di tutte le pagine man dei plug-in di controllo.
OMD[mysite]:~$ cmk -m
Puoi navigare in modo interattivo in questo catalogo:


5. Configurazione senza Setup
Il menu di configurazione è un ottimo strumento di configurazione. Tuttavia ci sono buone ragioni per preferire una configurazione con file di testo nella buona, vecchia tradizione di Linux. Se sei dello stesso parere, c'è una buona notizia: Checkmk può essere configurato completamente con file di testo. E dato che il menu azioni di Setup non fa altro che processare (questi stessi) file di testo, non si tratta nemmeno di una situazione alternativa.
5.1. Dov'è la documentazione?
Se ti aspetti un compendio completo sulla struttura esatta di tutti i file di configurazione utilizzati da Checkmk, purtroppo dobbiamo deluderti. La complessità e la diversità dei file di configurazione è semplicemente troppo grande per essere descritta completamente in questo manuale d'uso.
L'esempio seguente mostra un set completo di parametri del check plug-in che monitora i file system in Checkmk. A causa dei numerosi parametri, la schermata è divisa in due parti ed è impostata con caratteri minuscoli:

Il passaggio corrispondente nel file di configurazione si presenta così (con una formattazione un po' più gradevole):
{ '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 si può notare, ci sono più di 10 parametri diversi, ognuno con una propria logica. Alcuni sono configurati con numeri in virgola mobile (0.8
), altri con numeri interi (24
), altri ancora con keyword ('onlow'
), altri con valori booleani (True
) e altri ancora con tuple per codificare varie combinazioni di questi ((5.0,
10.0)
).
Questo è solo un esempio di oltre 2.000 plug-in. E naturalmente sono possibili 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.
Naturalmente questo non significa che non si possano usare i file di testo come parametri di configurazione: se non conosci ancora la sintassi esatta per l'attività di configurazione che hai scelto, ti basta avere a disposizione lo strumento giusto, che noi chiamiamo Setup:
Crea un sito di prova Checkmk.
Utilizza il menu Setup per configurare i parametri desiderati.
Individua il file di configurazione che è stato modificato di conseguenza (vedi più avanti).
Riporta l'esatta sintassi della sezione corrispondente di questo file nel tuo sistema di produzione.
In questo modo, devi solo sapere in quale file scrive Setup.
Nota: quando si parla di nomi di directory, file o anche di contenuti di file, troverai spesso il termine wato
. Setup W ATO è 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, la funzione di WATO è stata assunta dal menu di configurazione, o UP. Sebbene WATO sia stato (quasi) completamente sostituito da Setup nell'interfaccia web, continua a vivere nel file system.
5.2. Quale file di configurazione viene utilizzato?
Esiste un comando pratico per scoprire quale file Setup ha appena modificato: find
. Invocando "find" con i seguenti parametri puoi trovare tutti i file (-type f
) sotto etc/
che sono stati modificati nell'ultimo minuto (-mmin -1
):
OMD[mysite]:~$ find etc/ -mmin -1 -type f
etc/check_mk/conf.d/wato/rules.mk
La base di una configurazione è sempre la directory etc/check_mk
. Al di sotto di questa c'è una suddivisione in vari domini, che generalmente si riferiscono a un servizio specifico. Allo stesso tempo, ognuno di essi ha una directory con il suffisso .d
, sotto la quale verranno letti automaticamente tutti i file con il suffisso .mk
in ordine alfabetico. In alcuni di essi ci sarà anche un file principale che viene letto per primo. Quest'ultimo è destinato solo alla modifica manuale e non viene mai modificato da Setup.
Dominio | Directory di configurazione | File principale | Modifiche attivate |
---|---|---|---|
Monitoraggio |
|
|
|
|
|
automaticamente |
|
|
|
|
|
|
automaticamente |
5.3. File di configurazione e setup
Al di sotto delle directory di configurazione .d/
c'è sempre la sottodirectory wato
, ad es. etc/check_mk/conf.d/wato
. Il servizio di Setup fondamentalmente legge e scrive solo qui. Tuttavia, il servizio responsabile della directory di configurazione legge anche gli altri file nella "sua" directory .d
, se vi hai memorizzato dei file creati manualmente. Ciò significa che:
Se è necessario che la configurazione manuale sia visibile e modificabile nel Setup, utilizza i percorsi esistenti.
Se la configurazione deve semplicemente funzionare, ma non essere visibile nel Setup, utilizza i tuoi file esterni a
wato/
.Se è necessario che la configurazione sia visibile nel Setup, ma non modificabile, è possibile bloccare alcuni dei file.
Blocco di file e cartelle
Un motivo comune per creare manualmente i file di configurazione senza Setup è la necessità di importare gli host da monitorare da un Configuration Management Database (CMDB). In questo caso, a differenza dei metodi che utilizzano l'API REST, si creano le cartelle per gli host con uno script direttamente in etc/check_mk/conf.d/wato
e in ogni caso il file hosts.mk
per gli host contenuti nella cartella e possibilmente anche il file .wato
, che contiene gli attributi della cartella.
Se l'importazione non è una tantum, ma deve essere ripetuta regolarmente perché il CMDB è il file system principale, sarebbe molto poco pratico se gli utenti apportassero modifiche ai file utilizzando il Setup, poiché queste andrebbero perse con l'importazione successiva.
Un file hosts.mk
può essere bloccato inserendo una riga per l'attributo lock
:
# Created by WATO
# encoding: utf-8
_lock = True
Quando si apre questa cartella nel Setup, viene visualizzato il seguente messaggio sopra l'elenco degli host:

Tutte le azioni che potrebbero modificare il file hosts.mk
sono quindi bloccate nella GUI. Questo non vale ovviamente per la scoperta del servizio. I servizi configurati di un host sono memorizzati in var/check_mk/autochecks/
.
Anche gli attributi della cartella possono essere bloccati. Questo avviene tramite una voce nel file .wato
della cartella: imposta l'attributo lock
su True
nel dizionario del file:
{'title': 'My folder',
'attributes': {},
'num_hosts': 1,
'lock': True,
'lock_subfolders': False,
'__id': '7f2a8906d3c3448fac8a379e2d1cec0e'}
Se imposti anche l'attributo lock_subfolders
su True
, impedisci la creazione e la cancellazione di sottocartelle.
Il blocco di altri file, come ad esempio rules.mk
, non è attualmente possibile.
5.4. La sintassi dei file
Dal punto di vista puramente formale, tutti i file di configurazione di Checkmk sono scritti con la sintassi di Python 3. Esistono due tipi di file:
Quelli che vengono eseguiti come script da Python. Tra questi c'è, ad esempio,
hosts.mk
.Quelli che vengono letti da Python come valori. Tra questi c'è, ad esempio,
.wato
.
I file eseguibili si riconoscono per la presenza di variabili che vengono sostituite da assegnazioni con valori (=
). Gli altri file contengono solitamente un dizionario Python che inizia con una parentesi di apertura {
. A volte si tratta di semplici valori.
Se in un file è richiesto un carattere non ASCII (un Umlaut tedesco (ä
, ö
, ü
), per esempio), il seguente commento deve essere codificato nella prima o nella seconda riga:
# encoding: utf-8
Altrimenti si verificherà un errore di sintassi durante la lettura del file. Per ulteriori suggerimenti sulla sintassi di Python ti consigliamo di visitare un sito specializzato, ad esempio:The Python Language Reference.
5.5. Controllare i file di configurazione
Se modifichi manualmente i file di configurazione in etc/check_mk/
, è bene che la configurazione venga controllata. Puoi farlo con lo strumento cmk-update-config
, che in realtà viene eseguito automaticamente solo dopo un aggiornamento di versione con omd update
:
OMD[mysite]:~$ cmk-update-config
...
Verifying Checkmk configuration...
01/05 Cleanup precompiled host and folder files...
02/05 Rulesets...
Exception while trying to load rulesets: Cannot read configuration file "/omd/sites/mysite/etc/check_mk/conf.d/wato/rules.mk":
'[' was never closed (<string>, line 44)
You can abort the update process (A) and try to fix the incompatibilities or try to continue the update (c).
Abort update? [A/c]
...
Ad esempio, nell'estratto qui sopra puoi vedere il riferimento a una parentesi non chiusa.