Introducción a Prometeo y Grafana

Prometheus es un sistema de monitoreo de código abierto basado en métricas. Recopila datos de servicios y hosts mediante el envío de solicitudes HTTP en puntos finales de métricas. Luego almacena los resultados en una base de datos de series de tiempo y los pone a disposición para análisis y alertas.

¿Por qué monitorear?

  • Habilita alertas cuando las cosas van mal, preferiblemente antes de que salgan mal. Para que alguien pueda echarle un vistazo.
  • Proporciona información para permitir el análisis, la depuración y la resolución del problema.
  • Le permite ver tendencias/cambios a lo largo del tiempo. Por ejemplo, cuántas sesiones activas en un momento dado. Esto ayuda en las decisiones de diseño y la planificación de la capacidad.

El monitoreo generalmente se relaciona con eventos. Un evento podría incluir la recepción de una solicitud HTTP, el envío de una respuesta, la lectura del disco, el inicio de sesión de un usuario. El monitoreo de un sistema podría incluir la creación de perfiles, el registro, el seguimiento, las métricas, las alertas y la visualización.

Supervisión de caja negra frente a caja blanca

El monitoreo se divide en dos categorías principales:

Monitoreo de caja negra

En el monitoreo de Blackbox, el monitoreo es a nivel de aplicación o de host, ya que se observan desde el exterior. Esto puede ser bastante limitante.

Monitoreo de caja blanca

El monitoreo de Whitebox significa monitorear los aspectos internos de un servicio. Expondría datos sobre el estado y el rendimiento de los componentes internos.

Las cuatro señales doradas

Según Googlesi solo puede medir cuatro métricas de su sistema orientado al usuario, concéntrese en las siguientes cuatro, llamadas las Cuatro señales doradas:

#1. Latencia

El tiempo que lleva atender una solicitud, exitosa o fallida. Es importante realizar un seguimiento no solo de las solicitudes exitosas sino también de las fallidas.

#2. Tráfico

Una medida de cuánta demanda se está colocando en su sistema. Para un servicio web, esto suele ser solicitudes HTTP por segundo.

#3. errores

La tasa de solicitudes que fallan.

#4. Saturación

Qué tan completo es su servicio. El aumento de la latencia suele ser un indicador importante de la saturación. Muchos sistemas degradan su rendimiento mucho antes de alcanzar el 100 % de utilización.

Tipos de métricas de Prometheus

Las métricas de Prometheus son de cuatro tipos principales:

#1. Encimera

El valor de un contador siempre aumentará. Nunca puede disminuir, pero puede restablecerse a cero. Entonces, si falla un raspado, solo significa que se perdió un punto de datos. El aumento acumulativo estaría disponible en la próxima lectura. Ejemplos:

  • Número total de solicitudes HTTP recibidas
  • El número de excepciones.

#2. Medir

Un indicador es una instantánea en cualquier momento dado. Puede tanto aumentar como disminuir. Si falla una búsqueda de datos, pierde una muestra; la siguiente búsqueda podría mostrar un valor diferente: ejemplos de espacio en disco, uso de memoria.

#3. Histograma

Un histograma muestra las observaciones y las cuenta en cubos configurables. Se utilizan para cosas como la duración de la solicitud o el tamaño de la respuesta. Por ejemplo, podría medir la duración de la solicitud para una solicitud HTTP específica. El histograma tendrá un conjunto de cubos, digamos 1 ms, 10 ms y 25 ms. En lugar de almacenar cada duración para cada solicitud, Prometheus almacenará la frecuencia de las solicitudes que caen en un depósito en particular.

#4. Resumen

Similar a las observaciones de muestras de histogramas, normalmente solicita duraciones o tamaños de respuesta. Proporcionará un recuento total de observaciones y una suma de todos los valores observados, lo que le permitirá calcular el promedio de los valores observados. Por ejemplo, en un minuto, tuvo tres solicitudes que tardaron 2,3,4 segundos. La suma sería 9 y la cuenta sería 3. La latencia sería de 3 segundos.

Componentes del ecosistema Prometheus

El servidor Prometeo

Recopila métricas, las almacena y las pone a disposición para consultas, envía alertas basadas en las métricas recopiladas.

Raspado

Prometeo es un sistema basado en extracción. Para obtener métricas, Prometheus envía una solicitud HTTP llamada scrape. Envía raspaduras a los objetivos en función de su configuración.

Cada objetivo (definido estáticamente o descubierto dinámicamente) se raspa a un intervalo regular (intervalo de raspado). Cada extracción lee el punto final HTTP /metrics para obtener el estado actual de las métricas del cliente y conserva los valores en la base de datos de series temporales de Prometheus.

Existen más bases de datos de series temporales para soluciones de monitoreo que quizás desee explorar.

Bibliotecas cliente

Para monitorear un servicio, debe agregar instrumentación a su código. Hay bibliotecas de clientes disponibles para todos los lenguajes y tiempos de ejecución populares. Con estas bibliotecas, una vez que agrega algunas líneas de código, su código puede comenzar a emitir métricas. Esto se llama instrumentación directa. Estas bibliotecas le permiten definir métricas internas y también exponerlas a través de un punto final HTTP. Cuando Prometheus extrae el extremo HTTP de las métricas, la biblioteca del cliente envía las métricas al servidor.

Prometheus ofrece bibliotecas de clientes oficiales para Go, Java, Python y Ruby. Prometheus tiene un ecosistema abierto. También hay bibliotecas de cliente creadas por la comunidad disponibles para C, PHP, Node.js, C#/.NET y muchas otras.

Exportadores

Muchas aplicaciones exponen métricas en formato que no es de Prometheus. Para estas y para las aplicaciones que no son de su propiedad o para las que no tiene acceso al código, no puede agregar instrumentación directamente. Por ejemplo, servidor MySQL, Kafka, JMX, HAProxy y NGINX. En estos escenarios, haces uso de exportadores.

Un exportador es una herramienta que implementa junto con la aplicación de la que desea obtener métricas. Un exportador actúa como un proxy entre la aplicación y Prometheus. Recibirá solicitudes del servidor Prometheus, recopilará datos de los registros de acceso, registros de errores de la aplicación, los transformará al formato correcto y finalmente regresará al servidor Prometheus.

Algunos de los exportadores populares son:

  • ventanas – para métricas de servidor de Windows
  • Nodo – para métricas de servidor Linux
  • Caja negra – para métricas de rendimiento de DNS y sitio web
  • JMX – para métricas de aplicaciones basadas en Java

Una vez que se han instrumentado las aplicaciones, o los exportadores están en su lugar, debe decirle a Prometheus dónde están. Esto se puede hacer usando la configuración estática. En el caso de entornos dinámicos, esto no se puede hacer; por lo tanto, se utiliza el descubrimiento de servicios.

alertando

La alerta con Prometheus consta de dos partes:

Las reglas de alerta envían alertas a Alertmanager.

Alertmanager luego administra esas alertas. Envía notificaciones utilizando muchas integraciones listas para usar, como correo electrónico, Slack, Hipchat y PagerDuty. Alertmanager también puede silenciar o agregar para reducir la cantidad de notificaciones.

Aquí está la guía para monitorear el servidor Linux usando Prometheus y Dashboard.

Visualización con paneles

Prometheus tiene varias API con las que las consultas de PromQL pueden producir datos sin procesar para visualizaciones.

Aunque Prometheus incluye un navegador de expresiones que se puede usar para consultas ad-hoc, la mejor herramienta disponible es Grafana. Grafana se integra completamente con Prometheus y puede producir una amplia variedad de tableros.

Deberá configurar Prometheus como fuente de datos para Grafana.

Puede agregar tableros de la siguiente manera:

  • Importación de paneles creados por la comunidad
  • Construyendo tu propio
  • Uso de un tablero predefinido.

Así es como se ve un panel de exportación de nodos predefinido:

Grafana tiene un módulo worldPing que le permite monitorear el sitio y las métricas de rendimiento de DNS en todo el mundo.

Resumen

Prometheus tiene muy pocos requisitos. Puede ser bastante simple de ejecutar, ya que es un solo binario con un archivo de configuración. Puede manejar miles de objetivos e ingerir millones de muestras por segundo. Prometheus está diseñado para rastrear el sistema general, la salud y el comportamiento del sistema.

Grafana es la mejor herramienta disponible para la visualización de métricas y se integra a la perfección con Prometeo.