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. Prefacio

CEE Ya hay un artículo aparte sobre la monitorización de Kubernetes que describe cómo configurar la monitorización de Kubernetes y sus distintas variantes. Sin embargo, como OpenShift en general, y su configuración en particular, funcionan de forma un poco diferente, hemos decidido crear un artículo aparte para describir cómo configurar la monitorización de OpenShift y, respectivamente, de los clústeres de Kubernetes que se ejecutan en él. En el resto de este artículo, nos referiremos a estos mismos clústeres —por motivos de legibilidad y simplicidad— como clústeres de OpenShift. La monitorización de clústeres de OpenShift solo es posible con una de las ediciones comerciales de Checkmk.

2. Introducción

Checkmk te ayuda a realizar la monitorización de tus clústeres de OpenShift. A partir de la versión 2.3.0, puedes utilizar cualquiera de nuestras ediciones comerciales para realizar la monitorización de los siguientes objetos:

  • Clústeres

  • Implementaciones

  • Nodos

  • Pods

  • DaemonSets

  • StatefulSet

  • Cronjobs

Para ver una lista completa de todos los check plugins disponibles para la monitorización de Kubernetes, consulta nuestro Catálogo de check plugins.

2.1. Configuración del entorno de monitorización

Dado que los clústeres de OpenShift también pueden sufrir cambios importantes muy rápidamente en cuanto al número y la ubicación de los componentes individuales, te recomendamos crear un site de Checkmk independiente para realizar la monitorización de un entorno de OpenShift. Este se puede conectar al site central como de costumbre mediante el procedimiento de monitorización distribuida.

2.2. El proceso de monitorización de OpenShift en Checkmk

Checkmk realiza la monitorización de tus clústeres de OpenShift de dos maneras:

  • Checkmk obtiene información básica directamente de tu clúster a través de la API de Kubernetes. Esto ya permite recuperar el estado de los nodos y los contenedores. La mayor parte de los metadatos de tus pods y despliegues también se obtienen de esta manera. Sin embargo, para una monitorización completa, todavía falta algo en este punto. Las preguntas sobre, por ejemplo, cuánta carga genera una implementación concreta en la CPU, o cuánta memoria está ocupando actualmente un DaemonSet, no pueden responderse con este método.

  • Dado que Prometheus ya viene instalado por defecto en los clústeres de OpenShift, Checkmk puede consultar precisamente esta instancia de Prometheus dentro de tu entorno OpenShift y prepararte los datos resultantes al estilo habitual de Checkmk. Para una monitorización totalmente completa de tu entorno OpenShift, te recomendamos encarecidamente que configures esta conexión. Además, el uso de los dashboards de Kubernetes solo resulta útil si se dispone de los datos de carga de trabajo adecuados.

3. Creación de los requisitos previos en el clúster

Para poder supervisar el entorno OpenShift en Checkmk, primero crea los requisitos previos en tu clúster.

3.1. Crear un namespace y una cuenta de servicio

En primer lugar, debes configurar un namespace y una cuenta de servicio para Checkmk en tu clúster de OpenShift. La forma más rápida de hacerlo es a través de la CLI de OpenShift (oc, para abreviar).

En el siguiente ejemplo, llamaremos a esta namespace checkmk-monitoring. Si quieres o necesitas elegir un nombre diferente, también tendrás que hacer este cambio al crear la cuenta de servicio.

user@host:~$ oc create namespace checkmk-monitoring
namespace/checkmk-monitoring created
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

La cuenta de servicio, junto con su rol asociado y el denominado RoleBinding, se puede crear especificando nuestro archivo YAML ya preparado y publicado en GitHub. Check su contenido y, a continuación, ejecuta el siguiente comando:

user@host:~$ oc apply -f https://raw.githubusercontent.com/Checkmk/checkmk_kube_agent/checkmk_docs/deploy/kubernetes/checkmk-serviceaccount.yaml
serviceaccount/checkmk created
clusterrole.rbac.authorization.k8s.io/checkmk-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/checkmk-metrics-reader-binding created
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Como alternativa, puedes descargar primero este archivo YAML, personalizarlo según tus necesidades y, a continuación, aplicar oc apply -f a esta copia local del archivo.

3.2. Obtener endpoints de la API, token y certificado

