The functionality presented here is a technical preview, i.e. a preview of a new feature that will be subject to development and expansion until further notice. During this phase, it is possible that functionality will not only be added, but also modified in such a way that existing configurations will become obsolete and you will have to recreate them. We ask for your understanding in this matter. |
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. |
La funcionalidad que se presenta aquí es una vista previa técnica, es decir, un avance de una nueva función que estará sujeta a desarrollo y ampliación hasta nuevo aviso. Durante esta fase, es posible que no solo se añadan funciones, sino que también se modifiquen de tal manera que las configuraciones existentes queden obsoletas y tengas que volver a crearlas. Te pedimos tu comprensión al respecto. |
1. Introducción
A partir de Checkmk 2.4.0, puedes recibir métricas de OpenTelemetry en
Checkmk Ultimate y procesarlas en la monitorización.
Para ello, Checkmk incluye un colector de OpenTelemetry.
Este colector admite los protocolos de transporte gRPC y HTTP(S) como destinatarios en una configuración push.
Como scraper, también puede recopilar datos de los endpoints de Prometheus (en una configuración pull).
A partir de los servicios de OpenTelemetry identificados, se pueden crear hosts automáticamente mediante la administración dinámica del host. A continuación, un agente especial asigna a estos hosts métricas de OpenTelemetry como servicios de Checkmk.
En resumen: tres componentes (recopilador, administración dinámica del host y agente especial) deben interactuar antes de que se puedan descubrir los servicios y generar las métricas. Por lo tanto, debes configurar primero estos tres componentes y activar los cambios pendientes solo al final.
Este artículo describe el estado de la integración de OpenTelemetry en el momento del lanzamiento de Checkmk 2.4.0 p10. Seguimos trabajando para incorporar los cambios posteriores de las patch releases. Algunas de las limitaciones descritas ya se han solucionado y se han añadido funciones solicitadas con frecuencia. Consulta los Werks relacionados con OpenTelemetry para conocer el estado actual de la versión de Checkmk que estás utilizando. |
2. Configuración
2.1. Activación del colector de OpenTelemetry
Primero, debes activar el colector cuando el sitio esté detenido.
Esto se puede hacer como usuario del site en la línea de comandos utilizando omd config en el menú de configuración basado en texto:
Ve a Addons y activa OPENTELEMETRY_COLLECTOR:
┌──────────────────────────Addons─────────────────────────────┐ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ MKEVENTD on │ │ │ │ MKEVENTD_SNMPTRAP off │ │ │ │ MKEVENTD_SYSLOG off │ │ │ │ MKEVENTD_SYSLOG_TCP off │ │ │ │ OPENTELEMETRY_COLLECTOR on │ │ │ │ OPENTELEMETRY_COLLECTOR_SELF_MONITORING_PORT 14317 │ │ │ │ TRACE_RECEIVE off │ │ │ │ TRACE_SEND off │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ < Change > <Main menu> │ └─────────────────────────────────────────────────────────────┘
No es necesario cambiar el puerto para la monitorización del colector, ya que está configurado en el siguiente puerto libre a partir del 14317, incluso si se utilizan varios sites.
Después de activar el colector, reinicia el site con omd start.
2.2. Configuración del colector de OpenTelemetry
Ve a Setup > Hosts > OpenTelemetry collector (experimental) y empieza a configurar un nuevo colector haciendo clic en el botón «Add OpenTelemetry collector configuration»:

En General properties, asigna un ID y un título al nuevo colector.
Para Site restriction, debes mover al menos una entrada de la izquierda a la derecha.
En la captura de pantalla anterior, el site local mysite es el único disponible.

