![]() |
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. Introducción
Los servicios son la "sustancia" real de un sistema de monitorización. Cada uno representa un engranaje importante en tu complejo panorama informático. La utilidad de la monitorización completa depende de la precisión y utilidad con que se hayan configurado los servicios. Por último, la monitorización debe notificar de forma fiable siempre que se manifieste un problema en algún lugar, pero sin duda también debe minimizar las notificaciones falsas o inútiles.

Checkmk demuestra posiblemente su mayor fortaleza a la hora de configurar servicios: posee un sistema inigualable y muy potente para la detección y configuración automática de servicios. Con Checkmk no es necesario definir cada servicio mediante plantillas y asignaciones individuales. Checkmk puede detectar de forma automática y fiable la lista de servicios que hay que monitorizar y, sobre todo, mantenerla actualizada. Esto no sólo ahorra mucho tiempo, sino que también hace que la monitorización sea precisa. Garantiza que los cambios diarios en un centro de datos se cubran siempre con prontitud y que ningún servicio importante quede sin monitorizar.
El descubrimiento de servicios en Checkmk se basa en un importante principio básico: la separación del qué del cómo:
¿Qué se debe monitorizar? → El sistema
/var
en el hostmyserver01
¿Cómo debe ser monitorizado? → al 90 % de espacio utilizado WARN, al 95 % CRIT
Qué detecta automáticamente el descubrimiento de servicios. Es una combinación del nombre del host (myserver01
), el check plugin (df:
comprobación del sistema de datos en Linux) y el item(/var
). Los check plugin que pueden crear un máximo de un servicio en un host no necesitan un item (por ejemplo, el check plugin para la carga de la CPU). Los resultados de un descubrimiento de servicios se presentan en una tabla como la que se muestra a continuación:
Host | Check plugin | Item |
---|---|---|
|
|
|
|
|
|
|
|
|
... |
... |
... |
|
|
|
... |
... |
... |
El cómo-es decir, los umbrales/parámetros de check de cada servicio- se configura de forma independiente mediante reglas. Por ejemplo, puedes definir una regla que monitorice todos los sistemas de datos con el punto de montaje /var
, y los umbrales del 90 % / 95 %, sin necesidad de pensar en qué host existe ese sistema de datos. ¡Esto es lo que hace que la configuración con Checkmk sea tan clara y sencilla!
Algunos servicios no pueden instalarse mediante un descubrimiento automático. Entre ellos están, por ejemplo, los checks consultados por sitios web especificados por HTTP. Éstos se crean mediante reglas, como puedes ver en el artículo sobre los checks activos.
2. Servicios de host en la Configuración
2.1. Incorporar un nuevo host
Una vez que has añadido un nuevo host en la configuración, el siguiente paso es llamar a la lista de servicios. Con esta acción se produce por primera vez el descubrimiento automático de servicios para este host, y se comprueba paralelamente la accesibilidad de las fuentes de datos. También puedes llamar a esta lista en cualquier momento posterior para reiniciar el descubrimiento o realizar modificaciones en la configuración. Hay varias formas de abrir la lista de servicios:
a través del botón Save & run service discovery en la configuración de Properties of host
en la barra de menú de Properties of host a través de Host > Run service discovery
a través del símbolo de la lista de hosts en una carpeta de la configuración
a través de la entrada Run service discovery en el menú de acción del servicio Check_MK Discovery de un host
Cuando un host ha sido recién incorporado, sus servicios aún no han sido configurados, por lo que todos los servicios descubiertos aparecen en la categoría Undecided services - currently not monitored:

El método habitual para añadir los servicios recién descubiertos consiste en pulsar simplemente el botón Accept all. De este modo también se añadirán de una sola vez todas las etiquetas de host. Después, rápidamente Activate changes- tras lo cual el host estará en la monitorización.
2.2. Añadir los servicios que faltan
Para un host que ya está siendo monitorizado, esta lista tiene un aspecto diferente. En lugar de Undecided services - currently not monitored verás Monitored services. Si Checkmk detecta algo en un host que no está siendo monitorizado y que, sin embargo, debería serlo, entonces la lista tendrá este aspecto:

Un clic en Monitor undecided services o en Accept all simplemente añade todos los servicios que faltan para que la monitorización vuelva a estar completa. Si sólo quieres añadir algunos de los servicios que faltan, puedes alternativamente hacer clic en el botón para Move to monitored services.
2.3. Servicios desaparecidos
En los centros de datos no sólo pueden aparecer cosas nuevas, sino también desaparecer. Una instancia de base de datos puede dejar de funcionar, un LUN puede desmontarse, un sistema de archivos puede eliminarse, etc. Checkmk reconoce automáticamente estos servicios como desaparecidos. En la lista de servicios, por ejemplo, tendrá este aspecto:

La forma más sencilla de liberarse de estos servicios es de nuevo con un clic en Accept all o pulsando el botón en cada línea individual, que significa Remove vanished services.Atención: La razón de la desaparición puede deberse, por supuesto, a un problema! La desaparición de un sistema de archivos también puede significar que, debido a un error, no se ha podido montar. Al fin y al cabo, ¡la monitorización está ahí para esos casos! Sólo debes eliminar el servicio cuando sepas realmente que ya no necesita monitorización.
2.4. Eliminar servicios no deseados
No necesariamente querrás monitorizar todo lo que encuentre Checkmk. Por supuesto, el descubrimiento funciona de forma orientada al objetivo, y puede excluir de antemano muchos datos innecesarios. Sin embargo, ¿cómo puede saber Checkmk, por ejemplo, que una determinada instancia de base de datos se ha configurado sólo "para jugar", y no está en producción? Hay dos formas de eliminar estos servicios:
Desactivando temporalmente los servicios
Para eliminar temporalmente determinados servicios de la monitorización, puedes simplemente hacer clic en el icono . De ese modo, el servicio pasará a la lista de Undecided services. O incluso puedes hacer clic en el icono al principio de la línea, para desactivar el servicio. Y, naturalmente, no te olvides del habitual Activate changes.
Sin embargo, esto sólo está pensado para acciones temporales y de menor envergadura, ya que los servicios deseleccionados de este modo serán resaltados como missing por Checkmk, y el check de descubrimiento (que te mostraremos más adelante) será igualmente infeliz. En cualquier caso, eso sería simplemente demasiado trabajo y no sería realmente práctico en un entorno con x-mil servicios ...
Desactivar servicios permanentemente
Es mucho más elegante y duradero ignorar permanentemente los servicios con ayuda del conjunto de reglas Disabled services. Aquí no sólo puedes excluir servicios individuales de la monitorización, sino también formular reglas como "No quiero monitorizar servicios que empiecen por myservice en el host...". myserver01."
Puedes acceder a la regla a través de Setup > Services > Discovery rules > Discovery and Checkmk settings > Disabled Services.

Cuando hayas guardado las reglas y vuelvas a la lista de servicios del host, verás los servicios desactivados en la sección Disabled Services, junto con cualquier servicio que se haya desactivado manualmente.

2.5. Actualizar servicios
Hay una serie de Plugins que se dan cuenta de cosas durante un descubrimiento. Por ejemplo, el Plugin para interfaces de red comprueba la velocidad establecida en la interfaz durante el descubrimiento. ¿Por qué? ¡Para poder avisarte en caso de que cambie! No suele ser una buena señal que una interfaz esté configurada a veces a 10 Mbit/s, y a veces a 1 Gbit/s - esto podría ser más bien una indicación de una autonegociación defectuosa.
¿Qué ocurre cuando se desea este cambio y debe aceptarse como OK a partir de ahora? O bien - eliminar el servicio a través del icono , que significa Move to undecided services y volver a añadirlo inmediatamente después. O actualizar todos los servicios del host haciendo clic en Actions > Remove all and find new en la barra de menú. Esto es naturalmente mucho más fácil, pero sólo cuando no quieras mantener servicios individuales en estado de error.
2.6. Actualizar las etiquetas de host y de servicio
Actualizar sólo las etiquetas se puede conseguir fácilmente a través de Actions > Host labels > Update host labels y Actions > Services > Update service labels respectivamente en la barra de menú. Si sólo es necesario añadir o actualizar etiquetas de servicio individuales (nuevas), se puede hacer en la línea del servicio respectivo en la caja Changed services haciendo clic en .

2.7. Condiciones especiales con SNMP
Hay algunas características especiales para los dispositivos que se monitorizan mediante SNMP. Puedes conocerlas en el Artículo sobre SNMP.
3. Descubrimiento masivo: descubrimiento simultáneo en varios host
Si quieres realizar un descubrimiento para varios host con una sola acción, puedes facilitar el trabajo conlas acciones masivas de Checkmk. En primer lugar, elige los host en los que se va a realizar el descubrimiento. Tienes varias opciones para ello:
En una carpeta, selecciona las cajas de check de cada host y, a continuación, a través deHosts > On selected hosts > Run bulk service discovery en la barra de menú.
Busca hosts con la búsqueda de hosts, selecciona todos los hosts en el resultado de la búsqueda haciendo clic en y luego de nuevo a través de Hosts > On selected hosts > Run bulk service discovery en la barra de menú.
En una carpeta, pulsa Hosts > In this folder > Run bulk service discovery en la barra de menú.
Con la tercera variante también puedes realizar el descubrimiento de servicios de forma recursiva en todas las subcarpetas. En las tres opciones anteriores, el siguiente paso te llevará al siguiente diálogo:

En el menú desplegable Parameters, la opción Custom service configuration update está preseleccionada. Las cuatro casillas de verificación que aparecen a continuación ofrecen exactamente las mismas opciones que tienes en la lista de servicios de la configuración y que ya hemos explicado anteriormente. En el menú desplegable, también tienes la opción de seleccionar Refresh all services (tabula rasa).
En Selection puedes controlar de nuevo la selección de host. Esto es más útil si los has seleccionado a través de la carpeta que a través de las casillas de verificación. La mayoría de las opciones están pensadas para acelerar el descubrimiento:
Include all subfolders |
Si has iniciado el descubrimiento masivo para todos los host de una carpeta, esta opción estará activa por defecto. El descubrimiento se ejecutará también en todos los hosts de todas las subcarpetas. |
Only include hosts that failed on previous discovery |
Los hosts para los que haya fallado un descubrimiento de servicios anterior mediante operaciones masivas (por ejemplo, porque no se podía acceder al host en ese momento), se marcan con el símbolo . Esta opción permite repetir el descubrimiento sólo para estos host. |
Only include hosts with a failed discovery check |
Esto restringe el descubrimiento a los host para los que falló el check de descubrimiento. Cuando trabajas con Discovery Check, éste es un buen método para acelerar enormemente un descubrimiento en muchos hosts. Sin embargo, la combinación con la opción Refresh all services (tabula rasa) tiene menos sentido en este caso, ya que puede distorsionar el estado de los servicios existentes. |
Exclude hosts where the agent is unreachable |
Los host inaccesibles provocan grandes retrasos en el descubrimiento debido a los timeout de conexión. Esto puede dificultar enormemente el rendimiento del descubrimiento en un gran número de host. Si los host ya están en monitorización -y sabe que están DOWN-puedes pasarlos por alto aquí y evitar así los timeouts. |
Los Performance Options están predefinidos para que se realice un full service scan. Si no te interesan los nuevos Plugin, el descubrimiento puede acelerarse mucho si no eliges esta opción.
El 10
configurado en Number of hosts to handle at once significa que siempre se procesan diez host en una sola acción. Esto se consigue internamente con una petición HTTP. Si te encuentras con problemas de timeout debido a que algunos host necesitan mucho tiempo para ser descubiertos, puedes intentar establecer este número más bajo (en detrimento del tiempo total requerido).
En cuanto confirmes el diálogo, se iniciará el procedimiento y podrás observar su progreso:

4. Parámetros de check en los servicios
Muchos de los Plugin de check se pueden configurar mediante parámetros. Lo más habitual es establecer umbrales para WARN y CRIT. Los parámetros pueden estructurarse de forma mucho más compleja, como se muestra en este ejemplo de monitorización de la temperatura con Checkmk:

El parámetro de check de un servicio se compone de tres partes:
Cada Plugin tiene un valor por defecto para el Parámetro.
Algunos Plugin establecen valores durante un descubrimiento (ver más arriba).
Los parámetros pueden establecerse mediante reglas.
Los parámetros de las reglas tienen prioridad sobre los establecidos por un descubrimiento, y éstos a su vez tienen prioridad sobre los valores por defecto. En el caso de parámetros complejos en los que los subparámetros individuales se establecen mediante casillas de verificación (como, por ejemplo, la temperatura), estas reglas de prioridad se aplican por separado a cada subparámetro. Así, si sólo estableces un subparámetro mediante reglas, los demás conservan sus respectivos valores por defecto. De este modo puedes, por ejemplo, activar el cálculo de tendencia de las temperaturas con una regla, y con otra regla establecer el valor umbral de temperatura para un dispositivo sensor físico. El conjunto completo de parámetros se compondrá entonces a partir de ambas reglas.
Los parámetros exactos que tiene finalmente un servicio se pueden encontrar en la página de parámetros del servicio. Puedes acceder a ella mediante el símbolo de la lista de servicios del host. Si quieres ver los parámetros de todos los servicios directamente en la tabla de servicios, puedes mostrarla haciendo clic enDisplay > Details > Show check parameters en la barra de menú. Tendrá un aspecto similar al siguiente

5. Personalizar el descubrimiento de servicios
Anteriormente hemos mostrado cómo puedes configurar el descubrimiento de servicios para suprimir la visualización de servicios no deseados. Además, hay otros conjuntos de reglas para una serie de Plugin que influyen en el comportamiento del descubrimiento con estos Plugin. No sólo hay configuraciones para omitir items, también las hay para encontrar activamente items, o reunirlos en grupos. La denominación de los items a veces también es un problema, por ejemplo, para los switchports en los que puedes decidir una descripción o alias para un item (que se utilizará en el nombre del servicio) en lugar de su ID de interfaz.
Todos los conjuntos de reglas relevantes para el descubrimiento de servicios se encuentran en Setup > Services > Discovery rules. Por favor, no confundas estos conjuntos de reglas con los destinados a parametrizar los servicios reales. De hecho, algunos Plugin tienen dos conjuntos de reglas: uno para el descubrimiento y otro para los parámetros. He aquí algunos ejemplos.
5.1. Monitorización de procesos
No tendría mucho sentido que Checkmk definiera simplemente un servicio para monitorizar todos los procesos que se encuentran en un host. La mayoría de los procesos carecen de interés o sólo están presentes temporalmente. Como mínimo, hay cientos de procesos ejecutándose en un servidor Linux típico.
Por tanto, para la monitorización de servicios tienes que trabajar conservicios forzados o -y esto es mucho más elegante- utilizando el conjunto de reglas Process discovery para indicar al descubrimiento de servicios qué procesos debe vigilar. De este modo, siempre puedes permitir que se inicie automáticamente una monitorización cuando se encuentre un procesodefinitivamente interesante en un host.
La siguiente imagen muestra una regla del conjunto de reglas Process discovery que busca procesos que ejecuten el programa /usr/sbin/apache2
. En este ejemplo se creará un servicio (Grab user from found processes) para cada usuario diferente del sistema operativo para el que se encuentre un proceso de este tipo. El servicio se llamará Apache %u
, donde %u
se sustituirá por el nombre del usuario. Para el umbral, el número de instancias del proceso se fijará en 1/1 (mínimo) y 30/60 (máximo) respectivamente:

Ten en cuenta que los umbrales predefinidos se denominanDefault parameters for detected services. Puedes asignarlos -y también a todos los demás servicios- mediante reglas. Como recordatorio: las reglas anteriores configuran el descubrimiento deservicios -el qué. Si los servicios están presentes por primera vez, la secuencia de reglas State and count of processes es responsable de los umbrales.
El hecho de que puedas establecer umbrales durante un descubrimiento es una ayuda para la comodidad. Sin embargo, hay un inconveniente: los cambios en la regla de descubrimiento sólo surten efecto con el siguiente descubrimiento. Si cambias los umbrales, tendrás que realizar un nuevo descubrimiento. Sin embargo, si sólo utilizas la regla para descubrir los servicios (el qué), y el conjunto de reglasState and count of processes para el cómo, entonces no tendrás este problema.
Para monitorizar determinados procesos o procesos individuales en un host Windows, sólo tienes que indicar el nombre del archivo (incluida la extensión) sin ninguna ruta en el campoExecutable. Puedes encontrar todos estos nombres en la pestaña de detalles del Administrador de Tareas de Windows, por ejemplo. En la regla Process discovery esto podría verse así para el proceso svchost
:

Puedes encontrar más información sobre el descubrimiento de procesos en la ayuda en línea de este conjunto de reglas. Como siempre, puedes activarlo a través de Help > Show inline help en la barra de menú.
5.2. Servicios de monitorización en Windows
El descubrimiento y parametrización de la monitorización de servicios de Windows es análogo al de los procesos y se controla mediante los conjuntos de reglasWindows service discovery (qué) y Windows services (cómo) respectivamente. Aquí tienes un ejemplo de regla que vigila dos servicios:

Exactamente igual que para los procesos, aquí el descubrimiento de servicios también es sólo una opción. Si, basándote en las características del host y en las carpetas, puedes formular reglas precisas para los host en los que se esperan servicios concretos, también puedes trabajar con servicios forzados. Esto es independiente de la situación que se encuentre realmente; sin embargo, puede requerir bastante más esfuerzo, ya que en estas circunstancias necesitas muchas reglas para describir exactamente qué servicio se espera en cada host.
5.3. Monitorización de los puertos del switch
Checkmk utiliza la misma lógica para la monitorización de interfaces de red en servidores y puertos en conmutadores Ethernet. Con los puertos del switch son especialmente interesantes las opciones existentes para controlar el descubrimiento de servicios, aunque (a diferencia de los procesos y los servicios de Windows) el descubrimiento funciona inicialmente sin reglas. Es decir, por defecto Checkmk monitoriza automáticamente todos los puertos físicos que actualmente tienen un estado UP. El conjunto de reglas aplicable se denomina Network interface and switch port discovery y ofrece numerosas opciones de configuración que aquí sólo se describen brevemente:

Las siguientes opciones son las más importantes:
En la sección Appearance of network interface puedes determinar, cómo debe aparecer la interfaz en el nombre del servicio. Puedes elegir entreUse description, Use alias y Use index.
La restricción o ampliación de los tipos o nombres de las interfaces que se monitorizan.
6. Configuración de servicios forzados
Hay algunas situaciones en las que un descubrimiento de servicios automático no tendría sentido. Éste es siempre el caso si quieres forzar el cumplimiento de una directriz concreta. Como vimos en el capítulo anterior, puedes permitir que la monitorización de los servicios de Windows se configure automáticamente cuando éstos se encuentren. ¿Qué ocurre cuando la ausencia de un servicio de este tipo supone un problema? Por ejemplo:
Un determinado antivirus debe estar instalado en cada host Windows.
NTP debe estar configurado en cada host Linux.
En tales casos, puedes simplemente imponer esos servicios. Encontrarás el punto de partida para ello en Setup > Services > Enforced services. Subyacente a esto hay una colección de conjuntos de reglas que tienen exactamente los mismos nombres que los conjuntos de reglas utilizados para configurar los parámetros de estos checks.
Sin embargo, las reglas difieren en dos puntos:
Son reglas para host, no para servicios. Los servicios serán creados por las reglas.
Como no se produce ningún descubrimiento, debes seleccionar el check plugin que se utilizará para el check.
El siguiente ejemplo muestra el cuerpo de la regla State of NTP time synchronisationen Enforced services:

Junto a los umbrales, aquí estableces el check plugin (por ejemplo, chrony
o ntp_time
). Para los check plugin que requieren un item también debes especificarlo. Por ejemplo, esto es necesario para el Plugin oracle_processes, que requiere los detalles del SID de la base de datos que se va a monitorizar:

Un servicio manual definido de esta forma se instalará en todos los host a los que se apliquen estas reglas. Ahora habrá tres condiciones posibles para la monitorización real:
El host está correctamente instalado y el servicio está OK.
El agente notifica que el servicio solicitado no se ejecuta o tiene algún problema. Entonces el servicio marca CRIT o UNKNOWN.
El agente no proporciona ninguna información, por ejemplo, porque NTP ni siquiera está instalado. Entonces el servicio permanece en PEND y el servicio Checkmk pasa a WARN con el aviso de que falta la sección correspondiente en los datos del agente.
No vas a necesitar la mayoría de los conjuntos de reglas del módulo Enforced services, sólo están presentes para completar la información. Los casos más comunes de checks manuales son:
Monitorización de los servicios de Windows (Conjunto de reglas: Windows Services)
Monitorización de procesos (Conjunto de reglas: State and count of processes)
7. El check de descubrimiento
En la introducción prometimos que Checkmk no sólo detecta la lista de servicios automáticamente, sino que también puede mantenerla actualizada. También sería natural tener la posibilidad de ejecutar manualmente un descubrimiento masivo para todos los host de vez en cuando.
7.1. Check automático de servicios no monitorizados
Sin embargo, para esto es mucho mejor un check de descubrimiento regular, que se configura automáticamente en los nuevos sites. Este servicio Check_MK Discovery existe para cada host y registrará un WARN siempre que encuentre items no monitorizados:

Los detalles de los servicios no supervisados o desaparecidos se encuentran en la página de detalles del servicio Check_MK Discovery en el campo Details:

Se puede acceder fácilmente a la lista de servicios del host en la Configuración mediante el menú de acción del servicio Check_MK Discovery y la entrada Run service discovery.
La parametrización del discovery check se realiza de forma muy sencilla utilizando el conjunto de reglas Periodic service discovery. En un site que esté out of the box, ya encontrarás una regla que se ha definido para que se aplique a todos los host:

Junto con el intervalo en el que debe ejecutarse el check, puedes establecer el estado de monitorización para los casos de servicios no monitorizados, servicios desaparecidos, etiquetas de servicio cambiadas y nuevas etiquetas de host.
7.2. Añadir servicios automáticamente
Puedes hacer que el discovery check añada automáticamente los servicios que faltan. Para ello, activa la opción Automatically update service configuration, que pondrá a tu disposición otras opciones.

Además de las adiciones, en Parameters también puedes elegir borrar los servicios desaparecidos, o incluso borrar todos los servicios existentes y realizar un nuevo descubrimiento completo. Esta última opción se encuentra en el menú desplegable bajo el nombre Refresh all services and host labels (tabula rasa). ¡Ambas opciones deben utilizarse con cuidado! Un servicio desaparecido puede indicar un problema! La comprobación de descubrimiento simplemente borrará dicho servicio y te hará creer que todo está en orden. La actualización es especialmente arriesgada. Por ejemplo, la comprobación de puertos de conmutación sólo tendrá en cuenta en la monitorización los puertos que estén ARRIBA. Los puertos con un estado de ABAJO se percibirán como desaparecidos y se borrarán rápidamente de la comprobación de descubrimiento!
Hay que tener en cuenta otro problema: añadir servicios o incluso el Activate Changes automático puede distraerte -al administrador- cuando estás realizando una configuración. Teóricamente, puede ocurrir que mientras estás trabajando en reglas y configuraciones, en ese momento un check de descubrimiento active tus cambios. ¡En Checkmk sólo se pueden activar todos los cambios a la vez! Para evitar este tipo de situaciones, puedes reprogramar la hora de esta función, por ejemplo, para toda la noche. La imagen anterior muestra un ejemplo de ello.
En Vanished clustered services puedes gestionar los servicios agrupados en clúster por separado. La particularidad aquí: Si un servicio agrupado se desplaza de un nodo a otro, podría considerarse brevemente como desaparecido y, en consecuencia, borrarse involuntariamente. Si renuncias a esta opción, a su vez, los servicios que hayan desaparecido realmente nunca se borrarían.
El ajuste Group discovery and activation for up to garantiza que no todos los servicios recién descubiertos activen inmediatamente unActivate Changes, sino que habrá un tiempo de espera especificado para que puedan activarse varios cambios en una sola acción. Aunque la comprobación de descubrimiento se ajuste a un intervalo de dos horas o más, esto sólo se aplica a cada host por separado. Las comprobaciones no se ejecutan simultáneamente para cada host, lo cual es bueno, ya que una comprobación de descubrimiento requiere muchos más recursos que una comprobación normal.
8. Servicios pasivos
Los servicios pasivos son aquellos que no son iniciados activamente por Checkmk, sino por resultados de check canalizados regularmente desde fuentes externas. Esto ocurre generalmente a través de la tubería de comandos del núcleo. He aquí un procedimiento paso a paso para crear un servicio pasivo:
En primer lugar, tienes que notificar el servicio al núcleo. Esto se hace con el mismo conjunto de reglas que en tus propios checks activos, salvo que omites el Command line:

La imagen también muestra cómo puedes comprobar si los resultados de los checks se reciben regularmente. Si no aparecen durante más de diez minutos, el servicio se marcará automáticamente como UNKNOWN.
Después de un Activate Changes, el nuevo servicio comenzará su vida en estadoPENDIENTE:

El envío del resultado del check tiene lugar ahora en la línea de comandos mediante unecho
del comando PROCESS_SERVICE_CHECK_RESULT
en la tubería de comandos~/tmp/run/nagios.cmd
.
La sintaxis se ajusta a las convenciones habituales de Nagios, incluyendo una marca de tiempo actual entre corchetes. Como argumento del comando necesitas el nombre del host (por ejemplo, myhost
) y el nombre del servicio seleccionado (por ejemplo, BAR
). Los dos argumentos siguientes son de nuevo el estado (0
... 3
) y la salida del Plugin. La marca de tiempo se crea con $(date +%s)
:
OMD[mysite]:~$ echo "[$(date +%s)] PROCESS_SERVICE_CHECK_RESULT;myhost;BAR;2;Something bad has happened" > ~/tmp/run/nagios.cmd
Ahora el servicio muestra inmediatamente su nuevo estado:

9. Descubrimiento de servicios en la línea de comandos
Una GUI está bien, pero la buena y vieja línea de comandos a veces sigue siendo práctica, ya sea para automatizar o simplemente para que un usuario experimentado pueda trabajar con rapidez. El descubrimiento de servicios puede iniciarse con el comando cmk
-I
en la línea de comandos. Hay un par de variables en este proceso. Para todas ellas se recomienda la opción -v
, para que puedas ver lo que ocurre. Sin -v
, Checkmk se comporta como el viejo Unix tradicional: mientras todo esté OK, no dice nada.
Con un simple '-I
' busca todos los host por nuevos servicios:
OMD[mysite]:~$ cmk -vI
Discovering services and host labels on all hosts
myserver01:
+ FETCHING DATA
Using data from cache file /omd/sites/mysite/tmp/check_mk/cache/myserver01
[TCPFetcher] Use cached data
No piggyback files for 'myserver01'. Skip processing.
[PiggybackFetcher] Execute data source
+ PARSE FETCHER RESULTS
Received no piggyback data
+ EXECUTING HOST LABEL DISCOVERY
+ PERFORM HOST LABEL DISCOVERY
+ EXECUTING DISCOVERY PLUGINS (42)
SUCCESS - Found no new services, 2 host labels
myserver02:
+ FETCHING DATA
Using data from cache file /omd/sites/mysite/tmp/check_mk/cache/myserver02
[TCPFetcher] Use cached data
No piggyback files for 'myserver02'. Skip processing.
[PiggybackFetcher] Execute data source
+ PARSE FETCHER RESULTS
Received no piggyback data
+ EXECUTING HOST LABEL DISCOVERY
+ PERFORM HOST LABEL DISCOVERY
+ EXECUTING DISCOVERY PLUGINS (1900)
SUCCESS - Found no new services, 2 host labels
Con -I
también puedes introducir uno o más nombres del host para descubrir sólo éstos. Esto tiene además un segundo efecto: mientras que un -I
en todos los hosts funciona básicamente sólo con datos en caché, Checkmk funciona siempre con datos nuevos de un host nombrado explícitamente.
OMD[mysite]:~$ cmk -vI myserver01
Alternativamente, puedes filtrar utilizando tags:
OMD[mysite]:~$ cmk -vI @mytag
Esto realizaría el descubrimiento de todos los hosts con el tag del host mytag
. El filtrado con tags está disponible para todas las opciones de cmk que aceptan múltiples hosts.
Con las opciones --cache
y respectivamente --no-cache
puedes determinar explícitamente el uso de caché.
Se pueden recibir salidas adicionales con una segunda -v
. Con los dispositivos basados en SNMP puedes ver incluso cada OID recuperado del dispositivo:
OMD[mysite]:~$ cmk -vvI myswitch01
Discovering services on myswitch01:
myswitch01:
SNMP scan:
Getting OID .1.3.6.1.2.1.1.1.0: Executing SNMP GET of .1.3.6.1.2.1.1.1.0 on switch
=> ['24G Managed Switch'] OCTETSTR
24G Managed Switch
Getting OID .1.3.6.1.2.1.1.2.0: Executing SNMP GET of .1.3.6.1.2.1.1.2.0 on switch
=> ['.1.3.6.1.4.1.11863.1.1.3'] OBJECTID
.1.3.6.1.4.1.11863.1.1.3
Getting OID .1.3.6.1.4.1.231.2.10.2.1.1.0: Executing SNMP GET of .1.3.6.1.4.1.231.2.10.2.1.1.0 on switch
=> [None] NOSUCHOBJECT
failed.
Getting OID .1.3.6.1.4.1.232.2.2.4.2.0: Executing SNMP GET of .1.3.6.1.4.1.232.2.2.4.2.0 on switch
=> [None] NOSUCHOBJECT
failed.
Se puede realizar una renovación completa de los servicios (tabula rasa) con un doble -II
:
OMD[mysite]:~$ cmk -vII myserver01
Discovering services and host labels on: myserver01
myserver01:
+ FETCHING DATA
Using data from cache file /omd/sites/mysite/tmp/check_mk/cache/myserver01
[TCPFetcher] Use cached data
No piggyback files for 'myserver01'. Skip processing.
No piggyback files for '127.0.0.1'. Skip processing.
[PiggybackFetcher] Execute data source
+ PARSE FETCHER RESULTS
Received no piggyback data
+ EXECUTING HOST LABEL DISCOVERY
+ PERFORM HOST LABEL DISCOVERY
+ EXECUTING DISCOVERY PLUGINS (10)
1 cpu.loads
1 cpu.threads
6 cups_queues
3 df
1 diskstat
3 kernel
1 kernel.util
3 livestatus_status
1 lnx_if
1 lnx_thermal
SUCCESS - Found 21 services, 2 host labels
También puedes restringir todo esto a un único check plugin. Para ello la opción es --detect-plugins=
, y debe colocarse antes del nombre del host:
cmk -vII --detect-plugins=df myserver01
Discovering services and host labels on: myserver01
myserver01:
+ FETCHING DATA
[TCPFetcher] Execute data source
No piggyback files for 'myserver01'. Skip processing.
No piggyback files for '127.0.0.1'. Skip processing.
[PiggybackFetcher] Execute data source
+ PARSE FETCHER RESULTS
Received no piggyback data
+ EXECUTING HOST LABEL DISCOVERY
+ PERFORM HOST LABEL DISCOVERY
+ EXECUTING DISCOVERY PLUGINS (1)
3 df
SUCCESS - Found 3 services, no host labels
Cuando hayas terminado, puedes activar los cambios con cmk -O
(cmk -R
con Nagios Core):
OMD[mysite]:~$ cmk -O
Generating configuration for core (type cmc)...OK
Creating helper config...OK
Reloading monitoring core...OK
Y cuando te encuentres con un error durante un descubrimiento...
OMD[mysite]:~$ cmk -vII --detect-plugins=df myserver01
WARNING: Exception in discovery function of check type 'df': global name 'bar' is not defined
nothing
... con un --debug
adicional puedes producir un seguimiento detallado en Python de la localización del fallo:
OMD[mysite]:~$ cmk --debug -vII --detect-plugins=df myserver01
Discovering services and host labels on myserver01:
myserver01:
Traceback (most recent call last):
File "/omd/sites/heute/share/check_mk/modules/check_mk.py", line 5252, in <module>
do_discovery(hostnames, check_types, seen_I == 1)
File "/omd/sites/heute/share/check_mk/modules/discovery.py", line 76, in do_discovery
do_discovery_for(hostname, check_types, only_new, use_caches, on_error)
File "/omd/sites/heute/share/check_mk/modules/discovery.py", line 96, in do_discovery_for
new_items = discover_services(hostname, check_types, use_caches, do_snmp_scan, on_error)
File "/omd/sites/heute/share/check_mk/modules/discovery.py", line 677, in discover_services
for item, paramstring in discover_check_type(hostname, ipaddress, check_type, use_caches, on_error):
File "/omd/sites/heute/share/check_mk/modules/discovery.py", line 833, in discover_check_type
discovered_items = discovery_function(info)
File "/omd/sites/heute/share/check_mk/checks/df", line 91, in inventory_df
foo = bar
NameError: global name 'bar' is not defined
9.1. Vista general de las opciones
Recapitulando: todas las opciones de un vistazo:
|
Descubrir nuevos servicios |
|
Eliminar y redescubrir todos los servicios (tabula rasa) |
|
Verbosas: mostrar host y servicios detectados |
|
Muy detallado: muestra un protocolo preciso de todas las operaciones |
|
Ejecuta un descubrimiento (y también una tabula rasa) sólo para el check plugin especificado |
|
Ejecutar un descubrimiento (y también una tabula rasa) sólo para los host con el tag especificado |
|
Forzar el uso de datos de caché (normalmente sólo por defecto cuando no se especifica ningún host) |
|
Obtener datos nuevos (normalmente sólo por defecto cuando se especifica un nombre del host) |
|
Cancelar en caso de error y mostrar el seguimiento completo de Python. |
|
Activar cambios (ediciones comerciales con CMC como núcleo) |
|
Activar cambios (Checkmk Raw con Nagios como núcleo) |
9.2. Guardar en archivos
El resultado de un descubrimiento de servicios -por tanto, como se ha explicado antes, las tablas de nombres del host, check plugins, items y parámetros identificados- se puede encontrar en la carpeta var/check_mk/autochecks
. Aquí, para cada host hay un conjunto de datos que almacena los servicios descubiertos automáticamente. Mientras no dañes la sintaxis Python de este conjunto de datos, puedes alterar o borrar líneas individuales manualmente. Al borrar el conjunto de datos se eliminan todos los servicios y se vuelven a marcar como casi "no supervisados".
[
{'check_plugin_name': 'cpu_loads', 'item': None, 'parameters': (5.0, 10.0), 'service_labels': {}},
{'check_plugin_name': 'cpu_threads', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'diskstat', 'item': 'SUMMARY', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'kernel_performance', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'kernel_util', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'livestatus_status', 'item': 'myremotesite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'lnx_thermal', 'item': 'Zone 0', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'mem_linux', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'mknotifyd', 'item': 'mysite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'mknotifyd', 'item': 'myremotesite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'mounts', 'item': '/', 'parameters': ['errors=remount-ro', 'relatime', 'rw'], 'service_labels': {}},
{'check_plugin_name': 'omd_apache', 'item': 'mysite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'omd_apache', 'item': 'myremotesite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'tcp_conn_stats', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'timesyncd', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'uptime', 'item': None, 'parameters': {}, 'service_labels': {}},
]
10. Grupos de servicio
10.1. ¿Por qué tener grupos de servicio?
Hasta ahora has aprendido a incluir servicios en la monitorización. Ahora no tiene mucho sentido tener que mirar listas de miles de servicios y/o tener que pasar siempre por vistas de host. Por ejemplo, si quieres ver todos los servicios del sistema de archivos o de actualización juntos, sólo tienes que reunir grupos de forma similar a como se hace con los grupos del host.
Los grupos de servicio te facilitan poner mucho más orden en la monitorización mediantevistas y mapeos de NagVis, así como cambiar lasnotificaciones dirigidas y los alert handlers. Por cierto, casi siempre podrías construir las vistas correspondientes utilizando únicamente los filtros de vista, pero los grupos de servicio están ordenados de forma más clara y es más fácil trabajar con ellos.
10.2. Crear grupos de servicio
Los grupos de servicio se encuentran en Setup > Services > Service groups.

Crear un grupo de servicio es sencillo: crea un grupo a través de Add group y asígnale un nombre que no pueda cambiarse posteriormente, así como un alias significativo:

10.3. Añadir servicios a un grupo de servicio
Para asignar servicios a grupos de servicio necesitas el conjunto de reglas Assignment of services to service groups. La forma más rápida de llegar a él es a través de la vista general de los grupos de servicio (Setup > Services > Service Groups). Aquí sólo tienes que hacer clic en Service Groups > Assign to group > Rules en la barra de menú. Como alternativa, puedes, por supuesto, encontrar la regla a través de la búsqueda de reglas en el menú Setup, o escarbar en Setup > Services > Service monitoring rules > Various > Assignment of services to service groups. Ahora utiliza Create rule in folder para hacer precisamente eso. Primero especifica a qué grupo de servicio asignar los servicios, por ejemplo myservicegroup o su alias Mi grupo de servicio 1.

La parte emocionante viene ahora en la sección Conditions. Por un lado, puedes utilizar carpetas, tags del host y nombres explícitos del host para establecer restricciones fuera de los servicios. En segundo lugar, nombra los servicios que te gustaría agrupar, como Filesystem
y myservice
para crear un conjunto de sistemas de archivos. La especificación de los servicios tiene lugar aquí en forma de expresiones regulares. Esto te permite definir los grupos con exactitud.

10.4. Check de los grupos de servicio para un servicio
Puedes comprobar la asignación de servicios en la página de detalles de un servicio concreto. Abajo, por defecto, está la línea Service groups the service is member of.

10.5. Utilizar grupos de servicio
Como ya se ha mencionado, los grupos de servicio se utilizan en varios lugares: vistas, mapas de NagVis, notificaciones y alert handlers.Para las nuevas vistas es importante que utilices Service groups como fuente de datos. Por supuesto, el widget Views también contiene vistas predefinidas para los grupos de servicio, por ejemplo, un resumen claro:

Con un clic en los nombres de los grupos de servicio obtendrás una vista completa de todos los servicios del grupo correspondiente.
Si utilizas grupos de servicio en los mapas de NagVis, recibirás un resumen de los grupos de servicio abierto en un menú al pasar el ratón por encima de un único icono:

Cuando utilices grupos de servicio en notificaciones yalert handlers, estarán disponibles comocondiciones/filtros, de los que puedes utilizar uno o varios:

11. Más sobre los Plugin de check
11.1. Breve descripción de su funcionalidad
Los check plugins son necesarios para generar servicios en Checkmk. Cada servicio utiliza un check plugin para determinar su estado, crear/mantener métricas, etc. Al hacerlo, dicho plugin puede crear uno o más servicios por host. Para que se puedan distinguir varios servicios del mismo plugin, se necesita un item. Por ejemplo, para el servicio Filesystem /var
el item es el texto /var
. En el caso de los plugins que sólo pueden generar un máximo de un servicio por host,CPU utilization
) por ejemplo, el item está vacío y no se muestra.
11.2. Plugins de check disponibles
Puedes encontrar una lista de todos los check plugins disponibles en Setup > Services > Catalog of check plugins. Aquí se pueden buscar los Plugin individuales, filtrados en varias categorías:

Para cada plugin se mostrarán tres columnas de información: una descripción del servicio (Tipo de comprobación), el nombre del check plugin (Nombre del plugin) y sus fuentes de datos compatibles (Agentes):
