![]() |
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 los valores medibles y computables relativos a host y servicios, que Checkmk almacena internamente en las llamadas Bases de Datos Round-Robin (RRD). Estas métricas son procesadas por el sistema de gráficos integrado y visualizadas en la interfaz web de Checkmk en muchos lugares, por ejemplo como Perf-o-metros en la lista de servicios o como gráficos que puedes visualizar desde la lista de servicios utilizando el icono de gráficos. La interfaz para visualizar las métricas se basa en HTML5 y es idéntica en las ediciones comerciales y en Checkmk edición Raw. Consulta el artículo Graficación para obtener todos los detalles al respecto.
Paralelamente a los gráficos integrados en Checkmk, también puedes conectarte a bases de datos de métricas externas y enviar las métricas a InfluxDB o Graphite. Dado que el envío lo realiza el Checkmk Micro Core (CMC), esta función sólo 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. A partir de su V2.0, InfluxDB proporciona una nueva API unificada -la API InfluxDB v2- que puede utilizarse para escribir datos métricos en la base de datos, entre otras funciones. Checkmk utiliza la API InfluxDB v2 y te ofrece la posibilidad no sólo de enviar las métricas de 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 enviar los datos métricos y, por otro, Checkmk está preparado para futuras ampliaciones.
Importante: La configuración descrita en este capítulo sólo se aplica a la conexión de un InfluxDB V2.0 (o posterior), ya que la API de InfluxDB v2 sólo está disponible a partir de esta versión. Si utilizas un InfluxDB <= V1.8, entonces configúralo 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 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 es 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 InfluxDB. El puerto por defecto 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 GUI de InfluxDB. |
Cubos |
InfluxDB almacena los datos de la serie temporal en contenedores, llamados cubos. En particular, se define un periodo de retención para cada cubo. 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 de InfluxDB v2. InfluxDB utiliza tokens de API para autorizar las solicitudes a través de la API. Un token de API pertenece a un usuario concreto e identifica los permisos de InfluxDB dentro de la organización del usuario. Los tokens se crean a través de la GUI de InfluxDB, bien con acceso total de lectura y escritura a todos los recursos dentro de una organización(Token de acceso total) o con derechos de acceso seleccionados a cubos concretos dentro de una organización(Token de lectura/escritura). Un token puede copiarse en el portapapeles, para facilitar su pegado posterior durante la configuración de Checkmk. El token utilizado para conectarse al servidor Checkmk debe tener, por supuesto, 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 sólo dos operaciones sencillas.
2.2. Conexión de Checkmk a InfluxDB
Abre el Menú de configuración y activa el Modomostrar más, porque sólo así se mostrará el elemento de menú Setup > Exporter > InfluxDB connections. Selecciónalo para mostrar 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 métrica, no se enviará ningún dato.
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 sites conectados al site actual, como en el caso de una monitorización distribuida, puedes restringir la conexión a sites específicos en Site restriction. Para ello, mueve primero la entrada All sites a la columna de la izquierda y, a continuación, mueve los sites que deben recibir métricas de la columna de la izquierda a la de la derecha Selected. Los sites que no recibirán métricas permanecerán en la columna de la izquierda.
Luego continuamos en la siguiente caja con la opción InfluxDB Connection properties:

Aquí introduce el primer conjunto de valores de los 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 al ver 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á activada o desactivada. En la segunda columna puedes ver si ya existe 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 métrica. Esta regla se denomina Send metrics to InfluxDB. Los iconos de reglas son botones y proporcionan un acceso directo a la creación de reglas. Para una conexión con una regla, haz clic para abrir la página de resumen del conjunto de reglas, que resalta qué regla tiene o tendría efecto para la conexión. Para una conexión sin reglas, hacer clic te lleva directamente a la página de creación de reglas.
En el capítulo siguiente describiremos en detalle lo que se puede especificar en esta regla.
2.3. Selección de la información métrica
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 puede encontrar en Setup > Services > Service monitoring rules, se puede acceder más rápidamente con la búsqueda en el Menú de configuración, y más rápidamente haciendo clic en la lista de conexiones:

En la caja 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. Utiliza Organization para decidir qué usuarios reciben los datos, y Bucket para decidir cuánto tiempo se conservan las métricas. No es posible hacer una selección múltiple, es decir, no puedes enviar las métricas a varios buckets para que las utilicen, por ejemplo, distintas organizaciones.
A continuación, selecciona los datos de las métricas que se enviarán desde Checkmk al servidor InfluxDB.Metrics of service ya está seleccionado por defecto y habilita el envío de métricas. Si marcas la casilla Service state, se enviará el estado del servicio como métrica propia.
Después de activar Additional values per metric, puedes añadir una serie de metadatos a las métricas con fines de visualización, por ejemplo State of service y Thresholds. Ten en cuenta que Unit sólo funciona actualmente para las métricas de los checks activos si éstos lo admiten. La razón es que sólo los checks activos tienen la opción de suministrar la unidad y la CMC no tiene acceso a otras.
En el último menú de selección, Tags to use, se añaden a las métricas metadatos como tags del host o labels, que se utilizan principalmente para filtrar y se han optimizado para este fin. Las Host name y Service name seleccionadas por defecto son entradas obligatorias que no se pueden deseleccionar.
En InfluxDB, los Additional values per metric se almacenan como campos y los Tags to use como tags.
Por último, activa cambios para crear la conexión y crear la(s) regla(s). En caso de problemas con la transmisión de métricas, consulta más adelante la información sobre el diagnóstico de errores.
2.4. Visualización de métricas en InfluxDB
Una vez que las métricas de Checkmk han llegado al servidor InfluxDB, se pueden visualizar en la GUI de InfluxDB. Como ejemplo, la siguiente imagen muestra el gráfico de la métrica total_used
, que muestra la cantidad de memoria utilizada:

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

Graphite también es un conocido SGBD de series temporales de código abierto para almacenar, recuperar, compartir y visualizar métricas. Graphite consta del daemon Carbon, que espera los datos y los almacena en una base de datos, desde donde se procesan y se muestran en forma de gráficos mediante la aplicación web Graphite.
Puedes utilizar Checkmk para enviar las métricas en el protocolo de texto plano al daemon Carbon de Graphite, que espera los datos de este protocolo en el puerto 2003. En el protocolo de texto plano, un registro se estructura de forma muy sencilla en el formato <metricpath> <value> <timestamp>
, donde <metricpath>
es un identificador único separado por periodicidades.
A diferencia de la conexión a InfluxDB, por defecto todos los datos métricos se envían en cuanto se habilita una conexión a Graphite. Si no quieres esto, debes seleccionar las métricas por regla antes de habilitar la conexión, y luego habilitar tanto las reglas como la conexión juntas.
3.1. Seleccionar la información métrica
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í mostramos la configuración para las métricas de servicio. A continuación, configura las métricas de host de la misma manera.
Puedes utilizar 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 host y servicios en la caja Conditions. Puesto que sin una regla restrictiva se enviarán todos los datos, se recomienda crear primero una regla que desactive el envío globalmente, desmarcando todas las cajas de verificación que se muestran en la captura de pantalla anterior. A continuación, crea una regla específica con la información métrica deseada para los host y servicios cuyas métricas deban enviarse al servidor de Graphite. Coloca la regla específica en secuencia antes de la regla global:

myhost
3.2. Conexión de 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 detalles obvios del servidor Graphite (el nombre y el número del puerto para el protocolo de texto plano Carbon), también puedes utilizar Optional variable prefix para configurar un prefijo que se añadirá a cada nombre del host, por ejemplo, para imponer nombres únicos. Checkmk establece la ruta métrica para el protocolo de texto plano en <host>.<service>.<metric>
.
Activar cambios para las reglas y la conexión completa la configuración para Graphite.
3.3. Visualización de métricas en Graphite
En la GUI 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 GUI de InfluxDB:

4. Diagnóstico de errores
Si las métricas no llegan donde esperabas, puedes encontrar la información de diagnóstico de tu site en el archivo ~/var/log/cmc.log
, el archivo de registro de Checkmk Micro Core.
El siguiente ejemplo muestra los mensajes si el cubo configurado en Checkmk no existe en el servidor 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 connection
El siguiente ejemplo muestra los mensajes recibidos cuando falla una 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 connection
El Checkmk Micro Core sigue intentando conectarse por sí solo en estas situaciones.
Importante: Por motivos de rendimiento, las métricas que se generan durante un tiempo en el que no hay conexión con el sistema de destino no se guardan en caché, sino que se pierden (o sólo están disponibles en las RRD de Checkmk).
Nota: Si los mensajes de registro no son lo suficientemente significativos para ti, puedes cambiar los valores por defecto del nivel de registro en Setup > General > Global Settings > Monitoring Core > Logging of the core. Aquí puedes encontrar entradas para el registro de InfluxDB (InfluxDB processing) y para Graphite (Carbon connections).