Configuración básica
Presta atención a los siguientes puntos en las propiedades del colector:
Debes configurar al menos uno de los dos puntos finales push (vía gRPC o HTTP) o un scraper de Prometheus (pull). La captura de pantalla muestra un endpoint gRPC sin cifrar y sin autenticación en el puerto predeterminado 4317 en todas las direcciones IPv4 (
0.0.0.0).Crea al menos un campo para Host name computation. En el ejemplo, se ha seleccionado la opción más sencilla: el campo «
service.name» recibido a través de OpenTelemetry se utiliza como nombre del host en Checkmk. En la ayuda en línea, puedes encontrar más información sobre las opciones para crear nombres del host a partir de datos de OpenTelemetry.
Si quieres crear nombres del host más complejos, guarda la configuración del colector y activa los cambios sin añadir una regla para Host name computation. A continuación, asegúrate de que las métricas se envían al colector. Si ahora añades reglas para Host name computation, se mostrarán sugerencias de los campos disponibles. |
Envío de registros a la Consola de eventos
OpenTelemetry también ofrece opciones para transferir mensajes de registro. El colector se puede configurar para transferirlos en formato syslog a través de TCP a cualquier aplicación que pueda recibir mensajes syslog. En el contexto de Checkmk, resulta interesante el procesamiento de los mensajes de registro por parte de la Consola de eventos. Puedes activar esta función con la checkbox «Send log messages to event console».
Asegúrate de que OpenTelemetry Instrumentation ya garantiza que los mensajes de registro se envían con moderación. Si no tienes claro qué llega al servidor Checkmk, activa temporalmente un colector local que escuche en el puerto 514/TCP. Esto te dará una idea de los volúmenes de datos entrantes antes de proceder a activar la Consola de eventos. |
Utiliza Save para guardar el colector.
2.3. Configuración de la administración dinámica del host
Para garantizar que los hosts se creen automáticamente, configura una nueva conexión OpenTelemetry con la administración dinámica del host. Como preparación —al menos para las primeras pruebas— te recomendamos crear una carpeta separada en la que guardes los hosts de OpenTelemetry generados automáticamente.
Para configurar la nueva conexión para la administración dinámica del host, ve a Setup > Hosts > Dynamic host management > Add connection:

Realiza los siguientes ajustes en la caja Connection properties:
Establece Connector type en OpenTelemetry collector data.
La carpeta
OpenTelemetryTestse utiliza como carpeta de destino para los nuevos hosts (Create hosts in) en el ejemplo.Configura Host attributes según tu entorno de sistema.
A menos que te hayas tomado la molestia de crear nombres de hosts existentes al configurar el colector de OpenTelemetry, los hosts creados automáticamente serán hosts virtuales que solo se utilizan en el contexto de OpenTelemetry. Por lo tanto, solo puedes utilizar agentes especiales como agentes de monitorización (Configured API integrations, no Checkmk agent) y dejar la configuración de las direcciones IP en No IP.Al activar la checkbox en Service discovery, especificas que el descubrimiento de servicios se realizará en los hosts generados automáticamente. Esto da el resultado deseado si el agente especial para OpenTelemetry se ha configurado y está activo.
Para los demás parámetros, puedes encontrar más información en el artículo sobre administración dinámica del host.
Completa la nueva conexión con Save.
2.4. Configuración del agente especial
Para garantizar que también se generen los servicios de Checkmk, debes crear al menos una configuración del agente especial de OpenTelemetry. La regla necesaria se encuentra en «Setup > Agents > Other integrations > OpenTelemetry (experimental):»

En la caja «OpenTelemetry (experimental)», decide si quieres realizar la monitorización del propio colector de OpenTelemetry —a través del puerto que se mostró durante la activación del colector—.
En la condición de la regla, es obvio asignar el agente especial a la carpeta en la que se crearán automáticamente los hosts; en el ejemplo, esta es la carpeta «OpenTelemetryTest».
Guarda la regla con el nombre «Save».
Ahora que los tres componentes —el colector, la administración dinámica del host y el agente especial— están configurados, debes activar los cambios pendientes.
2.5. Envío de datos de prueba al colector
Probablemente querrás configurar el colector de OpenTelemetry para Checkmk porque en algún lugar de tu entorno de TI ya hay algo generando métricas de OpenTelemetry.
Si aún no es así, o si quieres probar rápidamente la configuración de ejemplo descrita en este artículo, puedes hacerlo con la aplicación de ejemplo «Hello metric» que encontrarás en nuestro repositorio de GitHub, la cual se ejecuta en un entorno virtual de Python.
Tarda unos dos o tres minutos desde que se envían los primeros datos, se crea el host y se detecta el servicio, hasta que este aparece en la monitorización. La siguiente imagen muestra los servicios de la aplicación de ejemplo «Hello metric»:

El nombre del host hello-metric se genera a partir del nombre del servicio indicado como opción en el comando opentelemetry-instrument, exactamente como se especifica en la configuración del colector de OpenTelemetry.
El nombre del servicio OTel metric hellolevel en Checkmk se genera a partir del nombre de la métrica, con el prefijo OTel metric añadido por el agente especial.
Si activas la opción Monitor the collector en la configuración del agente especial, es decir, la monitorización del colector, se crearán varios servicios adicionales en el host,
La aplicación de ejemplo «Dice Roll» que se presenta en el sitio web de OpenTelemetry funciona de manera muy similar a «Hello metric».
Esta aplicación de ejemplo es, en muchos aspectos, más práctica que «Hello metric».
Por ejemplo, «Dice Roll» envía métricas de OpenTelemetry cada vez que se llama al servidor de la aplicación (¡y solo entonces!) e introduce el tipo de datos «Contador». Puedes utilizar el entorno virtual de Python creado para el ejemplo «Hello metric» para probar también el ejemplo «Dice Roll». Sin embargo, también tendrás que instalar el módulo de Python flask (pip install flask) y crear el archivo app.py en la versión ampliada con métricas, tal y como se describe en estas instrucciones.
En la siguiente llamada, sustituye el servidor Checkmk como destino (aquí 198.51.100.42 con el puerto gRPC 4317):
Se ha eliminado la restricción de un solo punto de datos que se aplicaba hasta Checkmk 2.4.0 p3. El Werk #18209 describe cómo se generan los nombres de métricas de Checkmk para métricas de OpenTelemetry con múltiples puntos de datos. |
Tu servidor Flask ya está listo y puedes acceder a él en el puerto seleccionado (aquí: 8080) para lanzar un dado con cada llamada.
Puedes ver los datos del dado, por ejemplo, como salida de curl -v http://localhost:8080/rolldice.
Cada lanzamiento de dado que activas de esta manera se transmite a Checkmk como un punto de datos.
Al cabo de unos minutos, el host dice-server aparecerá en la monitorización con el servicio OTel metric dice.rolls.
Este tiene seis gráficos, de Value_1__Per_Sec a Value_6__Per_Sec, que corresponden a las frecuencias de los números del uno al seis obtenidos hasta el momento.
El motivo de la conversión es que las métricas de OpenTelemetry utilizan contadores, que solo pueden incrementarse —un tipo de datos que no está previsto en Checkmk.
Para una visualización más clara, Checkmk realiza por tanto la conversión teniendo en cuenta el componente temporal.
La captura de pantalla muestra uno de estos gráficos, que se basa en las llamadas una vez por segundo a /rolldice dentro del periodo de monitorización.

2.6. Personalización de servicios
Puedes establecer umbrales y otras opciones para los servicios utilizando la regla Setup > Services > Service monitoring rules > OpenTelemetry (experimental). Aquí puedes establecer reglas para métricas individuales o para todas las métricas de un servicio. La captura de pantalla de ejemplo muestra la selección del contador para throws con el número 5, como se muestra arriba. Se puede acceder a los nombres de las métricas conocidas a través de la lista o como sugerencias mientras escribes. Puedes introducir métricas que aún no se conocen pero que sabes que aparecerán como texto libre.
Dependiendo del tipo de datos que proporcione el punto de datos de OpenTelemetry, puede ser útil calcular tasas. Esto resulta útil para contadores, como por ejemplo para paquetes de red descartados. Si varias fuentes proporcionan datos asignados al mismo servicio de Checkmk, también puedes especificar si se debe realizar una agregación (por ejemplo, suma o promedio) o si simplemente deben tener prioridad los puntos de datos más recientes, más grandes o más pequeños de un intervalo.

3. Archivos y directorios
| Ruta del archivo | Descripción |
|---|---|
|
Aquí es donde se crean los datos de OpenTelemetry. Se crea un subdirectorio para cada host. Los archivos que se crean allí están en formato JSON. |
|
Archivo de registro del recopilador de OpenTelemetry |
|
Directorio temporal en el que se almacenan los datos agregados del colector para que los evalúe el agente especial. |
|
Directorio temporal donde se almacenan los archivos que necesita la función de sugerencias (entradas de la lista y sugerencias al escribir). |
