(DEM) Monitorización avanzada del CaaS de Plataforma con Prometheus y Grafana

Header Onesait Platform Revolution

El equipo DEM (iniciales de cada uno de los integrantes), compuesto por Diego, Eduardo y Miguel, y mentorizado por Miguel, participó con el reto «Monitorización avanzada del CaaS de Plataforma con Prometheus y Grafana«

Piezas y objetivos del reto

Para este reto se ha hecho uso de Prometheus, Prometheus es una herramienta Open Source, bajo licencia Apache 2, de monitorización y gestión de eventos con alertas. Prometheus usa una base de datos Time Series para la recolección de métricas en tiempo real, y para la representación de las mismas usa Grafana como herramienta de Dashboard.

Uno de los puntos fuertes en la elección de Prometheus es el de ser la herramienta de métricas elegida e integrada en otros productos como GitLab u Openshift.

Para el reto se van a seguir los siguientes puntos:

  • Provisionamiento de VM en Azure e instalación del software base (docker, docker-compose, etc…)
  • Instalación con contenedores Docker del CaaS (Rancher) para la orquestación y gestión de servicios de la Plataforma
  • Instalación de la Onesait Platform CE versión 1.1.0-ce-rc1 https://demoteam.onesaitplatform.com/controlpanel ó https://onesaitplatform-test-interno.northeurope.cloudapp.azure.com/controlpanel/login partiendo de las imágenes de la Plataforma disponibles en Docker Hub https://hub.docker.com/u/onesaitplatform
  • Instalación de Prometheus y Grafana, también con contenedores Docker y orquestados por el mismo CaaS
  • Instalación de cAdvisor para recolectar métricas de contenedores en ejecución
  • Instalación de node-exporter para recolectar métricas del IaaS
  • Instalación de rancher-exporter para la recolección de métricas del CaaS donde se despliega la Plataforma
  • Uso del cliente de Python para comunicar con Prometheus y con Plataforma
  • Uso de Ontologías Time Series para volcar las métricas de Prometheus
  • Uso de un Dashboard para representar las métricas

Como idea futura se incluye el poder hacer analítica de los datos de monitorización para optimizar el uso de la infraestructura. O incluso el escalado dinámico de infraestructura y servicios de la Plataforma, al detectar que el consumo de recursos (cpu, memoria) de un host es elevado se puede hacer uso del Alert Manager de Prometheus y los webhooks de Rancher para escalar el número de contenedores de un servicio de plataforma, e incluso el número de máquinas virtuales donde despliega.

Desde el punto de vista estricto de Operaciones este reto permite poder estimar con una granularidad muy fina la volumetría de infraestructura para Plataforma (métricas proporcionadas por node-exporter) y desde el punto de vista estricto de Plataforma permite que la plataforma gane en elasticidad, permitiendo el escalado dinámico de sus servicios (métricas proporcionadas por rancher-exporter para el CaaS y cAdvisor para los contenedores en ejecución)

Componentes de la plataforma usados:

  • Ontologías Time Series: Para la recolección de las métricas de Prometheus por intervalos de tiempo
  • API Manager: Para disponibilizar la Ontología tipo Time Serie para explotarla en otra herramienta de visualización (Grafana/Kibana)
  • IoT Broker: Para la inserción de las métricas mediante el protocolo SSAP de la OP
  • Digital Client: Cliente Python de Plataforma que realiza la recolección de métricas de Prometheus via API Rest y su inserción en una ontología mediante el protocolo SSAP / REST.
  • Dashboards: Para la visualización e interpretación de los datos de la Ontología / Métricas.
Módulos de plataforma empleados en el reto

El reto

Una vez desplegados los servicios de Prometheus pueden verse en el stack del mismo nombre

Prometheus desplegado en Plataforma

Si accedemos al Grafana que se despliega junto a los servicios de Prometheus podemos acceder, por ejemplo, a un dashboard que nos muestra con detalle las métricas de los contenedores desplegados

Dashboards de métricas de contenedores

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *