![]() |
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
En Checkmk puedes configurar parámetros para host y servicios mediante reglas. Esta característica hace que Checkmk sea muy eficaz en entornos complejos, y también aporta una serie de ventajas a las instalaciones más pequeñas. Para aclarar el principio de la configuración basada en reglas, la compararemos con el método clásico.
1.1. El método clásico
Tomemos como ejemplo la configuración de los umbrales de WARN y CRIT en la monitorización de sistemas de archivos. Con una configuración orientada a la base de datos, para cada sistema de archivos se introduciría una línea en una tabla:
Host | Sistema de archivos | Advertencia | Crítico |
---|---|---|---|
|
|
90 % |
95 % |
|
|
90 % |
95 % |
|
|
90 % |
95 % |
|
|
85 % |
90 % |
|
|
85 % |
90 % |
|
|
85 % |
95 % |
|
|
100 % |
100 % |
Esto es relativamente sencillo, pero sólo porque la tabla de este ejemplo es corta. En la práctica suele haber cientos o miles de sistemas de archivos. Herramientas como copiar y pegar, y las operaciones masivas pueden simplificar el trabajo, pero el problema básico sigue siendo: ¿cómo se puede identificar y aplicar una directiva estándar? ¿Cuál es la regla general? ¿Cómo se deben preestablecer los umbrales para futuros hosts?
1.2. ¡Basarse en reglas es mejor!
Sin embargo, ¡una configuración basada en reglas consiste en la directiva! Sustituiremos la lógica de la tabla anterior por un conjunto de cuatro reglas. Si suponemos que myserver001
es un sistema de prueba, y que en cada caso la primera regla relevante se aplica a cada sistema de archivos, el resultado serán los mismos umbrales que en la tabla anterior:
Los sistemas de archivos con el punto de montaje
/var/trans
tienen un umbral del 100/100 %.El sistema de archivos
/sapdata
enmyserver002
tiene un umbral del 85/95 %.Los sistemas de archivos de los sistemas de prueba tienen un umbral del 90/95 %.
Todos los sistemas de archivos (no especificados) tienen un umbral del 85/90 %.
Es cierto que con sólo dos host no se consigue mucho, pero con unos pocos host más puede suponer rápidamente una gran diferencia. Las ventajas de la configuración basada en reglas son evidentes:
La directiva es claramente reconocible y puede aplicarse de forma fiable.
Puedes cambiar la directiva en cualquier momento sin necesidad de manejar miles de conjuntos de datos.
Las excepciones siguen siendo posibles, pero se documentan en forma de reglas.
La incorporación de nuevos host es sencilla y menos propensa a fallos.
En resumen, pues: ¡menos trabajo y más calidad! Por eso, con Checkmk encontrarás abundantes reglas para personalizar host y servicios, como umbrales, ajustes de monitorización, responsabilidades, notificaciones, configuración de agentes y muchas más.
1.3. Tipos de conjuntos de reglas
Dentro de la Configuración, Checkmk organiza las reglas en conjuntos de reglas. Cada conjunto de reglas tiene la tarea de definir un parámetro específico para hosts o servicios. Checkmk contiene más de 700 conjuntos de reglas. He aquí algunos ejemplos:
Host check command- define cómo determinar si los host están UP.
Alternative display name for services- define nombres alternativos para las pantallas de los servicios.
JVM memory levels- establece umbrales y otros parámetros para la monitorización de la carga de memoria de las máquinas virtuales (VM) de Java.
Cada conjunto de reglas es responsable o bien de los host o bien de los servicios, nunca de ambos. Si un parámetro puede definirse tanto para los host como para los servicios, hay un par de reglas aplicables -por ejemplo, Normal check interval for host checks y Normal check interval for services checks.
Algunos conjuntos de reglas, en sentido estricto, en realidad no definen parámetros, sino que crean servicios. Un ejemplo son las reglas para comprobaciones activas, que se encuentran en Setup > Services > HTTP, TCP, Email, …. Con ellas puedes, por ejemplo, configurar una comprobación HTTP para hosts específicos. Estas reglas se clasifican como reglas de host, debido a que si existe una comprobación de este tipo en un host, se considera una propiedad del host.
Además, hay conjuntos de reglas que controlan el descubrimiento de servicios. Con ellos puedes, por ejemplo, a través de Windows service discovery definir para qué servicios de Windows deben crearse checks automáticos si se encuentran en un sistema. También son reglas de host.
La mayor parte de los conjuntos de reglas determinan parámetros para determinados check plugins. Un ejemplo es Network interfaces and switch ports. Los parámetros de estas reglas están adaptados muy específicamente a su correspondiente plugin. Estos conjuntos de reglas sólo se utilizan fundamentalmente con los servicios que se basan en este plugin. Si no estás seguro de qué conjunto de reglas es responsable de qué servicios, la mejor forma de averiguarlo es navegar directamente a través del servicio hasta la regla correspondiente. Más adelante explicaremos cómo hacerlo.
1.4. tags del host
Hay algo que no hemos mencionado hasta ahora: en el ejemplo anterior hay una regla para todos los sistemas de prueba. ¿Dónde se define realmente que un host es un sistema de prueba?
En Checkmk, algo como sistema de pruebas se conoce como tag del host. Puedes ver qué tags están disponibles a través de Setup > Hosts > Tags. Algunos tags ya están predefinidos, por ejemplo, para un Test system definido en el grupo Criticality.
La aplicación de etiquetas a los hosts se hace explícitamente en las propiedades del host, o a través de la herencia en la jerarquía de carpetas. Cómo hacerlo se explica en el artículo sobre hosts. Cómo crear tus propias etiquetas, y en qué consisten las etiquetas predefinidas se explicará en el artículo sobre etiquetas del host.
2. Determinación de los conjuntos de reglas correctos
2.1. Conjuntos de reglas de host
Si deseas crear una nueva regla que defina un parámetro para uno o más host, hay varias formas de hacerlo. La forma directa es a través del grupo correspondiente en el menú setup, en este caso Setup > Hosts > Host monitoring rules:

En la siguiente vista, se muestran todos los conjuntos de reglas relevantes para la monitorización del host. Los números que siguen a los nombres de estos conjuntos de reglas muestran el número de reglas que ya se han definido:

Sin embargo, puedes alcanzar tu objetivo algo más rápido a través del campo de búsqueda. Para ello, por supuesto, necesitas saber aproximadamente cómo se llama el conjunto de reglas. Aquí tienes el resultado de una búsqueda de host checks
como ejemplo.

Otra forma es a través del elemento de menú Hosts > Effective parameters en las propiedades de un host existente en la Configuración o a través del icono en la lista de hosts de una carpeta.

Allí encontrarás no sólo todos los conjuntos de reglas que afectan al host, sino también el parámetro actualmente efectivo para este host. En el ejemplo de Host check command no se aplica ninguna regla para el host mostrado, y por lo tanto se establece el valor por defecto Smart PING (only with Checkmk Micro Core) de las ediciones comerciales. En Checkmk edición Raw el valor por defecto es PING (active check with ICMP echo request).

Haz clic en Host check command para ver el conjunto de reglas completo.
Si ya existe una regla, en lugar de Default value aparece el número de la regla que define este parámetro.

Si haces clic en él, accederás directamente a la regla.
2.2. Conjuntos de reglas de servicio
La ruta a los conjuntos de reglas para los servicios es similar. El acceso general es a través del menú Setup, en este caso Setup > Services > Service monitoring ruleso, más apropiadamente a través del campo de búsqueda.

Si todavía no tienes mucha experiencia con los nombres de los conjuntos de reglas, entonces la ruta a través del servicio es más sencilla. De forma similar a los host, también hay una página en la que se muestran todos los parámetros de un servicio y en la que tienes la posibilidad de acceder directamente a los conjuntos de reglas aplicables. Puedes acceder a esta página de parámetros con el icono de la lista de servicios de un host en la Configuración. El icono te lleva directamente al conjunto de reglas que define el parámetro para el check plugin de este servicio.

Por cierto, el icono de la página de parámetros también se encuentra en la monitorización del menú de acción de cada servicio:

2.3. Servicios controlados
En el menú Setup también encontrarás una entrada para Enforced Services. Como su nombre indica, puedes utilizar estos conjuntos de reglas para forzar la creación de servicios en tus host. Encontrarás más detalles en el artículo sobre servicios. Un pequeño número de conjuntos de reglas -como Simple checks for BIOS/Hardware errors- sólo se pueden encontrar en los servicios forzados. Son servicios que no resultan del descubrimiento de servicios, sino que los creas tú manualmente.
2.4. Conjuntos de reglas en uso
En cada una de las listas de conjuntos de reglas antes mencionadas -ya sea en Host monitoring rules o en Service monitoring rules- puedes utilizar Related > Used rulesets en la barra de menú, para mostrar sólo los conjuntos de reglas en los que hayas definido al menos una regla. Esta suele ser una forma cómoda de empezar si quieres hacer ajustes a tus reglas existentes. Por cierto, algunas de las reglas se habrán generado por defecto al crear el site de Checkmk y forman parte de la configuración de muestra. También se muestran aquí.
2.5. Reglas ineficaces
La monitorización es un asunto complejo. Puede ocurrir que haya reglas que no coincidan con ningún host o servicio, ya sea porque te has equivocado o porque los host y servicios coincidentes han desaparecido. Estas reglas ineficaces se pueden encontrar en las listas de conjuntos de reglas mencionadas anteriormente a través de Related > Ineffective rulesets en la barra de menú.
2.6. Conjuntos de reglas obsoletos
Checkmk está en constante desarrollo. De vez en cuando las cosas se estandarizan y puede ocurrir que algunos conjuntos de reglas sean sustituidos por otros. Si tienes en uso tales conjuntos de reglas, la forma más fácil de encontrarlos es hacer una búsqueda de reglas. Ábrela a través de Setup > General > Rule search. A continuación, haz clic en la barra de menú en Rules > Refine search, selecciona Search for deprecated rulesets como opción para Deprecatedy selecciona Search for rule sets that have rules configured como opción para Used. Tras un clic adicional en Search obtendrás el resumen deseado.

3. Creación y edición de reglas
La siguiente imagen muestra el conjunto de reglas Filesystems (used space and growth) con cuatro reglas configuradas:

Las nuevas reglas se crean con el botón Create rule in folder, o clonando una regla existente con . La clonación crea una copia idéntica de la regla que luego puedes editar con . Una nueva regla creada con el botón Create rule in folder aparecerá siempre al final de la lista de reglas, mientras que una regla clonada se mostrará como una copia debajo de la regla original de la que fue clonada.
La secuencia en la que se listan las reglas se puede cambiar con el botón La secuencia es importante porque las reglas situadas más arriba en la lista siempre tienen prioridad sobre las situadas más abajo.
Las reglas se almacenan en las mismas carpetas desde las que también gestionas los hosts. Las autorizaciones de las reglas están restringidas a los hosts de esta carpeta o de las subcarpetas. En caso de reglas en conflicto, tiene prioridad la regla situada más abajo en la estructura de carpetas. De esta forma, por ejemplo, los usuarios con derechos limitados a determinadas carpetas autorizadas pueden crear reglas para sus hosts sin afectar al resto del sistema. En las propiedades de una regla puedes cambiar su carpeta y así "reubicarla".
3.1. El modo de análisis con 'semáforos
Cuando accedas a un conjunto de reglas para un host o servicio en Setup, Checkmk te mostrará este conjunto de reglas en el modo de análisis. Puedes llegar a él haciendo clic en el icono del menú de acción en Setup en la lista del host o servicio. La siguiente página Effective parameters of muestra la lista de reglas que se aplican al host/servicio. Para ir al modo de análisis, haz clic en el nombre de un conjunto de reglas para el que exista al menos una regla, es decir, un conjunto que no esté configurado en Default value:

Este modo tiene dos características. En primer lugar, aparece un segundo botón para establecer reglas:Add rule for current host bzw. Add rule for current host and service.
Con él puedes crear una nueva regla que ya tenga preseleccionado el host o servicio actual apropiado. De este modo, puedes crear una regla excepcional de forma muy fácil y directa. En segundo lugar, en cada línea aparece un icono de "semáforo", cuyo color muestra si esta regla afecta y/o cómo afecta al host o, respectivamente, al servicio actual. Son posibles las siguientes condiciones:
Esta regla no afecta al host o servicio actual. |
|
Esta regla coincide y define uno o más parámetros. |
|
La regla coincide. Pero como otra regla superior en la jerarquía tiene prioridad, esta regla es ineficaz. |
|
Esta regla coincide. De hecho, otra regla superior en la jerarquía tiene prioridad, pero no define todos los parámetros, de modo que al menos un parámetro está definido por esta regla inferior. |
En la última condición -la regla es una coincidencia parcial- sólo puede darse en conjuntos de reglas en los que una regla puede definir varios parámetros seleccionando cajas de check individuales. Teóricamente, aquí también se pueden definir individualmente todos los parámetros de otra regla. Más adelante hablaremos de ello.
4. Características de las reglas
Cada regla consta de tres bloques. El primer bloque contiene información general sobre la regla, como su nombre. El segundo bloque define lo que se supone que debe hacer la regla, es decir, qué acciones debe realizar. El tercer bloque contiene la información sobre qué, es decir, en qué hosts o servicios, debe aplicarse la regla.
4.1. Propiedades de la regla
Todo lo que aparece en el primer bloque, Rule Properties, es opcional, y sirve principalmente para la documentación:

El Description se mostrará en la tabla de todas las reglas de un conjunto de reglas.
El campo Comment puede utilizarse para una descripción más larga. Sólo aparece en el modo de edición de una regla. A través del icono puedes insertar un sello con la fecha y tu nombre de inicio de sesión en el texto.
El Documentation URL está pensado para un enlace a la documentación interna que mantienes en otro sistema (por ejemplo, una CMDB). Aparecerá como icono sobre el que se puede hacer clic en la tabla de reglas.
Con la caja de check Do not apply this rule puedes desactivar temporalmente esta regla, que aparecerá marcada en la tabla y, por tanto, no será efectiva.
4.2. Los parámetros definidos
La segunda sección es diferente para cada regla, pero siempre especifica lo que se debe hacer. La siguiente ilustración muestra un tipo de regla muy utilizado (DB2 Tablespaces). Puedes utilizar casillas de verificación para determinar qué parámetros individuales debe definir la regla. Como se ha descrito anteriormente, Checkmk determina qué regla define cada parámetro individual por separado. Por tanto, la regla de la ilustración sólo define un valor y no afecta al resto de parámetros:

También puedes controlar los valores de ésta y otras reglas en función del tiempo/calendario. Por ejemplo, puedes establecer valores umbrales para que la carga de tablespace durante el horario laboral sea diferente a la de los fines de semana.
Primero haz clic en el botón Enable timespecific parameters y después en Add new element, verás las opciones dependientes del tiempo:

Ahora selecciona un periodo de tiempo en la lista Match only during time period y, a continuación, selecciona los parámetros a los que debe aplicarse este periodo de tiempo.
Algunos conjuntos de reglas no establecen ningún parámetro, sino que sólo deciden qué host están dentro y cuáles no. Un ejemplo es el conjunto de reglas Hosts to be monitored, cuyo rango de parámetros tiene este aspecto:

Seleccionando uno de los dos valores disponibles, decides qué hacer con los hosts afectados. Seleccionando Positive match (Add matching hosts to the set) añadirás los hosts afectados al conjunto de hosts a monitorizar. Seleccionando Negative match (Exclude matching hosts from the set) eliminarás los hosts afectados de la monitorización. Positive match o Negative match se refiere al contenido de la regla actual. No es un criterio de filtrado adicional para seleccionar hosts. Filtras el conjunto de hosts afectados exclusivamente con el siguiente Conditions.
4.3. Condiciones
En la sección anterior, definiste cómo deben procesarse todos los host o servicios afectados por tu regla. En la tercera sección Conditions defines ahora sobre qué host o servicios debe actuar la regla, y por tanto sus efectos. Existen diferentes tipos de condiciones que deben cumplirse todas ellas para que la regla tenga efecto. Por tanto, las condiciones están vinculadas lógicamente por Y:

Tipo de condición
Aquí tienes la opción de utilizar condiciones normales, así como condiciones predefinidas, que se gestionan a través de Setup > General > Predefined conditions. Aquí sólo tienes que dar nombres fijos a las coincidencias de las reglas que necesites una y otra vez, y a partir de entonces sólo tienes que referirte a ellas en las reglas. Incluso puedes cambiar posteriormente el contenido de estas condiciones de forma centralizada y todas las reglas se ajustarán automáticamente en consecuencia. En el siguiente ejemplo se ha seleccionado la condición predefinida No VM:

Carpeta
Con la condición Folder defines que la regla sólo se aplica a los host de esta carpeta -o de una subcarpeta-. Si la configuración es Main, esta condición se aplica a todos los host. Como se ha descrito anteriormente, las carpetas tienen un efecto sobre la secuencia de la regla. Las reglas de las carpetas inferiores siempre tienen prioridad sobre las superiores.
Tags del host
Host tags Restringe las reglas a los hosts en función de si tienen -o no- tags del host específicos. Aquí también se utilizan siempre enlaces Y. Cualquier otra condición de tags del host en una regla reduce el número de hosts afectados por la regla.
Si quieres que una regla sea aplicable a dos valores posibles de una etiqueta, (por ejemplo, para Criticality tanto Productive system como Business critical), no puedes hacerlo con una sola regla. Necesitarás una copia de la regla para cada variante. A veces, una negación también puede ayudar en este caso. También puedes definir que una etiqueta no esté presente como condición (por ejemplo, no Test system). Las llamadas etiquetas auxiliares son otra posibilidad.
Como algunos usuarios utilizan realmente muchas tags del host, hemos diseñado este diálogo de modo que no se muestren por defecto todos los grupos de tags del host. Tienes que seleccionar específicamente el necesario para la regla. Funciona así:
En la caja de selección, elige un grupo de tags del host.
Haz clic en Add tag condition- se añadirá una entrada para este grupo.
Selecciona is o is not.
Selecciona la etiqueta deseada como valor de comparación.

Etiquetas
También puedes utilizar etiquetas como condiciones en las reglas. Lee la descripción de Condiciones en las reglas.
Host explícitos
Este tipo de condición está pensado para reglas de excepción. Aquí puedes listar uno o más nombres del host. La regla sólo se aplicará a estos hosts. Ten en cuenta que si marcas la caja Explicit hosts pero no introduces ningún host, la regla será completamente ineficaz.
A través de la opción Negate puedes definir una excepción inversa. Con ella puedes excluir de la regla a los hosts nombrados explícitamente. Esta regla se aplicará entonces a todos los hosts excepto a los mencionados aquí.

Importante: Se comprobará la congruencia exacta de todos los nombres del host introducidos aquí. Checkmk distingue fundamentalmente entre mayúsculas y minúsculas en los nombres del host.
Puedes cambiar este comportamiento a expresiones regulares anteponiendo una tilde (~
) a los nombres del host. En este caso, como siempre en Setup:
La coincidencia se aplica al principio del nombre del host.
La coincidencia no distingue entre mayúsculas y minúsculas.
Un punto-asterisco (.*
) en expresiones regulares permite una secuencia arbitraria de caracteres a continuación del punto. El siguiente ejemplo muestra una condición con la que coincidirán todos los host cuyos nombres contengan la secuencia de caracteres my
(o My
, MY
, mY
etc.):

Servicios explícitos
Para las reglas aplicables a los servicios hay un último tipo de condición que define una coincidencia con el nombre de un servicio, o respectivamente -para las reglas que establecen parámetros de check- con el nombre del item de check. Con qué se hará exactamente la coincidencia se puede ver en la leyenda. En nuestro ejemplo es el nombre (Instance) de un Tablespace:

Aquí se aplica fundamentalmente una coincidencia con expresiones regulares. La secuencia .*temp
coincide con todos los tablespaces que contengan temp
porque la coincidencia siempre se aplica al principio del nombre. El signo del dólar al final de transfer$
representa el final y, por tanto, fuerza una coincidencia exacta. Por tanto, un tablespace con el nombre transfer2
no coincidirá.
No lo olvides: para las reglas relativas a Explicit services se requiere una coincidencia con el nombre del servicio (por ejemplo, Tablespace transfer
). Para las reglas de parámetro de check se aplica una coincidencia con el item (por ejemplo, transfer
). El item es, de hecho, la parte variable del nombre del servicio, y determina a qué tablespace se aplica.
Por cierto, hay servicios sin item. Un ejemplo es CPU load. Éste sólo existe una vez para cada host, por lo que no requiere item. De ello se deduce que las reglas para estos tipos de check tampoco tienen condiciones.
5. Análisis de reglas
Ya hemos descrito cómo se crean las reglas. Sin embargo, no basta con crear reglas. Como muestra el ejemplo de la sección Basado en reglas ¡es mejor! al principio de este artículo, una sola regla no basta para conseguir el resultado deseado. Para ello se necesita un sistema más complejo de reglas secuenciadas lógicamente. Por eso también es importante comprender cómo interactúan las reglas múltiples.
5.1. Tipos de análisis de reglas
En la introducción al concepto de reglas, has visto que la primera regla que se aplica siempre determina el resultado final. Esto no es toda la verdad. Hay un total de tres tipos diferentes de evaluación:
Evaluación | Acción |
---|---|
Primera regla |
La primera regla que coincide define el valor. Las reglas posteriores no se evalúan. Éste es el caso normal de las reglas que definen parámetros sencillos. |
Primera regla por parámetro |
Cada parámetro simple se define mediante la primera regla en la que se define ese parámetro (casilla de verificación marcada). Éste es el caso normal para todas las reglas con subparámetros que se activan con casillas de verificación. |
Todas las reglas |
Todas las reglas de coincidencia añadirán elementos a la lista resultante. Este tipo se utiliza, por ejemplo, al hacer coincidir host y servicios con grupos de host, servicio y contacto. |
La información sobre cómo se evalúa la regla se muestra para cada conjunto de reglas directamente debajo de la barra de menú:

5.2. Explicación de la evaluación de reglas en la práctica
Ahora bien, ¿cómo se evalúa concretamente si se han creado varias reglas que se van a aplicar a varios host? Para ilustrarlo, pongamos un ejemplo sencillo:
Supongamos que tienes tres host y quieres establecer diferentes notificaciones periódicas para cada uno de ellos (y también para todos los host que se añadan en el futuro) con la regla Periodic notifications during host problems:
Regla A: Host-1 cada 10 minutos
Regla B: Host-2 cada 20 minutos
Regla C: todos los hosts cada 30 minutos (regla general para cubrir tanto al Host-3 como a cualquier host que se añada en el futuro).
Si ahora activas tu configuración, Checkmk recorre la cadena de reglas de arriba abajo, lo que da como resultado la siguiente evaluación:
La regla A se aplica al Host-1. La notificación para el Host-1 tiene lugar cada 10 minutos. Esto completa el proceso para el Host-1.
La regla A no se aplica al Host-2. Continuamos con la regla B. Ésta se aplica al Host-2, de modo que se notifica al Host-2 cada 20 minutos. Esto completa el proceso para el Host-2.
La regla A no se aplica al host-3, ni tampoco la regla B. Pero la regla C encaja y se aplica: la notificación para el host-3 se realiza a intervalos de 30 minutos. Esto también completa el proceso para el host-3.
Ten en cuenta lo siguiente: como "La primera regla que coincide define el parámetro" se aplica a este conjunto de reglas, el proceso de la secuencia de reglas siempre termina tras la primera coincidencia. Por tanto, ¡el orden de las reglas es decisivo para el resultado! Esto se hace evidente cuando se cambia el orden de las reglas y se intercambian las reglas B y C:
Regla A: Host-1 cada 10 minutos
Regla C: todos los host cada 30 minutos
Regla B: Host-2 cada 20 minutos
Si ahora se vuelve a recorrer la secuencia de reglas de arriba abajo para cada uno de los hosts, el resultado también cambia: la regla C ahora se aplica no sólo al Host-3, sino también al Host-2, de modo que la notificación para ambos hosts tiene lugar cada 30 minutos. Esto completa el proceso para ambos hosts. Aunque la regla B sería relevante para el Host-2, e incluso se escribió para este host, ya no se evaluará ni se aplicará. En el modo de análisis, el proceso tendrá entonces este aspecto:

Combinando las distintas opciones explicadas en este artículo -y teniendo en cuenta el orden correcto de procesamiento- puedes utilizarlas para construir complejas secuencias de reglas para complejos de host enteros.