Con la herramienta de línea de comandos oc ahora también puedes leer toda la información de tu clúster, que normalmente tendrás que especificar para configurar el agente especial. Si has cambiado el nombre de la cuenta de servicio o el namespace, debes editar esta información tal y como se describe para los siguientes comandos.

Recuperar el endpoint de la API de Kubernetes

oc muestra el endpoint de la API de Kubernetes con el siguiente comando:

user@host:~$ oc cluster-info
Kubernetes control plane is running at https://api.myopenshift.example.com:6443
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Esta dirección, incluido el puerto especificado, se incluirá más adelante en el campo API server connection > Endpoint de la regla de Kubernetes.

Recupera el endpoint de la API de Prometheus

Obtener la dirección del endpoint de la API de la instancia de Prometheus en tu clúster puede ser más fácil a través de la GUI de OpenShift. Si tienes el rol de administrador, puedes encontrar una lista más o menos larga en Networking > Routes. Aquí también deberías encontrar una ruta que probablemente tenga la palabra Prometheus en su nombre. Esto también depende simplemente de la configuración de tu clúster de OpenShift. En «Location» encontrarás entonces la URL que necesitarás más adelante para el campo «Prometheus API endpoint».

También puedes obtener el FQDN en la línea de comandos con el siguiente comando.

user@host:~$ oc get routes --all-namespaces | grep prometheus
openshift-monitoring    prometheus-k8s   prometheus-k8s-openshift-monitoring.apps.myopenshift.example.com   prometheus-k8s  web  reencrypt/Redirect   None
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Después solo tendrás que añadir el protocolo al principio de la cadena prometheus-k8s-openshift-monitoring.apps.myopenshift.example.com en el campo Prometheus API endpoint dentro de la regla de Kubernetes.

Recuperar el token

Puedes usar el siguiente comando para leer el token, que suele ser el que tendrás que especificar más adelante para el agente especial en Checkmk:

user@host:~$ oc get secret $(oc describe sa checkmk -n checkmk-monitoring | grep 'Tokens' | awk '{ print $2 }') -n checkmk-monitoring -o=jsonpath='{.data.token}' | base64 --decode
eyJhbGciOiJSUzI1NiIsImtpZCI6IkxFbDdZb25t...
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Deja el shell abierto con esta información o copia el token a una ubicación a la que puedas acceder durante la siguiente configuración en Checkmk.

Recuperar el certificado

Puedes usar el siguiente comando para recuperar el certificado que luego tendrás que especificar en «Global settings» en Checkmk.

user@host:~$ oc get secret $(oc describe sa checkmk -n checkmk-monitoring | grep 'Tokens' | awk '{ print $2 }') -n checkmk-monitoring -o=jsonpath='{.data.ca\.crt}' | base64 --decode
Copiar los comandos al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Deja el shell abierto con esta información, o copia el certificado —incluidas las líneas BEGIN CERTIFICATE y END CERTIFICATE— a una ubicación a la que puedas acceder durante la siguiente configuración en Checkmk.

Si la salida aquí está vacía, se aplica el mismo consejo que en la sección anterior «Recuperar el token».

4. Configuración de la monitorización en Checkmk

A continuación, en la GUI de Checkmk, pasamos a configurar el agente especial y una regla para crear automáticamente hosts para tus objetos de Kubernetes. Sin embargo, para configurar el agente especial, primero hay que cumplir algunos requisitos previos:

4.1. Almacenamiento de la contraseña (token) en Checkmk

Lo mejor es guardar la contraseña (token) de la cuenta de servicio en el almacén de contraseñas de Checkmk. Esta es la opción más segura, ya que te permite separar el almacenamiento y el uso de la contraseña de forma organizada. Como alternativa, puedes introducir la contraseña directamente en texto sin formato al crear la regla (ver más abajo).

Para añadir la contraseña al almacén de contraseñas de Checkmk, ve a Setup > General > Passwords > Add password. En nuestro ejemplo, usamos My OpenShift Token como ID y título:

kubernetes password

4.2. Importar el certificado CA de una cuenta de servicio a Checkmk

