![]() |
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. ¿Por qué línea de comandos?
Cuando se ha instalado un Sistema Checkmk, se puede configurar y utilizar al 100% mediante la interfaz web. No obstante, hay situaciones en las que resulta útil sumergirse en las profundidades de la línea de comandos, por ejemplo
al buscar el origen de los problemas
al automatizar la administración de Checkmk
al programar y probar tus propias extensiones
para entender cómo funciona Checkmk internamente
si simplemente te gusta trabajar con la línea de comandos.
Este artículo te presentará los comandos, archivos y directorios más importantes de la línea de comandos de Checkmk.
2. El usuario del site
2.1. Inicio de sesión como usuario del site
Cuando administres Checkmk, salvo algunas excepciones, nunca tendrás que trabajar como usuario de root
. En este artículo supondremos, en general, que has iniciado sesión como usuario del site. Esto se hace, por ejemplo, con
root@linux# su - mysite
También es posible hacer un inicio de sesión SSH directo a un site sin rodeo a través de root
. Como el usuario del site es un usuario de Linux "completamente normal", sólo tienes que asignarle una contraseña para ello (lo que requiere root
-permisos, una sola vez, para la configuración):
root@linux# passwd mysite
Enter new UNIX password: **********
Retype new UNIX password: **********
passwd: password updated successfully
Después debería ser posible un inicio de sesión SSH directamente desde otro ordenador (los usuarios de Windows utilizan preferentemente PuTTY para ello). Desde Linux, este inicio de sesión se realiza simplemente en la línea de comandos utilizando el comando ssh
:
user@otherhost> ssh mysite@myserver123
mysite@localhost's password: **********
En el primer inicio de sesión es probable que se reciba una "advertencia" sobre una clave de host desconocida. Cuando estés seguro de que en este breve momento ningún atacante se ha apoderado de la dirección IP de tu sistema operativo, puedes simplemente verificarla con yes
.
También puedes trabajar con la línea de comandos en el appliance Checkmk. Cómo se hace se explica en su propio artículo.
2.2. Perfil y variables del entorno
Para que surjan el menor número posible de problemas, sobre todo como consecuencia de distribuciones individuales o configuraciones distintas del sistema operativo, el sistema Checkmk se asegura de que el usuario del site -y también todos los procesos de monitorización- tengan siempre un entorno claramente definido. Junto con el directorio de inicio y los permisos, las variables del entorno desempeñan un papel importante.
Entre otras cosas, al iniciar sesión como usuario del site se establecerán o modificarán las siguientes variables. Estas variables están disponibles para su uso en todos los procesos que se ejecuten dentro del site. Esto también se aplica a los scripts que son invocados indirectamente por estos procesos (por ejemplo, los propios scripts de notificación de un usuario).
|
El nombre del site ( |
|
La ruta para el directorio del site ( |
|
Los directorios en los que se buscarán los programas ejecutables. Por ejemplo, Checkmk guarda aquí el |
|
Directorios en los que se buscan bibliotecas binarias adicionales. Utilizando esta variable Checkmk se asegura de que las bibliotecas proporcionadas con Checkmk tienen prioridad sobre las instaladas en el sistema operativo normal. |
|
Ruta de búsqueda del módulo Perl. Aquí también tienen prioridad, en caso de duda, las variantes del módulo proporcionadas por Checkmk. |
|
La configuración del idioma para los comandos de la línea de comandos. Esta configuración se adopta de la instalación de Linux. Esta variable se elimina automáticamente en los procesos del site, y la configuración vuelve al inglés por defecto. Esto también afecta a otros ajustes regionales. Eliminar |
Con el comando env
puedes mostrar todas las variables del entorno; si añades | sort
a este comando, la lista quedará un poco más clara:
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
En Linux, el entorno es un atributo de un proceso. Cada proceso tiene sus propias variables, que pasa automáticamente a los subprocesos. Éstos parten inicialmente con las mismas variables heredadas, pero también pueden modificarlas.
Con el comando env
siempre puedes ver sólo el entorno del shell actual. Si sospechas que hay un error en el entorno de un proceso concreto, con un pequeño truco puedes, no obstante, obtener una lista de su entorno. Para ello sólo necesitas el identificador del proceso (PID). Puedes identificarlo, por ejemplo, con ps ax
, pstree -p
o top
. Con ello podrás acceder directamente al archivo environ
del proceso a través del sistema de archivos /proc
. Aquí tienes como ejemplo un comando adecuado para el PID 13222
:
OMD[mysite]:~$ tr \\0 \\n < /proc/13222/environ | sort
Si necesitas variables definidas por el usuario para tus propios scripts u otro software que se ejecute en el site, guárdalas en el archivo etc/environment
que se ha creado especialmente para este fin. Todas las variables definidas aquí estarán disponibles en cualquier parte del site:
# 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. Personalizar el shell
Si deseas personalizar tu shell (Prompt u otras cosas), puedes hacerlo como de costumbre en el archivo .bashrc
. No obstante, las variables del entorno pertenecen aetc/environment
, por lo que es seguro que estarán disponibles para todos los procesos.
Tampoco hay nada que te impida tener tu propio archivo .vimrc
si te gusta trabajar con VIM.
3. La estructura del directorio
3.1. La separación entre software y datos
El siguiente gráfico muestra los directorios más importantes de una instalación de Checkmk con un site llamado mysite
y un <version>
llamado, por ejemplo, 2.0.0p8.cee
:

La base de esta estructura la proporciona el directorio /omd
. Sin excepción, todos los archivos de Checkmk se encuentran aquí./omd
es, de hecho, un enlace simbólico a /opt/omd
, mientras que los datos físicosreales se encuentran en /opt
- pero todas las rutas de datos de Checkmk utilizan siempre /omd
.
Es importante la separación entre los datos (resaltados en amarillo) y el software (azul). Los datos del site se encuentran en /omd/sites
, y el software instalado en /omd/versions
.
3.2. Directorio del site
Como cualquier usuario de Linux, el usuario del site también tiene un directorio de inicio, al que nos referimos como directorio del site. Si tu site se llamamysite
, se encontrará en /omd/sites/mysite
. Como es habitual en Linux, el shell abrevia el directorio de inicio propio con una tilde (~
) (o guión oscilante). Como inmediatamente después de un inicio de sesión estarás realmente en este directorio, la tilde aparece automáticamente en el prompt de entrada:
OMD[mysite]:~$
Los subdirectorios del directorio del site se muestran relativos a la tilde:
OMD[mysite]:~$ cd var/log
OMD[mysite]:~/var/log$
Dentro del directorio del site hay una serie de subdirectorios que se pueden listar 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/
Como puede verse, los directorios bin
, include
, lib
,share
y version
son enlaces simbólicos. El resto son directorios "normales". Esto refleja la separación entre software y datos explicada anteriormente. El directorio de software debe ser accesible como subdirectorio en el site, pero se encuentra físicamente en /omd/versions
, y posiblemente también pueda ser utilizado por otros sites.
Software | Datos | |
---|---|---|
Directorios |
|
|
Propietario |
|
Usuario del site ( |
Creado por |
Instalación de Checkmk |
Creación, configuración y monitorización del site |
Ubicación física |
|
|
Tipo de archivo |
Enlaces simbólicos |
Directorios normales |
3.3. Software
Los directorios de software, como es habitual en Linux, pertenecen a root
y, por tanto, no pueden ser alterados por un usuario del site. Existen los siguientes subdirectorios - los del ejemplo se encuentran físicamente dentro de/omd/versions/2.0.0p8.cee
, y son accesibles mediante enlaces simbólicos desde el directorio del site:
|
Directorio para programas ejecutables. Aquí se encuentra, por ejemplo, el comando |
|
Directorios C, Plugin para Apache y Python - y en el subdirectorio |
|
La parte principal del software instalado. Muchos componentes se encuentran en |
|
Contiene archivos Include para programas en C, que deben enlazarse con las bibliotecas de |
El enlace simbólico version/
es una "parada intermedia" y sirve como punto de relevo para la versión utilizada por el site. Durante una actualización del software se cambiará de la versión antigua a la nueva. No obstante, no intentes realizar una actualización manualmente alterando el enlace, ya que una actualización requiere una serie de pasos adicionales, que fracasarán.
3.4. Datos
Los datos reales de un site se encuentran en los subdirectorios restantes del directorio del site. Sin excepción, éstos pertenecen al usuario del site. También se incluye el propio directorio del site. Checkmk no almacena nada aparte de los directorios allí listados. Aquí puedes crear sin problema tus propios archivos y directorios, en los que se pueden guardar, según se desee, pruebas, datos descargados, copias de archivos de registro, etc.
Se han predefinido los siguientes directorios:
|
Archivos de configuración. Éstos pueden editarse a mano o utilizando la Configuración de Checkmk. Nota: Los scripts de |
|
Datos de tiempo de ejecución. Todos los datos generados por la monitorización se almacenarán aquí. Dependiendo del número de host y servicios, se puede acumular un inmenso volumen de datos, de los cuales la mayor parte son los datos de rendimiento registrados en los RRD. |
|
Datos volátiles. Checkmk y otros componentes almacenan aquí datos temporales (que no es necesario conservar). Por lo tanto, aquí se monta un |
|
Extensiones propias. Puedes encontrar una jerarquía "en la sombra" de los directorios de software |
3.5. Modificar y ampliar Checkmk: los archivos locales
Como se acaba de mostrar en la tabla anterior, el directorio local
con sus numerosos subdirectorios está destinado a tus propias ampliaciones. En un site nuevo, todos los directorios de local/
están inicialmente vacíos.
Con el práctico comando tree
puedes obtener rápidamente una visión general de la estructura de local
. La opción -L 3
restringe la profundidad 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
Todos los directorios del nivel más bajo se integran activamente en el software. Un archivo almacenado aquí se tratará del mismo modo que si estuviera en el directorio con el mismo nombre dentro de /omd/versions/…
(o respectivamente, en la ruta lógica del site bajo bin
, lib
o share
).
Ejemplo: En el site, los programas ejecutables se buscarán en bin
y en local/bin
.
Aquí se aplica que en caso de nombres idénticos el archivo en local
siempre tiene prioridad. Esto permite modificar el software sin necesidad de cambiar los archivos de instalación en /omd/versions/
. El procedimiento es sencillo:
Copia el archivo deseado en el directorio correspondiente de
local
.Modifica este archivo.
Reinicia el servicio correspondiente para que el cambio surta efecto.
Respecto al punto 3 anterior, si no se sabe exactamente a qué servicio se aplica el cambio, basta con reiniciar el site completo con omd restart
.
3.6. Archivos de registro
En Checkmk -como ya se ha descrito- los archivos de registro se almacenan en eldirectorio var/
. Allí se pueden encontrar todos los archivos de registro de los componentes relevantes:
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
En la interfaz web puedes configurar fácilmente hasta qué punto se deben escribir datos en los archivos de registro buscando en Setup > General > Global settings todas las entradas con logging
:

Alternativamente, también es posible personalizar los niveles de registro en la línea de comandos de los archivos de configuración. Cada uno de los archivos se llama global.mk
, pero están ubicados en directorios diferentes. Especifica las entradas si no están ya presentes, como es el caso, si todavía no se ha modificado Factory setting.
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
En este archivo se establecen las entradas Monitoring Core, Notifications y Alert Handlers:
Para
notification_logging
puedes elegir entre los valores 10 para Full dump of all variables and command, 15 para Normal logging y 20 para Minimal logging.Para
alert_logging
puedes elegir entre los valores 10 para Full dump of all variables y 20 para Normal logging.Para
cmc_log_levels
la cantidad de datos registrados aumenta al incrementar el número. Aquí hay ocho gradaciones (0 a 7) que van de 0 para Emergency a 7 que representa Debug.Con los tres valores
None
,'terse'
y'full'
paracmc_log_rrdcreation
puedes decidir si la creación de RRDs debe registrarse y cómo.
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,
}
En este archivo puedes configurar el registro de User Interface.
La cantidad de datos registrados aumenta de forma inversa a medida que disminuye el recuento. El nivel de registro más bajo es 50 (Critical), mientras que la mayor cantidad de datos se registrará a 10, que corresponde al más alto (Debug).
liveproxyd_log_levels = {'cmk.liveproxyd': 20}
Este archivo se utiliza para Livestatus Proxy logging. Los valores posibles aquí corresponden a los del registro de User Interface.
Importante: Los archivos de registro pueden llegar a ser muy grandes rápidamente si se ha establecido un nivel alto. Por lo general, es aconsejable utilizar estos ajustes para una personalización "temporal", como ayuda en la identificación de problemas, por ejemplo.
4. El comando cmk
Junto con el comandoomd
, que sirve para iniciar y detener sites, para la configuración básica de componentes y para iniciar unaactualización de software, cmk
es el comando más importante. Con él se puede crear una configuración para un core de monitorización, ejecutar checks manualmente, realizar un descubrimiento de servicios y mucho más.
4.1. Las opciones del comando
El comando cmk
es en realidad una abreviatura de check_mk
, introducida para que el comando sea más rápido de escribir. El comando incluye una ayuda en línea integrada y muy detallada, que se puede llamar con la opción --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
...
Como puedes ver en el comando anterior, hemos llamado a la ayuda con la opción -h
en lugar de --help
. Porque lo que es cierto para el comando en sí, también lo es para sus opciones: Cuanto menos haya que teclear, más rápido se va. No para todas las opciones, pero para las que se necesitan a menudo, existe por tanto una forma abreviada además de la forma larga. Aunque la forma larga es más intuitiva, especialmente para los principiantes (check_mk --list-hosts
) que la forma abreviada (cmk -l
), utilizaremos la forma abreviada en el Manual de usuario. En caso de duda, siempre puedes consultar la ayuda del comando. En cualquier caso, es buena idea echar un vistazo más largo a la ayuda del comando, ya que no presentaremos todas las opciones en el Manual de usuario.
Al introducir una opción, inicias el comando cmk
en un modo determinado. A continuación se presenta una Vista general de las opciones que presentaremos en este capítulo, pero también en otras partes del manual:
Opción | Función |
---|---|
Núcleo de monitorización | |
|
|
|
|
|
|
|
|
Comprobaciones | |
|
Ejecutarchecks en el host |
Servicios | |
|
|
|
Ejecuta el check de descubrimiento de servicios en el host, que comprueba si hay servicios nuevos o desaparecidos y si hay nuevas etiquetas de host. Cuando se produce un cambio, el host se "marca" creando un archivo con el nombre del host en |
Agentes | |
|
|
|
|
Diagnóstico | |
|
|
|
|
|
|
Información | |
|
Muestra la versión de Checkmk instalada en el site. |
|
|
|
|
|
Mostrando una página del manual del check plugin (aquí del plugin |
Temas especiales | |
|
Borra la caché DNS y vuelve a crearla. Para más detalles sobre la caché DNS, consulta el artículo sobre hosts. Por defecto, este comando se ejecuta en un site Checkmk una vez al día mediante cronjob. |
|
Elimina todos los datos piggyback obsoletos del directorio |
|
|
|
|
|
Extracción de unpaseo SN MP desde el host |
|
|
|
En algunos modos, dispones de otras opciones específicas, por ejemplo, puedes limitar el descubrimiento de servicios a determinados checks, por ejemplo, al check df
con el comando cmk -I --detect-plugins=df myserver123
.
Hay una serie de opciones que siempre funcionan, independientemente del modo con el que se ejecute el comando:
Opción | Función |
---|---|
|
Pide a |
|
Lo mismo que lo anterior, con aún más detalles: muy detallado |
|
La información se lee de los archivos caché, aunque estén desactualizados. Sólo se contacta con el agente si no existe ningún archivo de caché. Los datos del agente en caché del host se encuentran en |
|
Funciona como |
|
La información siempre se obtiene actualizada, es decir, no se utilizan archivos de caché. |
|
Para hosts SNMP: en lugar de acceder al agente SNMP, se utiliza un recorrido SNMP almacenado, que se ha extraído previamente con |
|
Si se produce un error, esta opción garantiza que ya no se interceptará, sino que se mostrará la excepción original de Python completa. Esto puede ser una información importante para el desarrollador, al mostrar la ubicación exacta del programa en la que se encuentra el error. También será muy útil para localizar errores en los plugins de check autoescritos. Si al invocar |
En la siguiente sección mostraremos cómo se pueden utilizar los comandos. Los ejemplos se muestran en su mayoría de forma abreviada.
4.2. Comandos para el núcleo de monitorización
Las ediciones comerciales utilizan el Checkmk Micro Core (CMC) como núcleo de monitorización, Checkmk edición Raw utiliza Nagios. Una tarea importante para el cmk
es la generación de un archivo de configuración que sea legible para el núcleo, y que contenga todos los host, servicios, contactos, grupos de contacto, periodicidades, etc. configurados. A partir de esta información, el núcleo sabe qué checks deben ejecutarse y qué objetos debe proporcionar mediante el Livestatus de la GUI.
Tanto para Nagios como para la CMC, es fundamental que el número de host, servicios y otros objetos permanezca siempre estático durante la operación, y que este número sólo pueda alterarse mediante la generación de una nueva configuración, seguida de una recarga del núcleo. Con Nagios también es necesario reiniciar el núcleo. La CMC dispone de una función muy eficaz para la recarga de su configuración durante el proceso activo.
La siguiente tabla destaca las diferencias importantes entre las configuraciones de ambos núcleos:
Nagios | CMC | |
---|---|---|
Archivo de configuración |
|
|
Tipo de archivo |
Archivo de texto con |
Archivo binario comprimido y optimizado |
Activación |
Reinicio del núcleo |
Comando del núcleo para recargar la configuración |
Comando |
|
|
Regenerar la configuración siempre es necesario si se ha modificado el contenido del archivo de configuración en etc/check_mk/conf.d
, o de los servicios detectados automáticamente en var/check_mk/autochecks
. El Setup guarda un registro de tales cambios y los resalta en la GUI para activarlos. Si te "saltas el Setup" modificando la configuración manualmente o con un script, también tendrás que ocuparte de la activación manualmente. Los siguientes comandos cumplen esta función:
Opción | Función |
---|---|
|
Genera una nueva configuración para el núcleo y reinicia el núcleo (análogo a |
|
Genera la configuración para el núcleo y la carga sin reiniciar el proceso activo (análogo a Atención: Con Nagios como núcleo esta opción sigue funcionando, pero puede provocar agujeros de memoria y otras inestabilidades. Aparte de eso, esta opción no realiza en ningún caso una auténtica recarga, sino que detiene y reinicia internamente el proceso, por así decirlo. |
|
Genera la configuración del núcleo sin activarlo. |
|
Con fines de diagnóstico, esta opción muestra la configuración que se va a generar en la salida estándar, sin alterar el archivo de configuración real. Aquí puedes introducir simplemente el nombre del host para ver su configuración (por ejemplo, |
En resumen: Si quieres personalizar una configuración de Checkmk y activar los cambios, en Nagios necesitarás posteriormente:
OMD[mysite]:~$ cmk -R
Y con la CMC:
OMD[mysite]:~$ cmk -O
4.3. Ejecutar checks
Un segundo modo de Checkmk se ocupa de la ejecución de las comprobaciones basadas en Checkmk de un host. Con esto puedes permitir que todos los servicios detectados automáticamente, y también los configurados manualmente, se comprueben inmediatamente, sin necesidad de molestarte con el núcleo de monitorización o la GUI.
Para ello, introduce cmk --check
seguido del nombre de un host configurado en la monitorización. Como la opción --check
es la opción por defecto de cmk
, también puedes omitirla. Además, siempre debes añadir las dos opciones -n
(no enviar los resultados al núcleo) y -v
(emitir todos los resultados). Encontrarás más información al respecto en la descripción de las opciones que figura más abajo.
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
Más consejos:
No utilices este comando en hosts de producción monitorizados que utilicen la monitorización de archivos de registro. Los agentes sólo envían mensajes de registro una vez, y puede ocurrir que un
cmk -nv
manual los "atrape" y que entonces se pierdan de la monitorización. En tal situación, utiliza la opción--no-tcp
.Si se está utilizando Nagios para el núcleo y se omite
-n
, el efecto será una actualización inmediata de los resultados del check en el núcleo y en la GUI.El comando es útil cuando desarrollas tus propios plugins de check, porque permite una comprobación más rápida que utilizando la GUI. Si el check falla y devuelve un UNKNOWN, la opción
--debug
puede ayudar a encontrar la ubicación del problema en el código.
Las siguientes opciones influyen en el comando:
Opción | Función |
---|---|
|
Salida de los resultados del check: Sin esta opción sólo verás la salida del propio servicio Check_MK, y no los resultados de los demás servicios. |
|
Ejecución en seco: Los resultados no se pasan al núcleo, el contador de rendimiento no se actualiza. |
|
Restringe la ejecución a los check plugin |
4.4. Recuperar la salida del agente
El comando cmk -d
recupera y muestra la salida del agente Checkmk de un host. Con cmk -d
los datos del agente se recuperan de la misma forma que con la monitorización. No se validan ni se procesan. Así, los datos mostrados coinciden exactamente con los que se entregan al Controlador de agentes (cuando está activado el cifrado TLS) o a un programa de tunelización en caso de que estén configurados los programas de fuentes de datos.
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
Incluso puedes ejecutar cmk -d
utilizando el nombre o la dirección IP de un host que no esté configurado en la monitorización. En este caso se asumirá la configuración heredada del host (conexión TCP al puerto 6556, sin Controlador de agentes, sin encriptación, sin programa fuente de datos).
4.5. Preparar agentes
En las ediciones comerciales también puedes preparar los agentes desde la línea de comandos, como harías a través de la interfaz web. Esto te da la opción, por ejemplo, de actualizar los agentes regularmente, por ejemplo mediante un cronjob.
Para crear los agentes, utiliza la opción -A
seguida del nombre de un host (o de varios):
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
La salida muestra que los paquetes de agentes disponibles para el host myserver123
se han preparado correctamente. Si no especificas un host, los paquetes se prepararán para todos los hosts.
El comando sólo prepara los paquetes cuando es necesario. Si los paquetes aún están actualizados, el resultado será algo parecido a esto:
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
Puedes forzar la preparación con la opción -f
(forzar).
4.6. Lista de host
El comando cmk -l
simplemente lista los nombres de todos los host configurados en la Configuración:
OMD[mysite]:~$ cmk -l
myserver123
myserver124
myserver125
Como los datos se proporcionan "desnudos" y "sin procesar", es fácil utilizarlos en scripts; por ejemplo, se puede construir un bucle con todos los nombres del host:
OMD[mysite]:~$ for host in $(cmk -l) ; do echo "Host: $host" ; done
Host: myserver123
Host: myserver124
Host: myserver125
Si en lugar de echo
introduces un comando que realice algo con sentido, puede ser realmente útil.
La invocación cmk --list-tag
también muestra los nombres del host, pero también ofrece la posibilidad de filtrar por tags del host. Simplemente introduce un tag del host y recibirás todos los hosts que tengan ese tag. El siguiente ejemplo muestra una lista de todos los host monitorizados por SNMP:
OMD[mysite]:~$ cmk --list-tag snmp
myswitch01
myswitch02
myswitch03
Introduce varias etiquetas y se enlazarán con "y". El siguiente comando muestra todos los hosts que son monitorizados tanto por agentes SNMP como por agentes Checkmk. Como ningún host cumple esta condición, la salida queda vacía:
OMD[mysite]:~$ cmk --list-tag snmp tcp
4.7. Visualizar la configuración del host
Para uno o más host especificados, cmk -D
muestra los servicios, tags del host, etiquetas y otros atributos configurados. Como la lista de servicios es tan extensa, puede parecer algo confusa en el terminal. Envía la salida a través de less -S
para evitar una interrupción:
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. Información sobre los plugins de check
Checkmk proporciona de serie un gran número de Plugin listos para usar. En cada versión se añaden algunos nuevos, y la versión 2.0.0 ya incluye unos 2.000 Plugin. Tres opciones del comando cmk
te dan acceso a información sobre estos Plugin.
cmk -L
produce una tabla de todos los Plugin con su nombre, tipo y descripción. Al mismo tiempo, también se listarán los Plugin de escritura propia almacenados en local/
.
Los tipos posibles son los siguientes:
|
Evalúa los datos de un agente Checkmk. Esto se recupera (normalmente) a través del puerto TCP 6556. |
|
Sirve para la monitorización de dispositivos mediante SNMP. |
|
Llama a un tipo estándar de Plugin compatible con Nagios para la monitorización. Aquí Checkmk en realidad sólo adopta la configuración. |
Por supuesto, la lista se puede filtrar simplemente con grep
si se busca algo concreto:
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
Si quieres más información sobre un determinado Plugin, se puede llamar a la documentación como página de manual (o página man) con cmk -M
:
OMD[mysite]:~$ cmk -M f5_bigip_pool
Esto produce el siguiente resultado:

Si utilizas cmk -m
sin más opciones, accederás a un catálogo completo de todas las páginas man de los plugins de check.
OMD[mysite]:~$ cmk -m
Puedes navegar interactivamente por este catálogo:


5. Configuración sin Configurar
El Menú de configuración es una gran herramienta de configuración. Sin embargo, hay buenas razones para preferir una configuración con archivos de texto en la buena y vieja tradición Linux. Si eres de la misma opinión, hay buenas noticias: Checkmk se puede configurar completamente utilizando archivos de texto. Y como las acciones del menú Setup no hacen más que procesar (esto mismo) archivos de texto, ni siquiera se trata de una disyuntiva.
5.1. ¿Dónde está la documentación?
Si esperas un compendio exhaustivo que cubra la estructura exacta de todos los archivos de configuración que utiliza Checkmk, lamentablemente tendremos que decepcionarte en este punto. La complejidad y diversidad que contienen los archivos de configuración es sencillamente excesiva para describirla por completo en este Manual de usuario.
El siguiente ejemplo muestra un conjunto de parámetros completo para el plugin de check que monitoriza los sistemas de archivos en Checkmk. Debido a la gran cantidad de parámetros, la captura de pantalla está dividida en dos partes y en minúsculas:

El pasaje correspondiente en el archivo de configuración tiene este aspecto (con un formato algo más agradable):
{ '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)},
Como se puede ver, hay más de 10 parámetros diferentes, cada uno con su propia lógica individual. Algunos se configuran utilizando números de coma flotante (0.8
), otros con números enteros (24
), otros con palabras clave ('onlow'
), otros con valores booleanos (True
), y otros utilizando tuplas para codificar diversas combinaciones de éstos ((5.0,
10.0)
).
Éste es sólo un ejemplo de entre más de 2.000 Plugins. Y, por supuesto, hay otras configuraciones posibles como parámetros de check: Basta pensar en periodicidades, reglas de la Consola de eventos, perfiles de usuario y muchas más.
Por supuesto, ¡eso no significa que no puedas utilizar archivos de texto como configuración! Si aún no conoces la sintaxis exacta de la tarea de configuración que has elegido, sólo necesitas la herramienta adecuada para ello, y a esta herramienta la llamamos Configuración:
Crear un site de pruebas Checkmk.
Utiliza el menú Setup para configurar los parámetros deseados.
Localiza el archivo de configuración que se ha modificado como resultado (más información sobre esto más adelante).
Traslada la sintaxis exacta de la sección correspondiente de este archivo a tu sistema productivo.
Por tanto, sólo necesitas saber en qué archivo escribe Setup.
Nota: Cuando se trate de nombres de directorios, archivos o incluso contenidos de archivos, a menudo encontrarás el término wato
. WATO es la abreviatura de Web Administration Tool: la herramienta de configuración de Checkmk hasta la versión 1.6.0 inclusive. La función de WATO ha sido asumida por el menú Setup, o Setup para abreviar, a partir de la versión 2.0.0. Aunque WATO ha sido (casi) completamente sustituido por Setup en la interfaz web, sigue vivo en el sistema de archivos.
5.2. ¿Qué archivo de configuración se utiliza?
Existe un comando práctico para averiguar qué archivo acaba de modificar Setup: find
. Invocando "find" con los siguientes parámetros puedes encontrar todos los archivos (-type f
) bajo etc/
que han sido modificados en el último minuto (-mmin -1
):
OMD[mysite]:~$ find etc/ -mmin -1 -type f
etc/check_mk/conf.d/wato/rules.mk
La base de una configuración es siempre el directorio etc/check_mk
. Debajo de éste hay una subdivisión en varios dominios, que generalmente se aplican a un servicio específico. Al mismo tiempo, cada uno tiene un directorio con el sufijo .d
, bajo el cual se leerán automáticamente todos los archivos con el sufijo .mk
en orden alfabético. En algunos habrá también una carpeta principal que se lee en primer lugar. Ésta está destinada únicamente a la alteración manual, y nunca es modificada por Setup.
Dominio | Directorio de configuración | Fichero principal | Cambios activados |
---|---|---|---|
Monitorización |
|
|
|
|
|
automáticamente |
|
|
|
|
|
|
automáticamente |
5.3. Archivos de instalación y configuración
Debajo de los directorios de configuración .d/
siempre hay el subdirectorio wato
, por ejemplo etc/check_mk/conf.d/wato
. El Setup fundamentalmente sólo lee y escribe aquí. Sin embargo, el servicio responsable del directorio de configuración también lee los demás archivos de "su" directorio .d
, si has almacenado allí algunos archivos creados manualmente. Esto significa:
Si se requiere que la configuración manual sea visible y editable en la Configuración, utiliza las rutas existentes.
Si se requiere que la configuración simplemente funcione, pero no sea visible en la Configuración, entonces utiliza tus propios archivos externos a
wato/
.Si se requiere que la configuración sea visible en la Instalación, pero no modificable, se pueden bloquear algunos de los archivos.
Bloquear archivos y carpetas
Una razón habitual para crear manualmente archivos de configuración sin la Configuración es la necesidad de importar hosts que se van a monitorizar desde una Base de Datos de Gestión de la Configuración (CMDB). Aquí, a diferencia de los métodos que utilizan la API-REST, creas las carpetas para los hosts con un script directamente en etc/check_mk/conf.d/wato
y en cada caso el archivo hosts.mk
para los hosts contenidos en la carpeta y posiblemente también el archivo .wato
, que contiene los atributos de la carpeta.
Si esta importación no es puntual, sino que debe repetirse regularmente porque la CMDB es el sistema principal, sería muy poco práctico que tus usuarios hicieran cambios en los archivos utilizando el Setup, ya que se perderían con la siguiente importación.
Un archivo hosts.mk
puede bloquearse insertando una línea para el atributo lock
:
# Created by WATO
# encoding: utf-8
_lock = True
Al abrir esta carpeta en la Configuración, aparece el siguiente mensaje sobre la lista de hosts:

Todas las acciones que puedan alterar el archivo hosts.mk
están bloqueadas en la GUI. Por supuesto, esto no se aplica al descubrimiento de servicios. Los servicios configurados de un host se almacenan en var/check_mk/autochecks/
.
Los atributos de la carpeta también pueden bloquearse. Esto se hace mediante una entrada en el archivo .wato
de la carpeta: establece el atributo lock
en True
en el diccionario del archivo:
{'title': 'My folder',
'attributes': {},
'num_hosts': 1,
'lock': True,
'lock_subfolders': False,
'__id': '7f2a8906d3c3448fac8a379e2d1cec0e'}
Si también estableces el atributo lock_subfolders
en True
, impedirás la creación y eliminación de subcarpetas.
El bloqueo de otros archivos -como rules.mk
, por ejemplo- no es posible actualmente.
5.4. La sintaxis de los archivos
En términos puramente formales, todos los archivos de configuración de Checkmk están escritos en sintaxis Python 3. Hay dos tipos de archivos:
Los que Python ejecuta como un script. Entre ellos está, por ejemplo,
hosts.mk
.Los que Python lee como valores. Entre ellos está, por ejemplo,
.wato
.
Los archivos ejecutables se reconocen por tener variables que se sustituyen por asignaciones con valores (=
). Los demás archivos suelen contener un diccionario Python que comienza con un corchete de apertura {
. A veces son simples valores.
Si se requiere un carácter no ASCII en un archivo (una diéresis alemana (ä
, ö
, ü
), por ejemplo), se debe codificar el siguiente comentario en la primera o segunda línea:
# encoding: utf-8
De lo contrario, se producirá un error de sintaxis al leer el archivo. Para más consejos sobre la sintaxis de Python, te recomendamos que visites un site especializado, por ejemplo:The Python Language Reference.
5.5. Check de los archivos de configuración
Si editas manualmente los archivos de configuración en etc/check_mk/
, es conveniente que compruebes la configuración. Puedes hacerlo con la herramienta cmk-update-config
, que en realidad sólo se ejecuta automáticamente tras una actualización de versión 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]
...
Por ejemplo, en el extracto anterior puedes ver la referencia a un corchete no cerrado.