Grafana y Prometheus para monitoreo de contenedores
INFRAESTRUCTURA, OPERACIONES.Desde su lanzamiento en el 2013, Docker ha crecido en popularidad revolucionando la administración de aplicaciones modernas. Ya no se discuten los motivos por los que se deberían adoptar contenedores, sino que la discusión se centra en cómo enfrentar los desafíos que implica el desarrollo generalizado de contenedores.
Los contenedores agregan velocidad y aumentan el rendimiento dentro del proceso de desarrollo, pero aportan complejidad adicional en el registro de formularios, la orquestación, la seguridad y la visibilidad.
Cada vez más equipos de desarrollo e infraestructura reconocen que el desarrollo con microservicios y plataformas de orquestación como Kubernetes son el futuro para el desarrollo de nuevas aplicaciones o la modernización de aplicaciones existentes.
Es en este punto en el que las soluciones de monitoreo de contenedores como Prometheus y Grafana entran a ser protagonistas y pueden ayudar a resolver retos importantes. En esta entrada de nuestro blog les explicamos uno de los retos principales: darle visibilidad a lo que ocurre en decenas, cientos o miles de contenedores.
Para esto hablaremos de dos prácticas esenciales: almacenar datos en series de tiempo y visualizarlos. Nos enfocamos en dos herramientas muy populares Prometheus para almacenar los datos y Grafana para visualizarlos.
Prometheus: almacenamiento de datos en series de tiempo
Prometheus es una base de series de tiempo y un sistema de monitoreo y alertas. Las series de tiempo almacenan datos ordenados cronológicamente, midiendo variables a lo largo del tiempo y las bases de datos enfocadas a series de tiempo son especialmente eficientes en almacenar y consultar estos datos.
El proyecto tiene una comunidad muy activa de usuarios y desarrolladores. Desde su creación en el año 2012 ha evolucionado a convertirse en un proyecto independiente de código abierto siendo parte de la Cloud Native Computing Foundation desde 2016 como el segundo proyecto alojado, después de Kubernetes.
Características Principales
Modelo de datos multidimensional: con datos de series de tiempo identificados por nombre métrico y claves/ valores pares.
Lenguaje flexible de consultas: permite aprovechar esta multidimensionalidad para consultar los datos de manera simple y flexible
Nodos autónomos de servidor único: debido a la poca confianza en el almacenamiento distribuido, la colección de series de tiempo ocurre a través de un modelo de extracción, por medio de HTTP.
Configuración estática: los objetivos se determinan mediante configuración estática o descubrimiento de servicios.
Arquitectura de Prometheus
Almacena todas las muestras recortadas localmente y ejecuta reglas sobre estos datos para agregar y registrar nuevas series temporales a partir de datos existentes o para generar alertas.
Prometheus elimina las métricas de los trabajos instrumentados, ya sea directamente o a través de un Gateway de inserción intermedia para trabajos de poca duración.
Cuando usar Prometheus
Prometheus funciona bien para grabar cualquier serie temporal puramente numérica. Se ajusta tanto a la supervisión centrada en la máquina como a la supervisión de arquitecturas orientadas a servicios altamente dinámicas.
Para microservicios, es útil en la recopilación y consulta de datos multidimensionales es una fortaleza particular. Prometheus está diseñado para brindar confiabilidad. Es un sistema al que cualquier usuario puede acudir durante una interrupción o incidente y diagnosticar rápidamente los problemas.
Cada servidor Prometheus es independiente sin depender del almacenamiento de red u otros servicios remotos. Esto nos da confianza cuando otras partes de la infraestructura estén rotas dado que no se requiere configurar una amplia infraestructura para usarlo.
Cuándo es mejor no usar Prometheus
Prometheus valora la fiabilidad. Siempre tiene disponible las estadísticas del sistema, incluso cuando hay fallos.
Si se requiere absoluta precisión, como en el caso de la facturación por solicitud, Prometheus no ofrece las mejores opciones ya que los datos recopilados probablemente no sean lo suficientemente detallados y completos.
En estos casos se recomienda la utilización de otro sistema para recopilar y analizar datos para la facturación, y a continuación trabajar con Prometheus para el resto del monitoreo.
Grafana - Visualización de datos
Grafana es la plataforma de análisis para métricas, que le permite consultar, visualizar, alertar y comprender los datos, sin importar dónde estén almacenadas. Le permite crear, explorar y compartir tableros con su equipo. Para la visualización y personalización del tablero de instrumentos, Grafana es la mejor de todas las opciones. Tiene múltiples funciones, es fácil de usar y muy flexible.
La compatibilidad que presenta Grafana es muy recomendada debido al hecho de que trabaja muy bien con soluciones en Cloud y On-Premise. Grafana incluye soporte (a través de plugins) tanto para AWS Cloudwatch como para OpenStack Gnocchi. Si su implementación está completamente basada en la nube e incluye la solución de supervisión (Cloudwatch o Gnocchi), utilice solamente Grafana.
Grafana v.5
El 27 de junio de 2018, se realizó el lanzamiento de Grafana v5.2, con dos nuevas características principales incluidas: alertas de Elasticsearch y compilaciones nativas de Grafana para ARM.
Con esta nueva versión el contenedor acoplable de Grafana ahora es compatible con los secretos de Docker, lo que debería hacerlo más seguro al proporcionar datos confidenciales de configuración a Grafana.
Elasticsearch, creaciones nativas para compilaciones nativas
Grafana v5.2 incluye un datasource Elasticsearch actualizado con soporte para alertas. Alertar el soporte para Elasticsearch ha sido una de las características más solicitadas por nuestra comunidad. Además trae una línea de construcción mejorada con soporte multiplataforma.
Esto permite compilaciones nativas de Grafana para ARMv7 (x32) y ARM64 (x64).
Imagen mejorada de Docker
La imagen acoplable de Grafana agrega compatibilidad con los secretos de Docker, lo que le permite suministrar a Grafana configuración a través de archivos.
Tableros y Paneles
El rango de tiempo modificado y las variables ya no se guardan de manera predeterminada. A partir de Grafana v5.2, un rango de tiempo o variable modificado ya no se guarda de forma predeterminada. Para guardar un intervalo de tiempo o una variable modificados, deberá seleccionarlo activamente cuando guarde un tablero, vea la captura de pantalla. Esto debería permitir que sea más fácil tener valores predeterminados en tiempo y variables en los paneles y hacerlo más explícito cuando realmente desee sobrescribir esas configuraciones.
Importar mejoras del tablero de instrumentos
Grafana v5.2 agrega soporte para especificar una carpeta existente o crear una nueva cuando se importa un panel de control, una característica largamente esperada desde que Grafana v5.0 introdujo soporte para carpetas de tablero y permisos. La página del panel de importación también tiene algunas mejoras generales y ahora debería dejar más claro si una posible importación sobrescribirá o no un panel existente.
Esta versión también agrega algunas mejoras para aquellos usuarios que solo tienen permisos de editor o administrador en ciertas carpetas. Los enlaces a Create Dashboard and Import Dashboard están ahora disponibles en la navegación lateral, en la búsqueda en el tablero y en la página de administración de paneles / carpetas para un usuario que tenga una función de editor en una organización o permiso de edición en al menos una carpeta.
La recomendación para el monitoreo de datos es comenzar con soluciones de visualización como Grafana para facilitar la edición de gráficos y tableros hasta que el administrador esté totalmente familiarizado con en el uso de las plantillas de la consola Prometheus.
Si su organización tiene interés en implementar Monitoreo de Contenedores con Grafana o Prometheus de la mano de expertos, lo invitamos a contactarnos.