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
Checkmk admite el concepto de etiquetas, de las que puedes asignar tantas como quieras a un host. Las etiquetas y los tags del host funcionan de manera muy similar:
Las etiquetas se «asignan» a los hosts de la misma manera que las etiquetas.
Las etiquetas se pueden usar como condiciones para reglas de la misma manera que los tags.
The labels are created in a similar manner to tags, following the «
key:value» principle.
Entonces, ¿por qué hay un nuevo concepto aquí? Bueno, el mundo de la TI está cambiando y se está volviendo mucho más dinámico. Los sistemas en la nube y de contenedores, como Amazon Web Services (AWS), Microsoft Azure y Kubernetes, crean y eliminan de forma autónoma lo que denominan «objetos», que corresponden a los hosts en Checkmk. En estas tecnologías, las etiquetas y las marcas desempeñan un papel importante porque establecen las conexiones entre los objetos de la monitorización y sus funciones. Los nombres de los hosts, por otro lado, son cada vez más aleatorios y carecen de significado.
Checkmk puede crear estos hosts dinámicos automáticamente con la administración dinámica del host, y también puede recibir información sobre cualquier etiqueta o tag que ya esté presente. Estas etiquetas o tags se pueden usar luego para condiciones de reglas, búsquedas, evaluaciones, dashboards y otras tareas.
Por supuesto, surge la pregunta: ¿por qué no realizamos simplemente el mapeo de esas etiquetas dinámicas al concepto existente de tags del host? En realidad, esa es una conclusión muy obvia a primera vista. Sin embargo, las etiquetas del host tienen una propiedad muy importante que haría que eso resultara muy difícil y complicado: Checkmk define de forma rígida qué etiquetas y grupos de tags de host están presentes. Todo está bien definido. Cada host tiene exactamente una etiqueta del host de cada grupo. Todo el mundo puede confiar en ello. No pueden producirse errores tipográficos en la ortografía de las etiquetas —ni siquiera con hosts que no sigan el esquema— porque su cumplimiento está estrictamente controlado por Checkmk. Esto es muy importante y útil en entornos muy heterogéneos con muchos miles de hosts gestionados manualmente.
Por el contrario, las etiquetas dinámicas de Kubernetes y similares son, en la práctica, de «forma libre», y aunque sigan un esquema, este es desconocido para Checkmk. Además, es posible que estés realizando la monitorización de varias plataformas diferentes, que a su vez utilizan las etiquetas de formas muy distintas.
Por eso se ha introducido un concepto de etiquetas de Checkmk que se adapta a esta dinámica creciente. Por supuesto, también puedes usar las etiquetas aunque no utilices conexiones a entornos en la nube.
Para responder a la pregunta «¿Cuándo usar etiquetas y cuándo usar tags del host?», hay más información en el artículo sobre la estructuración de hosts.
Estas son las características de las etiquetas:
Las etiquetas no tienen que estar predefinidas en ningún sitio. No hay un esquema fijo para las etiquetas. Todo es de formato libre. Todo está permitido.
Cada host puede tener tantas etiquetas como quieras. Estas se pueden mantener manualmente, definir mediante reglas o crear automáticamente.
Las etiquetas se estructuran según el principio «
key:value». Cada host solo puede tener un valor por clave. Así que un host que tenga la etiqueta «foo:bar» no puede tener al mismo tiempo «foo:bar2».A diferencia de los tags del host, tanto la clave como el valor —excepto los dos puntos (:)— pueden contener cualquier carácter.
No hay distinción entre el ID y el título (o nombre que se muestra): la clave de la label es ambas cosas a la vez.
The labels have the following functions:
Sientan las bases para las condiciones en las reglas de configuración, por ejemplo: «Todos los hosts con la etiqueta
os:windowsdeben ser objeto de la misma forma de monitorización».Es muy fácil guardar información adicional o comentarios sobre un host (por ejemplo,
location:RZ 74/123/xyz) y mostrarlos en vistas de tabla, por ejemplo.
2. Creación de etiquetas
2.1. Etiquetas explícitas
Las etiquetas se pueden asignar a un host de varias formas.
La primera de ellas es sencilla: En la página de propiedades del host, que se muestra cuando creas o editas un host en la configuración, puedes asignarle tantas etiquetas como quieras:

