Llegamos a ustedes gracias a:



Noticias

Novedades en el monitoreo de Prometheus para Docker y Kubernetes

[09/11/2017] Prometheus, un sistema de monitoreo de código abierto para contenedores estilo Docker que se ejecutan en arquitecturas de nube, formalmente ha lanzado una versión 2.0 con importantes cambios arquitectónicos para mejorar su desempeño.

Entre los cambios que han llegado desde el lanzamiento de la versión 1.6 este año:

  • Un formato completamente nuevo de almacenamiento para los datos acumulados por Prometheus.
  • Una nueva forma para que Prometheus maneje la "obsolescencia, es decir, los problemas que se producen cuando los datos reportados por Prometheus no coinciden con el estado actual del clúster.
  • Un método para hacer copias de seguridad eficientes de las instantáneas de toda la base de datos.

La mayoría de los cambios no forzarían a los usuarios experimentados de Prometheus a reestructurar sus ambientes. Las nuevas características están diseñadas para funcionar imperceptiblemente, sin alterar significativamente el flujo de trabajo, aunque hay algunos cambios importantes (documentados aquí).

En esencia, Prometheus es una base de datos de series de tiempo, un sistema para recolectar estadísticas sobre el funcionamiento de los contenedores y almacenarlas de forma tal que sean indexadas por marcas de tiempo. Debido a que los datos de series de tiempo llegan a alta velocidad y de muchas fuentes, es difícil agregarlos correctamente. Escribir los datos en el disco se convierte en un importante cuello de botella.

Prometheus 2.0 resuelve esto particionando los datos por intervalos de tiempo, en lugar de hacerlo por origen. El resultado es un uso mucho menor del CPU y del disco, una latencia más manejable para las consultas, y un mejor mecanismo para hacerse cargo de los datos que ya no son necesarios.

Una vez más, la gran mayoría de las implementaciones de Prometheus no necesitará hacer nada para aprovechar estas mejoras, más que desplegar Prometheus 2.0.

Otro problema que los usuarios de Prometheus han observado es que el sistema tiene problemas para manejar los datos obsoletos. Por ejemplo, los usuarios a veces son bombardeados con alertas sobre la caída de un servicio, incluso después de que el servicio ya ha vuelto. Otro problema es que si un recurso desaparece del monitoreo y luego vuelve a aparecer dentro de un cierto lapso, puede terminar siendo contados dos veces y producir estadísticas engañosas.

Prometheus 2.0 resuelve esto con reglas más explícitas para el manejo de eventos provenientes de fuentes que han quedado obsoletas. La lógica para manejar esto es sorprendentemente compleja (ver esta presentación para mayor detalle), pero el usuario final no tiene que lidiar con la gran mayoría de los detalles.

También, el nuevo motor de almacenamiento en Prometheus 2.0 permite tomar instantáneas eficientes y específicas de un momento dado de la base de datos. Realizar una instantánea es tan simple como utilizar un terminal de API específico de Prometheus.

De acuerdo con el desarrollador de Prometheus, Fabian Reinartz, esas instantáneas son pequeñas -un pequeño porcentaje del tamaño del total de la base de datos- y pueden copiarse en algún lugar para su custodia. "En caso de que falle el disco u ocurran otros escenarios similares, se pueden inicializar los nuevos servidores de Prometheus con la copia de seguridad de la instantánea con una pérdida mínima de datos, afirmó Reinartz.

En la página oficial del proyecto Prometheus se pueden descargar binarios precompilados e imágenes de Docker. En GitHub se puede encontrar el código fuente del proyecto y todos sus subproyectos relacionados.