Las bases de datos de series temporales (TSDBs) han explotado en popularidad en los últimos años, y también lo ha hecho Kubernetes. Para supervisar Kubernetes, puedes utilizar Prometheus, la popular TSDB. ¿Por qué es tan popular esta herramienta, y por qué se está convirtiendo en sinónimo de Kubernetes por asociación?
También te preguntarás qué métricas monitoriza esta herramienta en una infraestructura tan vasta y compleja como la de Kubernetes.
Prometheus: Una visión general
Prometheus es una herramienta de código abierto para la monitorización y alerta de sistemas basados en métricas. Registra y procesa cualquier dato de serie temporal exclusivamente numérico. También tiene un modelo de datos multidimensional. Prometheus llama a su objetivo y extrae o «raspa» las métricas de estos objetivos. Para ello, envía peticiones HTTP a sus puntos finales de métrica. A continuación, las almacena en una base de datos de series temporales.
Los objetivos pueden ser las aplicaciones instrumentadas de su empresa o aplicaciones de terceros. Esta herramienta también le ofrece un lenguaje de consulta flexible para aprovechar su modelo de datos multidimensional. También proporciona métricas detalladas y procesables para ayudarle a analizar el rendimiento de sus aplicaciones. También puede recopilar millones de métricas por segundo, por lo que es perfectamente adecuada para sus complejas cargas de trabajo.
¿Qué son los datos de series temporales?
Los datos de series temporales son un conjunto de puntos de datos asociados a marcas de tiempo. Esto significa que se recogen en intervalos de tiempo regulares. A su vez, permiten realizar un seguimiento de los cambios en el tiempo, en milisegundos, días y años. Registra todos y cada uno de los cambios del sistema, pero no sólo incluye el tiempo como métrica. En cambio, el tiempo es un componente fundamental que le ayuda a analizar los datos. La información procesable derivada también le permite medir y analizar el cambio.
Ahora, hablemos de por qué es importante supervisar su entorno Kubernetes.
¿Por qué utilizar Prometheus para la supervisión de Kubernetes?
Kubernetes es un sistema complejo y dinámico con un entorno de producción muy ocupado, por lo que necesita estrategias y herramientas de monitorización. También es necesario elegir herramientas con capacidades avanzadas. Ahí es donde entra Prometheus. Es una aplicación construida para la monitorización de entornos nativos de la nube con grandes cargas de trabajo.
Comprueba estas 5 razones por las que Prometheus se adapta a la monitorización de Kubernetes como un guante.
1. Descubrimiento de servicios
Dado que Prometheus tiene un modelo de extracción, raspa sistemáticamente sus objetivos. De este modo, sus aplicaciones no tienen que preocuparse por emitir datos. Sus servidores también disponen de varios métodos que autodescubren los objetivos a raspar. Además, puede configurar algunos servidores de Prometheus para que filtren y hagan coincidir los metadatos de los contenedores.
2. Modelo de datos multidimensional
Del mismo modo que Kubernetes utiliza etiquetas para organizar los metadatos de la infraestructura, Prometheus utiliza pares clave-valor. Eso significa que puede recopilar y analizar los datos de series temporales de Kubernetes con precisión.
3. Componentes modulares y altamente disponibles
Un servicio componible se encarga de las alertas, la visualización gráfica, la recopilación de métricas, etc. Cada uno de estos servicios ayuda a soportar la redundancia y la fragmentación. De este modo, te aseguras de recibir siempre las alertas adecuadas.
4. Formato accesible
Prometheus tiene una forma sencilla de exponer sus métricas. También es autoexplicativa, por lo que puede leerla usted mismo. Las métricas pueden publicarse a través de un transporte HTTP estándar, y puede utilizar su navegador web para verificar si las métricas están correctamente expuestas.
5. Prometheus es gratuito
Es completamente gratuito, por lo que no sólo tiene un «nivel gratuito». Eso significa que puede beneficiarse de este potente activo para mejorar su negocio, sin muchas preocupaciones.
Básicos de la monitorización de Kubernetes con Prometheus
Vamos a resumir el funcionamiento de Prometheus.
En primer lugar, Prometheus descubre los objetivos a los que debe recurrir mediante Kubernetes Service Discovery. A continuación, envía una solicitud HTTP -un scrape- de acuerdo con la configuración definida en el archivo de despliegue. La respuesta se almacena y se divide en el almacenamiento, que es una base de datos personalizada en el servidor. Este almacenamiento también contiene las métricas de la propia solicitud de scrape. Ahora, es necesario exponer y configurar adecuadamente estos datos.
Prometheus también recoge las métricas de la aplicación y las relacionadas con los servicios de Kubernetes, el estado de la orquestación y los nodos. A continuación, un exportador de nodos expone las métricas relacionadas con el host, como el uso de la CPU, la memoria, el espacio en disco, la red y el ancho de banda. A continuación, kube-state-metrics expone las métricas a nivel de orquestación y clúster, como las métricas de los pods, los despliegues, etc. Por último, el exportador incrustado de cAdvisor puede exponer las métricas de cgroups.
En este punto, puede acceder a los datos recopilados mediante PromQL, que también puede configurar para activar alertas. También te sugiero que exportes las métricas recogidas a interfaces gráficas como Grafana. A su vez, eso puede tirar de las métricas de múltiples servidores para mostrar tableros y paneles. El AlertManager configura las pasarelas para entregar y gestionar las notificaciones de alerta y la agrupación.
Veamos ahora las métricas clave que debe supervisar para obtener información sobre su infraestructura de Kubernetes.
Vigile estas 5 métricas clave de Kubernetes con Prometheus
Como hemos establecido, la monitorización de su entorno Kubernetes es importante, pero podría desperdiciarse si no la utiliza de forma eficiente. Por eso he elaborado una lista de las 5 principales métricas que debe supervisar en su entorno K8s. Echemos un vistazo.
1. Vigilar las métricas del clúster de Kubernetes
Es importante tener una visión de alto nivel de su clúster y su estado. Eso le permite hacer un seguimiento de los pods, nodos y contenedores en ejecución. El seguimiento de las métricas del clúster también le ayuda a entender si los pods se están lanzando, manteniendo y programando correctamente. También puede descubrir problemas superficiales con nodos o pods, y buscar cuellos de botella. También obtendrá una representación clara de la carga de trabajo desplegada. Algunas métricas importantes del clúster que te aconsejo que mires son el uso de la memoria, el uso del disco, el uso de la CPU y la presión de E/S de la red.
2. Supervisar las métricas de los contenedores/vainas de Kubernetes
Siempre recomiendo monitorizar la asignación de recursos de tus pods porque puede afectar directamente al rendimiento de tu aplicación. También es necesario estar al tanto de la disponibilidad y la falta de disponibilidad de los pods, dado que muchos pods no disponibles indican sondas de preparación mal configuradas. Vigile también el número de pods deseados y actuales. Esto se debe a que una gran diferencia entre ambos indica cuellos de botella y pods que fallan. Por último, debería examinar el número de pods sub-aprovisionados y sobre-aprovisionados. Las métricas de contenedores de Kubernetes también le ayudan a rastrear la actividad de reinicio de los contenedores para facilitar la resolución de problemas.