![]() |
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é la 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 sus propias extensiones
para comprender el funcionamiento interno de Checkmk
si simplemente le gusta trabajar con la línea de comandos.
Este artículo 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 administre Checkmk, salvo algunas excepciones, nunca tendrá que trabajar como usuario de root
. En este artículo asumiremos generalmente que ha 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
. Dado que el usuario del site es un usuario Linux "completamente normal", simplemente debe asignar 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 preferiblemente PuTTY para esto). Desde Linux este inicio de sesión se realiza simplemente en la línea de comando utilizando el comando ssh
:
user@otherhost> ssh mysite@myserver123
mysite@localhost's password: **********
En el primer inicio de sesión probablemente se reciba una "advertencia" sobre una clave de host desconocida. Cuando esté seguro de que en este breve momento ningún atacante se ha apoderado de la dirección IP de su sistema operativo, puede simplemente verificarla con yes
.
También puede 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 resultado de distribuciones individuales o configuraciones diferentes 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 ejecutan 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 tengan 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 suministradas 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 otras configuraciones regionales. La eliminación de |
Con el comando env
puede mostrar todas las variables del entorno - añadiendo | sort
a este comando la lista queda 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 comienzan inicialmente con las mismas variables heredadas, pero también pueden alterarlas.
Con el comando env
siempre puedes ver sólo el entorno del shell actual. Si sospecha que hay un error en el entorno de un proceso en particular, con un pequeño truco puede obtener una lista de su entorno. Para ello sólo necesita el identificador de proceso (PID). Puede identificarlo, por ejemplo, con ps ax
, pstree -p
o top
. Con esto puede acceder directamente al archivo environ
del proceso a través del sistema de archivos /proc
. Aquí tiene como ejemplo un comando adecuado para el PID 13222
:
OMD[mysite]:~$ tr \\0 \\n < /proc/13222/environ | sort
Si necesita variables definidas por el usuario para sus propios scripts u otro software a ejecutar en el site, guárdelas en el fichero etc/environment
que ha sido creado especialmente para este propósito. Todas las variables definidas aquí estarán disponibles en cualquier lugar dentro 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. Personalización del 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 de directorios
3.1. La separación entre software y datos
El siguiente gráfico muestra los directorios más importantes en una instalación 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 en Checkmk utilizan siempre /omd
.
Es importante la separación entre datos (resaltados en amarillo) y software (en 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 su site se llamamysite
se encontrará en /omd/sites/mysite
. Como es habitual en Linux el shell abrevia el propio directorio de inicio con una tilde (~
) (o guión girado). Dado que inmediatamente después de un inicio de sesión se encontrará 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 se encuentran varios 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 un subdirectorio en el site, pero se encuentra físicamente en /omd/versions
, y también puede ser utilizado posiblemente 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. 3.3. Software
Los directorios de software, como es habitual en Linux, pertenecen a root
y, por tanto, no pueden ser modificados 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 C, que deben enlazarse con bibliotecas en |
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 intente realizar una actualización manualmente modificando el enlace, ya que una actualización requiere una serie de pasos adicionales, que fallarán.
3.4. Datos
Los datos reales de un site se encuentran en el resto de subdirectorios 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í puede crear sin problemas sus propios archivos y directorios, en los que se pueden guardar a voluntad 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 mediante la configuración de Checkmk. Nota: Los scripts de |
|
Datos en tiempo de ejecución. Todos los datos generados por la monitorización se almacenarán aquí. Dependiendo del número de hosts y servicios, se puede acumular un inmenso volumen de datos - de los cuales la mayor parte son los datos de rendimiento registrados en los RRDs. |
|
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. Puede encontrar una jerarquía 'sombra' de los directorios de software |
3.5. Modificación y ampliación de Checkmk: los archivos locales
Como se acaba de mostrar en la tabla anterior, el directorio local
con sus numerosos subdirectorios está destinado a sus propias ampliaciones. En un site nuevo, todos los directorios de local/
están inicialmente vacíos.
Con el práctico comando tree
puede 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á de la misma manera que si estuviera en el directorio con el mismo nombre dentro de /omd/versions/…
(o respectivamente, en la ruta lógica desde el 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 el 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:
Copie el archivo deseado en el directorio correspondiente de
local
.Modifique este archivo.
Reinicie el servicio correspondiente para que el cambio surta efecto.
En relación con el 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 encuentran 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 puede configurar fácilmente hasta qué punto deben escribirse los datos en los archivos de registro buscando en Setup > General > Global settings todas las entradas con logging
:

Como alternativa, también es posible personalizar los niveles de registro en la línea de comandos de los archivos de configuración. Los archivos se denominan global.mk
, pero se encuentran en directorios diferentes. Especifique las entradas si aún no están presentes, como es el caso, si un Factory setting aún no se ha modificado.
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
se puede 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
se puede 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 ser registrada 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 puede 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 rápidamente muy grandes 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. 4.1. Opciones del comando
El comando cmk
es en realidad una abreviatura de check_mk
, introducida para hacer el comando más rápido de escribir. El comando incluye una ayuda en línea integrada, muy detallada, que puede ser llamada 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 puede 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í mismo 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 aquellas que se necesitan a menudo, existe por tanto una forma corta además de la forma larga. Aunque la forma larga es más intuitiva, especialmente para principiantes (check_mk --list-hosts
) que la forma corta (cmk -l
), utilizaremos la forma corta en el Manual de usuario. En caso de duda, siempre puede consultar la ayuda del comando. En cualquier caso, es conveniente 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, se inicia 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 |
---|---|
Core de monitorización | |
|
|
|
|
|
|
|
|
Chequeos | |
|
Ejecución de checks en el host |
Servicios | |
|
|
|
Ejecuta el descubrimiento check en el host, que comprueba si hay servicios nuevos y 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. |
|
|
|
|
|
Mostrandouna página del manual de un check plugin (aquí del plugin |
Temas especiales | |
|
Elimina la caché DNS y la vuelve a crear. Para más detalles sobre la caché DNS, consulte 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 un paseo SNMP desde host |
|
|
|
En algunos modos, además, dispone de opciones específicas, por ejemplo, puede 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 en que se ejecute el comando:
Opción | Función |
---|---|
|
Solicita a |
|
Lo mismo que lo anterior, con aún más detalles: muy detallado |
|
La información se lee de los archivos de caché, aunque estén desactualizados. Sólo se contacta con el agente si no existe ningún fichero de caché. Los datos del agente en caché del host pueden encontrarse en |
|
Funciona como |
|
La información se obtiene siempre actualizada, es decir, no se utilizan ficheros de caché. |
|
Para hosts SNMP: en lugar de acceder al agente SNMP se utiliza un paseo SNMP almacenado, que ha sido extraído previamente con |
|
Si se produce un error, esta opción asegura que ya no será interceptado, 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 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 su core de monitorización, el Checkmk Raw Edition 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 configurados, servicios, contactos, grupos de contacto, periodicidades, etc. En base a 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 |
|
|
La regeneración de la configuración siempre es necesaria si se ha modificado el contenido del archivo de configuración en etc/check_mk/conf.d
, o los servicios detectados automáticamente en var/check_mk/autochecks
. El Setup mantiene un registro de tales cambios y los resalta en la GUI como activación de cambios. En caso de "saltarse el Setup" modificando la configuración manualmente o con un script, también tendrá que ocuparse 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 lo reinicia (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 para el núcleo sin activarlo. |
|
A efectos de diagnóstico, esta opción muestra la configuración que se va a generar en la salida estándar, sin alterar el fichero de configuración real. Aquí puede introducir simplemente el nombre del host para ver la configuración del mismo (por ejemplo |
En resumen: Si desea personalizar una configuración de Checkmk y activar los cambios, en Nagios requerirá posteriormente:
OMD[mysite]:~$ cmk -R
Y con la CMC:
OMD[mysite]:~$ cmk -O
4.3. Ejecución de checks
Un segundo modo en Checkmk se ocupa de la ejecución de comprobaciones basadas en Checkmk de un host. Con esto puede permitir que todos los servicios detectados automáticamente, y también los configurados manualmente, se comprueben inmediatamente, sin necesidad de molestarse con el núcleo de monitorización o la GUI.
Para ello, introduzca cmk --check
seguido del nombre de un host configurado en la monitorización. Dado que la opción --check
es la opción por defecto de cmk
, también puede omitirla. Además, siempre debe añadir las dos opciones -n
(no enviar los resultados al núcleo) y -v
(mostrar todos los resultados). Encontrará más información al respecto en la descripción de las opciones que aparece a continuación.
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 utilice este comando en hosts de producción monitorizados que utilicen monitorización de archivos de registro. Los mensajes de registro sólo son enviados una vez por los agentes, y puede ocurrir que un
cmk -nv
manual los 'atrape' y se pierdan de la monitorización. En tal situación utilice la opción--no-tcp
.Si se está usando 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 para desarrollar sus propios check plugin, ya que 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 resultados del check: Sin esta opción sólo verá la salida del propio servicio Check_MK, y no los resultados de los otros 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. Recuperación de 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. Por lo tanto, los datos mostrados coinciden exactamente con los datos que se entregan al Controlador de agentes (cuando el cifrado TLS está activado) o a un programa de tunelización en caso de que los programas de origen de datos estén configurados.
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
Puede incluso 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 para el host (conexión TCP al puerto 6556, sin Controlador de agentes, sin encriptación, sin programa fuente de datos).
4.5. Horneado de agentes
En las ediciones comerciales también puede bakear los agentes desde la línea de comandos, como lo haría a través de la interfaz web. Esto le da la opción, por ejemplo, de actualizar los agentes regularmente, por ejemplo mediante un cronjob.
Para bakear los agentes, utilice la opción -A
seguida del nombre de un host (o 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
han sido bakeados con éxito. Si no se especifica un host, los paquetes serán bakeados para todos los hosts.
El comando sólo bakea cuando es necesario. Si los paquetes están aún actualizados, la salida 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
Puede forzar la preparación con la opción -f
(force).
4.6. Lista de hosts
El comando cmk -l
simplemente lista los nombres de todos los host configurados en el Setup:
OMD[mysite]:~$ cmk -l
myserver123
myserver124
myserver125
Dado que los datos se proporcionan 'desnudos' y 'sin procesar', es fácil utilizarlos en scripts - por ejemplo, se puede construir un bucle a través de 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
insertas un comando que realice algo significativo, esto puede ser realmente útil.
La invocación cmk --list-tag
también muestra nombres del host, pero también ofrece la posibilidad de filtrar por tags del host. Simplemente introduzca un tag del host y recibirá todos los hosts que tengan este tag. El siguiente ejemplo lista todos los host monitorizados por SNMP:
OMD[mysite]:~$ cmk --list-tag snmp
myswitch01
myswitch02
myswitch03
Introduzca múltiples tags y se enlazarán con 'y'. El siguiente comando muestra todos los hosts que son monitorizados tanto por SNMP como por agentes Checkmk. Como ningún host cumple esta condición, la salida permanece vacía:
OMD[mysite]:~$ cmk --list-tag snmp tcp
4.7. Visualización de la configuración del host
Para uno o más hosts especificados, cmk -D
muestra los servicios configurados, tags del host, etiquetas y otros atributos. Como la lista de servicios es tan extensa, puede parecer algo confusa en el terminal. Envíe 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 check plugin
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 alrededor de 2.000 Plugin. Tres opciones del comando cmk
le 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 vía 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 puede filtrarse simplemente con grep
si se busca algo específico:
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 desea más información sobre un determinado Plugin, la documentación como página de manual (o página man) se puede llamar con cmk -M
:
OMD[mysite]:~$ cmk -M f5_bigip_pool
Esto produce la siguiente salida:

Usando cmk -m
sin más opciones accederá a un catálogo completo de todas las páginas de manual de los plugins de check.
OMD[mysite]:~$ cmk -m
Puede navegar interactivamente en este catálogo:


5. Configuración sin Setup
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 usted es de la misma opinión hay buenas noticias: Checkmk puede ser completamente configurado usando archivos de texto. Y puesto que las acciones del menú Setup no hacen más que procesar (esto mismo) ficheros de texto, esto no es ni siquiera una situación de o lo uno o lo otro.
5.1. ¿Dónde está la documentación?
Si espera un compendio exhaustivo que cubra la estructura exacta de todos los archivos de configuración utilizados por Checkmk, lamentablemente tendremos que decepcionarle. La complejidad y diversidad contenida en los ficheros de configuración es simplemente demasiado para describirla completamente en este Manual de usuario.
El siguiente ejemplo muestra un conjunto completo de parámetros para el plugin de check que monitoriza 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 puede verse, 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 de tiempo, reglas de la Consola de eventos, perfiles de usuario, y muchas más.
Por supuesto, eso no significa que no pueda utilizar archivos de texto como configuración. Si aún no conoce la sintaxis exacta para la tarea de configuración que ha elegido, sólo necesita la herramienta adecuada para ello, y a esta herramienta la llamamos Setup:
Crear un site de pruebas Checkmk.
Utilice el menú Setup para configurar los parámetros deseados.
Localice el archivo de configuración que se ha modificado en consecuencia (más información al respecto más adelante).
Traslade la sintaxis exacta de la sección correspondiente de este archivo a su sistema productivo.
Por lo tanto, sólo necesita saber en qué archivo escribe Setup.
Nota: Cuando se trata de nombres de directorios, archivos o incluso contenidos de archivos, a menudo encontrará 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 reemplazado por Setup en la interfaz web, sigue vivo en el sistema de archivos.
5.2. ¿Qué fichero de configuración se utiliza?
Existe un comando práctico para saber qué fichero acaba de modificar Setup: find
. Invocando 'find' con los siguientes parámetros puede encontrar todos los archivos (-type f
) bajo etc/
que han sido alterados 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á prevista sólo para alteraciones manuales, 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 otros archivos en "su" directorio .d
, si ha almacenado allí algunos archivos creados manualmente. Esto significa:
Si se requiere que la configuración manual sea visible y editable en el Setup, utilice las rutas existentes.
Si se requiere que la configuración simplemente funcione, pero no sea visible en el Setup, entonces use sus propios archivos externamente a
wato/
.Si se requiere que la configuración sea visible en el Setup, pero no modificable, se pueden bloquear algunos de los archivos.
Bloqueo de archivos y carpetas
Una razón común para crear manualmente archivos de configuración sin Setup es la necesidad de importar hosts para ser monitorizados desde una base de datos de administración de la configuración (CMDB). Aquí, en contraste con los métodos que utilizan la API-REST, se crean 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 se realiza una sola vez, sino que debe repetirse regularmente porque la CMDB es el sistema principal, sería muy poco práctico que sus usuarios realizaran cambios en los archivos utilizando el Setup, ya que éstos 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 el programa de instalació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. Esto no se aplica al descubrimiento de servicios, por supuesto. Los servicios configurados de un host se almacenan en var/check_mk/autochecks/
.
Los atributos de la carpeta también pueden bloquearse mediante una entrada en el archivo .wato
de la carpeta: establezca 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 establece el atributo lock_subfolders
en True
, impedirá la creación y eliminación de subcarpetas.
Actualmente no es posible bloquear otros archivos, como rules.mk
, por ejemplo.
5.4. La sintaxis de los ficheros
En términos puramente formales, todos los archivos de configuración de Checkmk están escritos en sintaxis Python 3. Existen dos tipos de archivos:
Los que son ejecutados como un script por Python. Entre ellos se encuentra, por ejemplo,
hosts.mk
.Los que Python lee como valores. Entre ellos se encuentra, por ejemplo,
.wato
.
Los archivos ejecutables pueden ser reconocidos por tener variables que son sustituidas por asignaciones con valores (=
). Los otros 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 información sobre la sintaxis de Python, le recomendamos que visite un site especializado, por ejemplo:The Python Language Reference.
5.5. Check de los ficheros de configuración
Si edita manualmente archivos de configuración en etc/check_mk/
, es una buena idea hacer check de la configuración. Puede hacerlo con la herramienta cmk-update-config
, que en realidad sólo se ejecuta automáticamente después de 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.