Checkmk
to checkmk.com
Important

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

1.1. 1.1. Antecedentes y motivación

Puede que te estés preguntando por qué integrar Prometheus en Checkmk, por lo que nos gustaría hacer una observación importante en este punto: nuestra integración de Prometheus está dirigida a todos nuestros usuarios que ya utilizan Prometheus. Al integrar Prometheus en Checkmk, podemos cerrar la brecha que se ha abierto aquí para que no tengas que comprobar continuamente dos sistemas de monitorización.

Esto te permite correlacionar los datos de los dos sistemas, acelerar cualquier análisis de errores y, al mismo tiempo, facilitar la comunicación entre los usuarios de Checkmk y Prometheus, de modo que Checkmk sigue siendo tu "cristal único".

Por último, de nuevo el contexto

Como beneficio secundario más agradable de esta integración, es probable que tus métricas de Prometheus reciban automáticamente un contexto significativo gracias a Checkmk. Por ejemplo, mientras Prometheus te muestra correctamente la cantidad de memoria principal utilizada, no tienes que dar ningún paso manual adicional en Checkmk para averiguar qué parte del total de memoria disponible es esa. Por banal que pueda ser este ejemplo, muestra en qué puntos Checkmk facilita la monitorización, incluso en algunos de los detalles más pequeños.

1.2. Exportador o PromQL

La integración de los exportadores más importantes para Prometheus se realiza a través de un agente especial. Están disponibles los siguientes exportadores para Prometheus:

Si no admitimos el exportador que necesitas, los usuarios experimentados de Prometheus también tienen la opción de enviar consultas autodefinidas a Prometheus directamente a través de Checkmk. Esto se realiza utilizando el lenguaje de consultas propio de Prometheus , PromQL.

2. Configurar la integración

2.1. Crear un host

Como el concepto de host en Prometheus sencillamente no existe, crea primero un lugar que reúna las métricas deseadas. Este host constituye el punto central de contacto para el agente especial, y éste distribuye posteriormente los datos entregados a los hosts correctos en Checkmk. Para ello, crea un nuevo host utilizando Setup > Hosts > Hosts > Add host.

prometheus hostname

Si el nombre del host especificado no puede ser resuelto por el servidor Checkmk, introduce la dirección IP con la que se puede acceder al servidor Prometheus.

Realiza todos los demás ajustes para tu entorno y confirma tu selección con Save & view folder.

2.2. Crear una regla para Prometheus

Para que Checkmk pueda encontrar métricas de Prometheus, primero debes configurar el agente especial utilizando el conjunto de reglas Prometheus. Puedes encontrarlo en Setup > Agents > VM, cloud, container. Hay varias opciones para personalizar la conexión del frontend web de tu servidor Prometheus, independientemente del exportador que quieras utilizar.

  • URL server address: Especifica aquí la URL de tu servidor Prometheus, incluyendo todos los puertos necesarios. No incluyas aquí el protocolo, ya que se puede seleccionar más adelante.

  • Authentication: Si es necesario un inicio de sesión, introduce aquí los datos de acceso.

  • Protocol: Tras la instalación, el frontend web se proporciona a través de HTTP. Si has asegurado el acceso con HTTPS, cambia aquí el protocolo en consecuencia.

Puedes ver los valores por defecto en la siguiente captura de pantalla:

prometheus connection details

Integración mediante el Exportador de Nodos

Si, por ejemplo, ahora quieres integrar los componentes de hardware de un supuesto Scrape Targets de Prometheus, utiliza el Exportador de nodos. Selecciona Add new Scrape Target, y en el menú desplegable que se abre, selecciona Node Exporter:

prometheus ruleset exporter

Aquí puedes seleccionar qué hardware o qué instancias del sistema operativo debe consultar el Exportador de Nodos. Siempre tienes la opción de deseleccionar la información si no quieres recuperarla. Los servicios creados de esta forma utilizan los mismos check plugin que se utilizan para otros host Linux. Esto significa que su comportamiento es idéntico al de los ya conocidos, por lo que sin necesidad de adaptarte a algo nuevo puedes configurar rápidamente umbrales o trabajar con gráficos.

Normalmente, el agente intentará asignar automáticamente los datos a los hosts en Checkmk, y lo mismo hará con el host en Checkmk que obtiene los datos. Sin embargo, si en los datos del servidor Prometheus no están presentes ni la dirección IP, ni el FQDN, ni localhost, utiliza la opción Explicitly map Node Exporter host para especificar qué host de los datos del servidor Prometheus debe asignarse al host Prometheus en Checkmk.