Para que Checkmk confíe en la cadena de certificados de la cuenta de servicio, tendrás que almacenarla en Checkmk. Copia todo lo que hay aquí —incluidas las líneas que contienen BEGIN CERTIFICATE y END CERTIFICATE— y añade el certificado en el Menú de configuración, en «Setup > General > Global settings > Site management > Trusted certificate authorities for SSL»:

kubernetes ca

4.3. Creación del host piggyback

Crea un nuevo host en Checkmk como de costumbre y asígnale un nombre, por ejemplo, «myopenshiftclusterhost». Tal y como sugieren el título y el nombre del host, este host se utiliza para recopilar los datos piggyback y también para realizar el mapeo de todos los servicios y métricas a nivel de clúster. Dado que este host recibe datos exclusivamente a través del agente especial, en las propiedades del host asegúrate de establecer la opción «IP address family» en «No IP». Confirma toda esta configuración pulsando el botón «Save & view folder».

Example setup for a cluster host with the important 'No IP' setting.

4.4. Configuración de la administración dinámica del host

Para garantizar la separación entre objetos de diferentes clústeres de Kubernetes, suele ser conveniente crear una carpeta por clúster a través de Setup > Hosts > Add folder, en la que la administración dinámica del host pueda crear automáticamente todos los hosts de un clúster. Sin embargo, crear y usar dicha carpeta es opcional.

A continuación, configura una conexión para los datos piggyback entrantes. Para ello, ve a Setup > Hosts > Dynamic host management > Add connection. Primero introduce un título y, a continuación, en «Connection Properties», haz clic en «show more».

El siguiente paso, muy importante, es introducir el host piggyback creado anteriormente en «Restrict source hosts».

A continuación, en «Piggyback creation options», haz clic en «Add new element» y, en «Create hosts in», selecciona la carpeta creada anteriormente.

Puedes dejar los atributos predeterminados en «Host attributes to set» tal y como están. Estos garantizan que Checkmk solo acepte los datos piggyback de los hosts creados automáticamente y no intente hacer ping a estos ni acceder a ellos a través de SNMP, por ejemplo.

En un entorno OpenShift, donde los objetos monitorizables y monitorizados van y vienen continuamente, suele recomendarse habilitar también la opción Automatically delete hosts without piggyback data. Qué hace exactamente esta opción y en qué circunstancias se eliminan realmente los hosts se explica en el capítulo sobre la eliminación automática de hosts del artículo sobre la administración dinámica del host.

Por último, activa la opción «Discover services during creation».

La sección «Connection Properties» de esta nueva conexión podría tener el siguiente aspecto:

Example settings for a dynamic host management.

4.5. Personalización del descubrimiento periódico de servicios

Por defecto, Checkmk realiza un descubrimiento de servicios cada dos horas y muestra el resultado de este descubrimiento en el servicio «Check_MK Discovery». Puedes encontrar esta configuración en el conjunto de reglas «Periodic service discovery». En el contexto de OpenShift, recomendamos crear una regla con la etiqueta «cmk/kubernetes:yes» para todos los hosts. Esto se debe a que cada host que representa objetos de Kubernetes recibe automáticamente esta etiqueta de Checkmk. En este caso, deberías elegir un intervalo más corto que dos horas para el descubrimiento de servicios y activar también la opción «Automatically update service configuration». Los ajustes de la siguiente captura de pantalla son solo ejemplos. Tendrás que decidir qué es lo más adecuado para tus clústeres caso por caso.

An example setup for the periodic service discovery for Kubernetes objects.

Para restringir esta regla a todos los hosts de tu clúster, en «Host labels» (Configuración de reglas) simplemente introduce «cmk/kubernetes:yes» en el campo «Conditions» (Label del host). Sin embargo, si también quieres crear reglas diferentes para distintos clústeres, solo tienes que usar aquí la etiqueta específica del clúster correspondiente. Estas etiquetas siempre tienen el formato «cmk/kubernetes/cluster:mycluster».

Example a restriction to hosts using a cluster-specific label.

4.6. Configuración del agente especial

Ahora que ya se han creado todos los requisitos previos en el clúster y en Checkmk, puedes centrarte en la configuración del agente especial. Puedes acceder a ella a través de Setup > Agents > VM, cloud, container > Kubernetes. Crea una nueva regla con Add rule.