Marca la checkbox «Labels» (Label de host), luego haz clic en el campo «Add some label» (Label de host), introduce la definición de la etiqueta siguiendo el esquema «key:value» y termina pulsando Intro.
Puedes editar una etiqueta existente haciendo clic en su texto, o eliminarla con la pequeña «x».
Tanto la clave como el valor de una etiqueta pueden incluir cualquier carácter, excepto los dos puntos ( |
Por supuesto, las etiquetas también se pueden heredar de una carpeta.
Al igual que otros atributos, las etiquetas pueden estar en subcarpetas o en el host, y luego, según sea necesario, se pueden sobrescribir de nuevo —de hecho, de forma individual.
Si, por ejemplo, la etiqueta location:munich está configurada en la carpeta, esta será heredada por todos los hosts de esta carpeta que no tengan ya definida la etiqueta location.
Las demás etiquetas que pueda tener un host no se verán afectadas.
Las etiquetas definidas explícitamente para hosts o carpetas aparecen en color violeta en la lista de hosts:

2.2. Creación de etiquetas mediante reglas
Como es habitual en Checkmk, también se pueden asignar atributos a hosts y servicios mediante reglas. Esto te hará independiente de la estructura de carpetas, y también se aplica a las etiquetas. Hay un conjunto de reglas Host labels para esta función, que puedes encontrar rápidamente mediante una búsqueda en el Menú de configuración.
La siguiente regla añade la etiqueta «hw:real» a todos los hosts de la carpeta «Bavaria» que tengan el tag del host «Real Hardware»:

Quizás hayas notado que no se pueden usar etiquetas en las condiciones de esta regla. No es un error, sino algo intencionado, y evita dependencias recursivas y otras anomalías.
Las etiquetas añadidas mediante reglas aparecen en rojo en el host mostrado, pero no aparecen en la lista de hosts de la configuración, sino que solo aparecen en la vista de tabla del estado del host.
2.3. Labels generadas automáticamente
La tercera forma de crear etiquetas es de forma totalmente automática. Varias fuentes de datos, como los agentes especiales para la monitorización de sistemas en la nube y de contenedores, generan etiquetas automáticamente. En particular, cabe mencionar aquí los agentes especiales para AWS, Azure y Kubernetes. A veces, estos elementos también se denominan «tags» en las respectivas plataformas y se crean en Checkmk como etiquetas de host o de servicio. Los respectivos conjuntos de reglas proporcionan información suficiente al respecto.
Lo bueno es que no tienes que configurar nada en absoluto. En cuanto estas fuentes de datos estén activas, se generarán las etiquetas correspondientes.
En la sección Host labels generadas automáticamente encontrarás una vista general de las etiquetas que Checkmk genera automáticamente.
2.4. Especificar etiquetas mediante un plugin de agente
Una forma sencilla de manipular las etiquetas directamente es añadir un plugin de agente que, de forma análoga a las local checks, crea una sección llamada «labels».
De esta manera, puedes asignar etiquetas con más detalle que evaluando únicamente el inventario de HW/SW; por ejemplo, según los matices del hardware instalado (como las características de la CPU) o en función de los procesos que se estén ejecutando realmente (en lugar de simplemente el software instalado).
La salida de la etiqueta debe tener el formato de un diccionario de Python, como en el siguiente ejemplo:
<<<labels:sep(0)>>>
{"cpu/vendor": "zilog"}Evita conflictos con las etiquetas asignadas automáticamente por el propio Checkmk y otros Plugins, ya que no se puede garantizar un orden de evaluación concreto.
2.5. Incluir etiquetas encontradas en el check de descubrimiento
Si ha habilitado la comprobación de descubrimiento —que es la opción predeterminada para las nuevas instalaciones—, te avisará cuando se encuentren nuevas host labels que aún no se hayan añadido a las propiedades del host en la configuración. Esto tendrá un aspecto similar al siguiente, por ejemplo:

Tienes dos opciones para responder a esta advertencia. La primera es añadir las nuevas etiquetas accediendo a la configuración del servicio del host en la configuración y actualizando la configuración de las etiquetas con el elemento de menú «Hosts > Update host labels». La comprobación de descubrimiento volverá a ser «OK» la próxima vez que se ejecute (con un retraso de hasta dos horas), incluso si aún no has activado los cambios. Si no quieres esperar tanto tiempo, también puedes actualizar el servicio manualmente de inmediato seleccionando «Reschedule check» en el menú de acción del servicio.
Si esto afecta a muchos hosts a la vez, seguramente no querrás visitar la configuración del servicio de cada host. Lo mejor que puedes hacer aquí es ejecutar la acción masiva «Run bulk service discovery» y seleccionar «Only discover new host labels» como modo —o, alternativamente, «Add unmonitored services and new host labels» si también quieres aprovechar para añadir nuevos servicios.
La segunda forma de hacer que el check de descubrimiento pase a verde es reconfigurarlo para que ya no te avise de nuevas etiquetas. Para ello, ve al conjunto de reglas «Periodic service discovery» y edita la regla existente; allí encontrarás la opción «Severity of new host labels»:

Esta está configurada en «Warning» por defecto. Elige «OK - do not alert, just display» y la check dejará de mostrar avisos.
Las etiquetas encontradas mediante el proceso de descubrimiento se muestran en amarillo ocre.
2.6. Orden de prioridades en la asignación de etiquetas
En teoría, una misma etiqueta puede definirse con valores diferentes en varias fuentes a la vez. Por eso existe el siguiente orden de prioridad:
En primer lugar, las etiquetas explícitas, es decir, aquellas que defines para el host o la carpeta directamente en la configuración.
En segundo lugar están las etiquetas creadas por reglas.
En último lugar están las etiquetas generadas automáticamente.
Estas reglas de prioridad te dan el control total sobre las etiquetas.
3. Las etiquetas como condiciones en las reglas
3.1. Condiciones en las reglas
Una función importante de las etiquetas es la misma que la de las características de host: Es decir, su uso como condición en las reglas. Esto resulta especialmente útil para las etiquetas generadas automáticamente, ya que puedes adaptar tu monitorización de forma totalmente automática basándote en la información de AWS, Azure, Kubernetes y demás.
Añade condiciones con Add to condition para las etiquetas de host o servicio.
Ahora selecciona is o not para formular una condición positiva o negativa y, a continuación, introduce la etiqueta en el formato habitual key:value.
Presta atención a la ortografía exacta aquí, incluyendo las mayúsculas.
Como las etiquetas se pueden definir sin especificaciones, Checkmk no puede reconocer errores tipográficos.
No obstante: cuando escribes una etiqueta, Checkmk sugiere etiquetas existentes si hay coincidencia con tu entrada anterior.
En las sugerencias no se distingue entre etiquetas de host y de servicio: se ofrecen todas las etiquetas que coinciden.
Presta atención a la ortografía correcta, ya que los errores ortográficos, el uso incorrecto de mayúsculas, etc., harán que la regla deje de funcionar.
Sin embargo, la definición de la condición va un paso más allá:
Para refinar aún más la condición, también tienes a tu disposición los operadores booleanos Not, And y Or.
Aquí, Not es la abreviatura de And Not.
Notsignifica que la condición A debe cumplirse y la condición B no debe cumplirse al mismo tiempo.Andsignifica que tanto la condición A como la condición B deben cumplirse al mismo tiempo.Orsignifica que debe cumplirse la condición A o la condición B, pero también pueden cumplirse ambas condiciones.
Los operadores se procesan exactamente en este orden de prioridad — |
Por ejemplo, para encontrar hosts con la etiqueta cmk/site:today pero sin la etiqueta cmk/piggyback_source_today:yes, la condición podría ser así:

Puedes refinar esta condición con is o not con cualquier otra especificación. O puedes añadir un nuevo grupo de condiciones con Add to condition, lo que hace que la condición, ahora más compleja, sea más fácil de leer, pero no cambia la evaluación del álgebra booleana:

Si no has definido ni Host tags ni Host labels, la regla en cuestión se aplica siempre a todos los hosts o servicios. Si has creado varias reglas, es posible que las reglas posteriores ya no se evalúen; consulta Tipos de análisis de reglas. |
Puedes usar tanto etiquetas como tags del host en una regla. Estas se enlazan automáticamente con un «Y». Por lo tanto, la regla solo se aplica si ambas condiciones se cumplen al mismo tiempo.
3.2. Condiciones en las reglas de notificación
También puedes usar etiquetas como condiciones en las reglas de notificación. El uso es el mismo que en otras condiciones, así que no necesitas volver a aprender a usarlas. Selecciona «Match host labels» y simplemente introduce qué etiquetas debe tener un host o servicio, lo que activará una notificación a través de esta regla. De nuevo, las etiquetas múltiples se conectan mediante la operación «AND».
4. Etiquetas en las vistas de tabla
Hasta ahora solo hemos hablado de las etiquetas en el entorno de configuración (o, en resumen: la configuración). Las etiquetas también son visibles en el entorno de monitorización, por ejemplo, en la vista de estado de un host:

Aquí puedes ver las etiquetas en diferentes colores según cómo se hayan creado: Las etiquetas explícitas en violeta, las creadas por reglas en rojo y las creadas por un check de descubrimiento en amarillo ocre.
El resaltado en color de las etiquetas no solo destaca visualmente en la vista de tabla, sino que también es práctico porque se puede hacer clic en ellas, lo que te lleva a una búsqueda de todos los hosts con esta etiqueta:

Aquí puedes buscar hosts con esta etiqueta (usando la opción predeterminada is) o sin esta etiqueta (usando la opción is not).
También puedes usar los operadores booleanos Not, And y Or en la búsqueda de etiquetas, tal y como se describe en la sección «Condiciones» de las reglas.
Por ejemplo, para encontrar hosts Linux que estén ubicados en Múnich y que no sean servidores web, el filtro podría tener este aspecto:

Puedes refinar aún más este filtro, por ejemplo, para encontrar además hosts Windows que sean tanto «sin pantalla» (con or) como franceses (con and). Puedes introducir las tres nuevas líneas para esta ampliación del filtro directamente debajo de las existentes, o puedes crear un nuevo grupo con Add to query, lo que hace que el filtro, ahora más complejo, sea más fácil de leer, pero no cambia la evaluación del álgebra booleana:

Si te interesa saber qué sustitución de corchetes genera Checkmk a partir de los filtros de etiquetas introducidos, puedes visualizar la consulta de Livestatus asociada. Para ello, activa Setup > General > Global settings > Debug Livestatus queries. |
En la barra de filtro, por supuesto, también puedes combinar la búsqueda de etiquetas con los demás parámetros de búsqueda disponibles.
5. Etiquetas de servicio
Los servicios también pueden tener etiquetas. Son similares a las host labels, aunque con algunas pequeñas diferencias:
No puedes definir etiquetas de servicio de forma explícita. Solo se pueden crear mediante reglas (Service labels) o de forma automática.
También puedes formular condiciones con etiquetas de servicio. En un conjunto de reglas, las etiquetas de servicio solo se ofrecen como entrada si la regla puede lograr una coincidencia con un servicio.
6. Etiquetas del agente
Checkmk Ultimate incluye la opción de crear hosts automáticamente. Para ello, se automatiza toda la cadena de registro de agentes, creación de hosts, descubrimiento de servicios y activación de cambios. La creación del host tiene lugar tras el registro.
Esta automatización plantea algunos retos a la hora de estructurar los hosts recién creados.
Hasta ahora, el sistema operativo (almacenado en la host label cmk/os_family) solo se podía determinar a partir de la salida del agente.
Sin embargo, para obtenerlo, el host ya debía estar creado.
Por este motivo, se introdujo el concepto de etiquetas del agente volátiles. Estas etiquetas se envían durante el registro y, por lo tanto, están disponibles antes de que se cree el primer agente. Durante el registro, puedes usar las etiquetas del agente para determinar si realmente se debe crear un host en la monitorización y, en caso afirmativo, para influir en la carpeta del host, así como en otros atributos del host. Una vez completado el registro, ya no se puede acceder a las etiquetas del agente.
Durante el registro siempre se transfieren dos etiquetas del agente predefinidas:
cmk/os-familycontiene la familia del sistema operativo (actualmenteWindowsoLinux).cmk/hostname-simplecontiene el nombre del ordenador en forma abreviada (es decir, sin la parte del dominio)
Puedes asignar libremente etiquetas del agente personalizadas adicionales, por ejemplo:
organizational/department:documentation.
A los hosts registrados automáticamente se les asigna la etiqueta de host cmk/agent_auto_registered:yes.
No se admite la asignación directa de etiquetas de host como resultado de etiquetas del agente específicas.
Sin embargo, tienes la alternativa de registrar los hosts en una carpeta (temporal) y luego asignar etiquetas de host a todos los hosts de esa carpeta.
7. Más información
7.1. Host labels generadas automáticamente
| Clave | Valores |
|---|---|
|
|
|
|
|
Nombre de la cuenta de AWS a la que pertenece el host |
|
Tags de los objetos de AWS |
|
Grupo de recursos al que pertenece el objeto de Azure |
|
Tags de los objetos de Azure |
|
|
|
|
|
Nombre del dispositivo SNMP transmitido, p. ej., |
|
Imagen Docker, p. ej., |
|
Nombre de la imagen Docker, p. ej., |
|
Versión de la imagen Docker, p. ej., |
|
|
|
Estas etiquetas se generan para cualquier etiqueta de Kubernetes que sea una anotación válida de Kubernetes (configurable mediante la regla Kubernetes). |
|
|
|
nombre del clúster de Kubernetes |
|
nombre del clúster de Kubernetes host |
|
Cronjob de Kubernetes |
|
Nombre del DaemonSet |
|
Nombre del despliegue |
|
Nombre del namespace de Kubernetes asociado |
|
Nombre del nodo de Kubernetes asociado. Los hosts de Checkmk de tipo Pod o Node reciben esta etiqueta. |
|
Tipo de objeto de Kubernetes, p. ej., |
|
Nombre del StatefulSet |
|
|
|
Tipo de dispositivo Meraki, p. ej., |
|
ID de red a la que pertenece el dispositivo Meraki |
|
ID de la organización a la que pertenece el dispositivo Meraki |
|
Nombre de la organización a la que pertenece el dispositivo Meraki |
|
|
|
Sistema operativo, informado por el agente como |
|
Tipo de sistema operativo, informado por el agente como |
|
Nombre del sistema operativo, informado por el agente como |
|
Plataforma del sistema operativo, indicada por el agente como |
|
Versión del sistema operativo, indicada por el agente como |
|
|
|
|