Integración mediante cAdvisor

El exportador cAdvisor permite la monitorización de entornos Docker y devuelve métricas.

A través del menú Entity level used to create Checkmk piggyback hosts puedes determinar si los datos de Prometheus deben recogerse de forma agregada y lista, y cómo hacerlo. Puedes elegir entre las tres opciones siguientes:

  • Container - Display the information on container level

  • Pod - Display the information for pod level

  • Both - Display the information for both, pod and container, levels

Selecciona Both o Container, y define también el nombre con el que se crearán los host para tus contenedores. Para el nombre, tienes a tu disposición las tres opciones siguientes. La opción Short es la predeterminada:

  • Short - Use the first 12 characters of the docker container ID

  • Long - Use the full docker container ID

  • Name - Use the name of the container

prometheus cadvisor names

Ten en cuenta que tu selección aquí afecta a la creación y eliminación automática de hosts según tu configuración dinámica de hosts.

Con Monitor namespaces matching tienes la posibilidad de limitar el número de objetos monitorizados. Entonces se ignorarán todos los namespace que no estén cubiertos por las expresiones regulares.

Integración mediante PromQL

Como ya se ha mencionado, con la ayuda del agente especial también es posible enviar solicitudes a tus servidores Prometheus a través de PromQL. Selecciona Service creation using PromQL queries > Add new Service. Utiliza el campo Service name para determinar cómo debe llamarse el nuevo servicio en Checkmk.

A continuación, selecciona Add new PromQL query y utiliza el campo Metric label para especificar el nombre de la métrica que se va a importar en Checkmk. Ahora introduce tu consulta en el campo PromQL query. Es importante que esta consulta sólo devuelva un único valor.

prometheus ruleset promql

En este ejemplo, se consulta a Prometheus el número de procesos en ejecución y bloqueados. En Checkmk, estos procesos y las dos métricas -Running y Blocked- se combinan en un servicio llamado Processes.

También puedes asignar umbrales a estas métricas. Para ello, activa Metric levels y luego elige entre Lower levels o Upper levels. Ten en cuenta que éstos siempre especifican números de coma flotante, pero, por supuesto, también se refieren a métricas que sólo devuelven números enteros.

Asignar una regla al host Prometheus

Por último, asigna explícitamente esta regla al host que acabas de crear y confírmalo con Save.

prometheus ruleset explicit host

2.3. Descubrimiento de servicios

Ahora que has configurado el agente especial, es el momento de ejecutar un descubrimiento de servicios en el host Prometheus.

prometheus discovery

3. Configuración dinámica del host

3.1. Configuración general

La monitorización de clústeres Kubernetes es probablemente una de las tareas más habituales que realiza Prometheus. Para garantizar la integración de los contenedores, a veces de muy corta duración, que se orquestan mediante Kubernetes y se monitorizan con Prometheus -también en Checkmk sin gran esfuerzo-, las ediciones comerciales ofrecen la configuración de un host dinámico. Los datos de los contenedores individuales se envían como datos piggyback a Checkmk.

Ahora crea una nueva conexión utilizando Setup > Hosts > Hosts > Dynamic host management > Add connection, selecciona Piggyback data como tipo de conector, y utiliza Add new element para definir las condiciones en las que deben crearse nuevos host dinámicamente.

Considera si es necesario para tu entorno volver a eliminar dinámicamente hosts cuando no lleguen más datos a Checkmk a través del mecanismo piggyback. Configura la opción Delete vanished hosts en consecuencia.

3.2. Característica especial en las interacciones con cAdvisor

Los contenedores suelen recibir un nuevo ID cuando se reinician. En Checkmk, las métricas del host con el ID antiguo no se transfieren automáticamente al nuevo ID. En la mayoría de los casos, esto no tendría ningún sentido. Sin embargo, en el caso de los contenedores, esto puede ser muy útil, como se ve en el ejemplo anterior.

Si los contenedores sólo se reinician, probablemente no quieras perder su historial. Para conseguirlo, no crees los contenedores con sus ID, sino con sus nombres con la opción Name - Use the name of the container de la regla Prometheus.

De este modo, con la opción Delete vanished hosts en la configuración dinámica del host, podrás seguir eliminando los contenedores que ya no existan, sin tener que temer que se pierda también su historial, sino que éste continuará -mediante el uso del mismo nombre del contenedor- aunque en realidad sea un contenedor distinto el que utilice el mismo nombre.

En esta página