En primer lugar, debes asignar un nombre al clúster que se va a realizar la monitorización. Este nombre se puede especificar libremente según se desee. Se utiliza para asignar un nombre único a todos los objetos que provienen de este clúster específico. Por ejemplo, si introduces aquí mycluster, los nombres de los hosts de todos los pods de este clúster comenzarán posteriormente por pod_mycluster. La siguiente parte del nombre del host será entonces siempre el namespace en el que existe este objeto de Kubernetes. Por ejemplo, el nombre del host de un pod podría ser entonces pod_mycluster_kube-system_svclb-traefik-8bgw7.

En Token, selecciona ahora la entrada creada anteriormente en el almacén de contraseñas de Checkmk.

Sample cluster name and token selection.

En API server connection > Endpoint, Checkmk te pide ahora que introduzcas la URL a través de la cual se puede contactar con tu servidor API de Kubernetes. El puerto solo es necesario si el servicio no se proporciona a través de un host virtual. Aquí, introduce la dirección que determinaste en la sección Obtener el endpoint de la API de Kubernetes.

Si hasta ahora has seguido estas instrucciones paso a paso y has —tal y como se ha descrito anteriormente— depositado el certificado CA de tu clúster en Checkmk, entonces, en «SSL certificate verification», selecciona «Verify the certificate».

Example for specifying the API server connection.

Activa la opción «Enrich with usage data», selecciona «Use data from OpenShift» en el menú siguiente e introduce el «Prometheus API endpoint» que determinaste en la sección «Recuperar el endpoint de la API de Prometheus».

Example of specifying the cluster collector connection.

La lista que aparece en «Collect information about…​» te permite seleccionar qué objetos de tu clúster deben ser objeto de monitorización. Esta lista incluye los objetos más relevantes. Si también decides realizar la monitorización del «Pods of CronJobs», consulta la ayuda en línea de esta opción.

Example list of a selection of Kubernetes objects that are to be monitored.

Las dos selecciones siguientes te permiten acotar aún más los objetos que se van a monitorizar. Si solo te interesan los objetos de determinados espacios de nombres, configúralo en consecuencia en «Monitor namespaces». Aquí puedes introducir espacios de nombres concretos que se vayan a monitorizar o excluir explícitamente espacios de nombres concretos de la monitorización.

La opción «Cluster resource aggregation» te permite designar nodos que no proporcionan recursos para la carga de trabajo de tu clúster. Estos nodos deben excluirse del cálculo de los recursos disponibles. De lo contrario, existe el riesgo de que no se detecten cuellos de botella en la capacidad. Por lo tanto, por defecto excluimos del cálculo los nodos control-plane y infra.

Example configuration for namespaces and resource aggregation.

Como última opción, puedes importar las llamadas anotaciones de Kubernetes. En Checkmk, estas anotaciones se convierten en host labels y, por lo tanto, pueden utilizarse posteriormente como condiciones en las reglas. Utiliza expresiones regulares para especificar qué anotaciones deben importarse. Consulta de nuevo la ayuda en línea detallada en este punto.

Nota: La opción «Import all valid annotations» se incluye aquí solo para completar la información. No recomendamos importar todas las anotaciones de una sola vez, ya que esto puede generar una gran cantidad de etiquetas inútiles en Checkmk.

Importante: En «Conditions > Explicit hosts» debes introducir ahora el host creado anteriormente:

Rules for special agents must always be explicitly set to specific hosts, as seen here.

A continuación, guarda la regla y realiza un descubrimiento de servicios para este host. Los primeros servicios a nivel de clúster aparecerán aquí de inmediato:

Example view of the first service discovery after completing the configuration.

Ahora activa todos los cambios que has realizado y deja que la administración dinámica del host se encargue del trabajo a partir de ahora. Esto generará todos los hosts para tus objetos de Kubernetes en un periodo de tiempo corto.

5. Etiquetas para objetos de Kubernetes

Checkmk genera automáticamente etiquetas para objetos como clústeres, implementaciones o espacios de nombres durante el descubrimiento de servicios. Todas las etiquetas para estos objetos que Checkmk genera automáticamente empiezan por cmk/kubernetes/. Por ejemplo, un pod siempre recibirá una etiqueta del nodo (cmk/kubernetes/node:mynode), una etiqueta que identifica el objeto como un pod (cmk/kubernetes/object:pod) y una etiqueta para el namespace (cmk/kubernetes/namespace:mynamespace). Esto hace que sea muy fácil crear filtros y reglas para todos los objetos del mismo tipo o en el mismo namespace.

