Skip to main content

Prometheus

prometheus

Prometheus es un conjunto de herramientas open source para monitorización y alertas de sistemas con un ecosistema activo. Es el único sistema soportado directamente por Kubernetes y el estándar de facto en todo el ecosistema cloud-native. Es un proyecto open source graduado por la CNCF y escrito en Go.

  • Almacena y recolecta datos de métricas en series temporales, es decir, marcadas con la fecha y hora en que fueron registradas.
  • Puede usar etiquetas incluso para el almacenamiento de las métricas.

Github Prometheus

Funcionalidades

  • Modelo de datos multidimensional con datos de métricas en series identificadas por nombre para clave/valor.
  • Utiliza el lenguaje PromQL que es más potente que SQL para monitorización.
  • Nodos independientes y autónomos sin utilización de un sistema distribuido.
  • Las métricas son recolectadas vía HTTP. Prometheus va hasta la aplicación y recolecta en el endpoint especificado.
  • La entrega de métricas puede utilizar un gateway intermediario.
  • El destino puede ser descubierto vía service discovery o configuración estática.
  • Soporta varios dashboards del mercado.
  • Configuración de alertas.

Métricas

Son mediciones numéricas de datos relacionados con elementos de tu software o de la infraestructura. Normalmente estos datos numéricos se relacionan por una línea temporal.

Serie temporal significa que los cambios se registran a lo largo del tiempo.

Métricas del SistemaMétricas de Negocio
LatenciaNúmero de usuarios accediendo a la aplicación
Cantidad de PeticionesNúmero de facturas emitidas
Consumo de recursosCompras de un determinado producto
APIs más accedidasFacturación diaria
Cantidad de errores

Por ejemplo, la aplicación puede volverse lenta cuando el número de solicitudes es alto. Si tienes la métrica de conteo de solicitudes, podrás identificar el motivo y aumentar el número de servidores para manejar la carga.

Métrica no es log

MétricasLog
Datos numéricosDatos textuales
GráficoMensajes de error
AgregacionesInformación
RendimientoBuscables

Prometheus vs InfluxDB

Estas son las dos principales herramientas de monitorización hoy. ¿Cuál es la diferencia y cuándo usar cada una?

Lo que ambos hacen igual:

  • Compactación de datos
  • Datos multidimensionales (Prometheus usa labels e Influx tags)
  • Sistema de alertas (Alertmanager en Prometheus y Kapacitor en InfluxDB)
  • Lenguaje de consulta para interactuar con las métricas y analizarlas
  • Ambos tienen integración con muchas otras herramientas. Prometheus un poco más, pero la gran mayoría de lo que necesitamos está en ambos. Lo que no tiene integración puede resolverse con webhook en ambos.
  • Comunidad de desarrolladores grande. Prometheus un poco más.

Diferencia entre ellos:

  • InfluxDB tiende a ser usado como base de datos de series temporales y Prometheus tiende a ser más usado para propósito de monitorización.
  • InfluxDB tiene un lenguaje propio FluxQL y Prometheus tiene PromQL.
    • PromQL es más fácil y desarrollado para fines de monitorización, alertas y gráficos. El software de base de datos Prometheus asume automáticamente muchas cosas sobre nuestra consulta y no necesitamos proporcionar todos los pasos.
    • FluxQL requiere el paso de más parámetros pues InfluxDB es una base de datos de series temporales de uso general, mientras que Prometheus fue desarrollado especialmente para monitorización.
  • InfluxDB soporta tipos float64, int64, bool y string y Prometheus float64 y strings.
  • InfluxDB graba datos con registro de fecha y hora hasta en nanosegundos y Prometheus en milisegundos.
  • InfluxDB no extrae métricas periódicamente del sistema destino, espera que una aplicación envíe los datos a él. Prometheus puede extraer las métricas del sistema objetivo.
  • InfluxDB tiene problemas con alto consumo de memoria y CPU en relación a Prometheus.
  • InfluxDB tiene como objetivo guardar todo tipo de datos por mucho tiempo mientras que Prometheus está destinado a guardar datos por defecto solo 15 días, pero puede ser modificado.
  • La configuración en InfluxDB se hace por llamadas de API mientras que en Prometheus es por archivo YAML. En este caso la configuración con Prometheus es más fácil incluso. En InfluxDB es difícil garantizar que las alteraciones sean idempotentes porque puedes invocar el script de configuración varias veces.

InfluxDB es una herramienta más potente y para gran volumen de datos y de uso general. Por otro lado, Prometheus tiene una instalación más simple y una comunidad mayor.

Cualquiera de las herramientas te atenderá bien. Pero ten en mente que si solo quieres monitorizar algo, ¿para qué usar un cañón para matar un mosquito?

¿Cuándo no usar Prometheus?

La compactación de datos antiguos por Prometheus hace que la precisión no sea del 100%. Calcula promedios y reemplaza los datos para disminuir el uso de disco. Esto puede ser configurado, pero el consumo de disco aumentará mucho.

Si necesitas 100% de precisión, Prometheus no es una buena elección, pues los datos recolectados probablemente no serán tan confiables. En ese caso sería mejor usar algún otro sistema para recolectar y analizar los datos que necesitan 100% de precisión y Prometheus para el resto de la monitorización.