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
Las métricas son valores medibles y calculables relacionados con los hosts y los servicios, y Checkmk las almacena internamente en las llamadas bases de datos Round-Robin (RRD).
Estas métricas son procesadas por el sistema de gráficos integrado y se visualizan en la interfaz web de Checkmk en muchos lugares, por ejemplo, como Perf-O-Meters en la lista de servicios o como gráficos que puedes mostrar desde la lista de servicios usando el icono de gráfico «
».
La interfaz para visualizar las métricas se basa en HTML5 y es idéntica en las ediciones comerciales y en Checkmk Community.
Consulta el artículo sobre gráficos para obtener todos los detalles sobre este tema.
Además de los gráficos integrados en Checkmk, puedes conectarte a bases de datos de métricas externas y enviar las métricas a InfluxDB o Graphite.
Dado que el reenvío lo realiza el Checkmk Micro Core (CMC), esta función solo está disponible en las ediciones comerciales.
En este artículo aprenderás a configurar el reenvío de métricas a InfluxDB y Graphite en Checkmk.
2. Envío de métricas a InfluxDB

InfluxDB es un sistema de gestión de bases de datos (SGBD) de código abierto para series temporales, y actualmente es la solución más popular en este segmento. InfluxDB ofrece una API unificada con la API InfluxDB v2, que se puede utilizar para escribir datos de métricas en la base de datos, entre otras funciones. Checkmk utiliza la API InfluxDB v2 y te ofrece la posibilidad no solo de enviar las métricas desde Checkmk a InfluxDB, sino también de almacenarlas adecuadamente en la estructura existente de InfluxDB. Al utilizar la API, por un lado se simplifica la configuración para el envío de los datos de métricas y, por otro, Checkmk queda preparado para futuras ampliaciones.
La configuración descrita en este capítulo solo se aplica a la conexión de un InfluxDB con la API de InfluxDB v2. Checkmk no es compatible actualmente con la API de InfluxDB v3. Si utilizas un InfluxDB <= V1.8, configúralo tal y como se describe en el capítulo sobre la conexión con Graphite, ya que InfluxDB es compatible con el protocolo Carbon de Graphite hasta la versión V1.8. |
2.1. Recopilación de información
Antes de empezar con la configuración en Checkmk, debes obtener la siguiente información sobre el sistema de destino InfluxDB que quieres conectar a Checkmk:
| Parámetro | Descripción |
|---|---|
Nombre del host |
Nombre (o dirección IP) del servidor InfluxDB. Introducir el nombre DNS es especialmente importante si la conexión está cifrada mediante HTTPS, ya que casi nunca se emiten certificados para direcciones IP. |
Número de puerto |
Número del puerto TCP a través del cual se puede acceder al servidor de InfluxDB.
El puerto predeterminado es |
Protocolo |
|
Organización |
En InfluxDB, la organización es el espacio de trabajo para varios usuarios. La organización inicial se solicita durante la configuración de InfluxDB. Se pueden crear organizaciones adicionales manualmente a través de la interfaz gráfica de usuario de InfluxDB. |
Buckets |
InfluxDB almacena datos de series temporales en contenedores, llamados buckets
.
En concreto, se define un periodo de retención para cada bucket.
InfluxDB elimina automáticamente todos los puntos de datos más antiguos que este periodo. |
Token |
La comunicación entre Checkmk e InfluxDB se realiza a través de la API v2 de InfluxDB. InfluxDB utiliza tokens de API para autorizar las solicitudes a través de la API. Un token de API pertenece a un usuario específico e identifica los permisos de InfluxDB dentro de la organización del usuario. Los tokens se crean a través de la interfaz gráfica de usuario de InfluxDB, ya sea con acceso completo de lectura y escritura a todos los recursos dentro de una organización (token de acceso total) o con derechos de acceso seleccionados a buckets específicos dentro de una organización (token de lectura/escritura). Un token se puede copiar al portapapeles, lo que facilita pegarlo más tarde durante la configuración de Checkmk. El token utilizado para conectarse al servidor de Checkmk debe, por supuesto, tener permisos de lectura y escritura para el bucket que se está configurando en Checkmk. |
Para más detalles, consulta la documentación de InfluxDB.
Con esta información a mano, la configuración en Checkmk se realiza con solo dos sencillos pasos.
2.2. Conectar Checkmk a InfluxDB
Abre el menú «Setup» y activa el modo «Show more», ya que solo así se mostrará la opción «Setup > Exporter > InfluxDB connections». Selecciona esta opción para ver la lista de conexiones existentes a InfluxDB. Como probablemente aún no hayas configurado nada aquí, esta lista estará vacía.
Una conexión es un requisito previo para enviar los datos. Sin embargo, sin la regla para seleccionar la información de métricas, no se enviarán datos.
Así que primero crea una nueva conexión con
Add connection:

En General properties, especifica el ID interno y el título de la conexión, como de costumbre.
Si hay otros sitios conectados al sitio actual, como ocurre con una monitorización distribuida, puedes restringir la conexión a sitios específicos en Site restriction. Para ello, primero mueve la entrada All sites a la columna de la izquierda y, a continuación, mueve los sitios que deben recibir métricas de la columna de la izquierda a la de la derecha Selected. Los sitios que no recibirán métricas permanecerán entonces en la columna de la izquierda.
A continuación, seguimos en el siguiente cuadro con InfluxDB Connection properties:

Aquí introduce el primer conjunto de valores de parámetros que recopilaste en la sección anterior.
Guarda la conexión con «Save» y volverás a la lista de conexiones:

En la lista de conexiones, la columna «Enabled» muestra información importante sobre el estado de la conexión.
No te sorprendas si ves tres entradas en la lista de la captura de pantalla anterior:
Para poder ver todos los símbolos en acción, hemos añadido dos conexiones más a la lista.
En la primera columna de «Enabled» puedes ver si la conexión está habilitada (
) o deshabilitada (
).
En la segunda columna puedes ver si ya hay una regla para la conexión (
) o no (
).
No se enviarán datos a través de una conexión hasta que se haya asociado a una regla que seleccione la información de métricas.
Esta regla se llama Send metrics to InfluxDB.
Los iconos de reglas son botones y ofrecen un acceso directo a la creación de reglas.
Para una conexión con una regla, haz clic en
para abrir la página de resumen del conjunto de reglas, que destaca qué regla se aplica o se aplicaría a la conexión.
Para una conexión sin reglas, al hacer clic en
se accede directamente a la página de creación de reglas.
En el siguiente capítulo describiremos en detalle qué se puede especificar en esta regla.
2.3. Selección de la información de métricas
Con una regla, determinas en Checkmk qué datos se envían al servidor InfluxDB y dónde se almacenan.
El conjunto de reglas «Send metrics to InfluxDB» se encuentra en Setup > Services > Service monitoring rules, se puede acceder a él más rápidamente mediante la búsqueda en el menú «Setup» y, de la forma más rápida, haciendo clic en la lista de conexiones:

En el cuadro «Send metrics to InfluxDB», selecciona primero la conexión creada en la sección anterior y, a continuación, especifica dónde se almacenarán los datos en el servidor InfluxDB. Aquí, introduce el segundo conjunto de información recopilada para el servidor InfluxDB. Utiliza «Organization» para decidir qué usuarios reciben los datos, y «Bucket» para decidir cuánto tiempo se conservan las métricas. No es posible la selección múltiple, es decir, no puedes enviar las métricas a varios buckets para que las utilicen diferentes organizaciones, por ejemplo.
A continuación, selecciona los datos de métricas que se enviarán desde Checkmk al servidor InfluxDB. La opción « Metrics of service» ya está seleccionada por defecto y permite el envío de métricas. Al marcar la casilla «Service state», se enviará el estado del servicio como una métrica propia.
Después de habilitar «Additional values per metric», puedes añadir varios metadatos a las métricas para su visualización, por ejemplo, el «State of service» y el «Thresholds». Ten en cuenta que «Unit» actualmente solo funciona para métricas de comprobaciones activas si estas lo admiten. El motivo es que solo las comprobaciones activas tienen la opción de proporcionar la unidad y el CMC no tiene acceso a las demás.
En el último menú de selección, «Tags to use», se añaden a las métricas metadatos como etiquetas de host o labels, que se usan principalmente para filtrar y se han optimizado para este fin. Los campos «Host name» y «Service name», seleccionados por defecto, son entradas obligatorias que no se pueden desmarcar.
En InfluxDB, los «Additional values per metric» se almacenan como campos y los «Tags to use» se almacenan como etiquetas.
Por último, activa los cambios para crear la conexión y crear la(s) regla(s). Si tienes problemas con la transmisión de métricas, consulta la información sobre el diagnóstico de errores que aparece a continuación.
2.4. Visualización de métricas en InfluxDB
Una vez que las métricas de Checkmk han llegado al servidor de InfluxDB, se pueden visualizar en la interfaz gráfica de InfluxDB.
A modo de ejemplo, la siguiente imagen muestra el gráfico de la métrica «total_used», que indica la cantidad de memoria utilizada:

Nota: Esta métrica se encuentra en Checkmk, en el servicio «Memory», bajo la métrica denominada «Total used memory».
3. Envío de métricas a Graphite

Graphite es también un conocido SGBD de series temporales de código abierto para almacenar, recuperar, compartir y visualizar métricas.
Graphite consta del demonio Carbon, que espera los datos y los almacena en una base de datos, desde donde se procesan y se muestran como gráficos mediante la aplicación web de Graphite.
Puedes usar Checkmk para reenviar las métricas en el protocolo de texto plano al demonio Carbon de Graphite, que espera los datos de este protocolo en el puerto 2003.
En el protocolo de texto plano, un registro tiene una estructura muy sencilla con el formato <metricpath> <value> <timestamp>, donde <metricpath> es un identificador único separado por puntos.
A diferencia de la conexión con InfluxDB, por defecto todos los datos de métricas se envían tan pronto como se habilita la conexión con Graphite. Si no quieres que esto ocurra, debes seleccionar las métricas por regla antes de habilitar la conexión, y luego habilitar tanto las reglas como la conexión a la vez.
3.1. Selección de la información de métricas
En Checkmk, en «Setup > Services > Service monitoring rules», encontrarás los dos conjuntos de reglas «Send host metrics to Graphite» y «Send service metrics to Graphite». La configuración se realiza de la misma manera para las métricas de host y de servicio. Aquí te mostramos la configuración para las métricas de servicio. A continuación, configura las métricas de host de la misma manera.
Puedes usar la regla «Send service metrics to Graphite» para seleccionar los valores que se enviarán con las métricas:

En segundo lugar, puedes restringir el envío a determinados hosts y servicios en el cuadro «Conditions». Dado que sin una regla restrictiva se enviarán todos los datos, se recomienda crear primero una regla que desactive el envío global desmarcando todas las casillas que se muestran en la captura de pantalla anterior. A continuación, crea una regla específica con la información de métricas deseada para los hosts y servicios cuyas métricas deban enviarse al servidor Graphite. Coloca la regla específica antes de la regla global:

myhost
3.2. Conectar Checkmk con Graphite
Configura la conexión con el servidor Graphite en Setup > General > Global Settings > Monitoring Core > Send metrics to Graphite. Haz clic allí en «Add new Graphite connection»:

Además de los datos obvios del servidor Graphite (el nombre y el número de puerto para el protocolo de texto plano Carbon), también puedes usar Optional variable prefix para configurar un prefijo que se añadirá a cada nombre de host, por ejemplo, para garantizar nombres únicos.
Checkmk establece la ruta de métricas para el protocolo de texto plano en <host>.<service>.<metric>.
Un «activate changes» para las reglas y la conexión completa la configuración de Graphite.
3.3. Visualización de métricas en Graphite
En la interfaz gráfica de Graphite también puedes ver las métricas recibidas de Checkmk.
La siguiente imagen muestra el gráfico de la métrica total_used que ya hemos mostrado anteriormente como ejemplo en la interfaz de InfluxDB:

4. Diagnóstico de errores
Si las métricas no llegan donde esperas, puedes encontrar la información de diagnóstico de tu sitio en el archivo ~/var/log/cmc.log, el archivo de registro de Checkmk Micro Core.
El siguiente ejemplo muestra los mensajes que aparecen si el bucket configurado en Checkmk no existe en el servidor de InfluxDB:
2022-01-10 11:41:35 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully initiated connection
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully connected
2022-01-10 11:41:36 [3] [influxdb https://myinfluxdb.example.com:8086] POST [404] {"code": "not found", "message": "bucket \"my_bucket\" not found"}
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Closing connectionEl siguiente ejemplo muestra los mensajes que se reciben cuando falla la conexión con el servidor Graphite:
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Successfully initiated connection
2021-12-15 17:33:33 [4] [carbon 10.0.0.5:2003] Connection failed: Connection refused
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Closing connectionEl Checkmk Micro Core sigue intentando conectarse por sí mismo en estas situaciones.
Importante: Por motivos de rendimiento, las métricas generadas durante un periodo en el que no hay conexión con el sistema de destino no se almacenan en caché, sino que se pierden (o solo están disponibles en los RRD de Checkmk).
Nota: Si los mensajes de registro no te parecen lo suficientemente claros, puedes cambiar los valores predeterminados del nivel de registro en Setup > General > Global Settings > Monitoring Core > Logging of the core. Aquí encontrarás entradas para el registro de InfluxDB (InfluxDB processing) y para Graphite (Carbon connections).