6. Dashboards y vistas de tabla

6.1. Dashboards de Kubernetes

CEE Las ediciones comerciales de Checkmk incluyen seis paneles integrados para Kubernetes. Para poder interpretar estos paneles, es necesario tener instalado y configurado nuestro Colector del clúster. Concretamente, estos paneles se llaman:

  • Kubernetes (Vista general)

  • Clúster de Kubernetes

  • DaemonSet de Kubernetes

  • Distribución de Kubernetes

  • Espacio de nombres de Kubernetes

  • StatefulSet de Kubernetes

El punto de entrada es siempre el dashboard de Kubernetes, al que puedes acceder a través de Monitor > Applications > Kubernetes:

Example of the overview dashboard.

En el panel de control de Kubernetes, todos tus clústeres de monitorización aparecen en la parte izquierda. Esta lista de clústeres es también tu punto de entrada para profundizar en los dashboards. Al hacer clic en el nombre de un clúster, accederás al dashboard de Kubernetes Cluster correspondiente al clúster seleccionado. En el dashboard de Kubernetes Cluster, al hacer clic en el nombre correspondiente, accederás a los demás dashboards dependientes del contexto:

Detail of the cluster dashboard with paths to the other dashboards.

6.2. El inventario de HW/SW

La monitorización de OpenShift con Checkmk también admite el inventario de HW/SW. Por ejemplo, en el dashboard del clúster anterior, al hacer clic en el nombre del ID del clúster (aquí: mycluster) accederás al inventario del clúster.

De la misma manera, es decir, en los otros dashboards a través de las cajas con los nombres de identificación de los objetos, se puede mostrar el inventario de HW/SW de cada objeto respectivo. El siguiente ejemplo muestra el inventario de HW/SW de un pod:

kubernetes monitoring hw sw inventory

7. Checking the installation

En la GUI de Checkmk puedes comprobar que la instalación y la configuración se han realizado correctamente.

Los servicios más importantes aquí son, sin duda, Kubernetes API y Cluster collector. Estos deben estar presentes en el host del clúster que has creado y también deben mostrar información específica y real.

The most important services to check for a correct installation.

En Summary, el servicio Kubernetes API debería mostrar normalmente Live, Ready, y si el Colector del clúster está configurado, lo ideal es que muestre Successfully queried usage data from Prometheus.

En el dashboard de Kubernetes, puedes determinar desde el principio si el Colector del clúster está en funcionamiento y recopilando datos en un clúster. Si está configurado correctamente, el dashboard de Kubernetes debería tener un aspecto similar a este:

Kubernetes dashboard with data for CPU and memory resources.

Si ahora haces clic en el nombre del clúster aquí, accederás al dashboard «Kubernetes Cluster» del clúster correspondiente. Aquí, las tres cajas «Primary datasource», «Cluster collector» y «API health» deberían estar en verde y mostrar «OK».

A correctly-functioning cluster monitoring.

8. Eliminación de componentes de monitorización de OpenShift

8.1. Eliminar la cuenta de servicio

Si has usado nuestro archivo YAML predeterminado para crear la cuenta de servicio, también puedes eliminarla de la siguiente manera:

user@host:~$ oc delete -f https://raw.githubusercontent.com/Checkmk/checkmk_kube_agent/checkmk_docs/deploy/kubernetes/checkmk-serviceaccount.yaml
serviceaccount "checkmk" deleted
clusterrole.rbac.authorization.k8s.io "checkmk-metrics-reader" deleted
clusterrolebinding.rbac.authorization.k8s.io "checkmk-metrics-reader-binding" deleted
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

8.2. Eliminar el namespace, cuando sea necesario

user@host:~$ oc delete namespace checkmk-monitoring
namespace "checkmk-monitoring" deleted
Copiar comando(s) al portapapeles
¡Comandos copiados correctamente al portapapeles!
¡Se ha denegado el acceso de escritura al portapapeles!

Last modified: Mon, 15 Dec 2025 20:38:15 GMT via commit 3f5d3b342
En esta página