Prometheus es una aplicación de software libre que se utiliza para la monitorización y alerta de eventos . [2] Registra métricas en una base de datos de series temporales (lo que permite una alta dimensionalidad ) construida utilizando un modelo de extracción HTTP , con consultas flexibles y alertas en tiempo real. [3] [4] El proyecto está escrito en Go y tiene licencia Apache 2, con el código fuente disponible en GitHub , [5] y es un proyecto graduado de la Cloud Native Computing Foundation , junto con Kubernetes y Envoy . [6]
Prometheus se desarrolló en SoundCloud a partir de 2012, [7] cuando la empresa descubrió que sus métricas y herramientas de monitorización existentes (utilizando StatsD y Graphite ) eran insuficientes para sus necesidades. En concreto, identificaron necesidades que Prometheus estaba diseñado para satisfacer, incluyendo un modelo de datos multidimensional, simplicidad operativa, recopilación de datos escalable y un potente lenguaje de consulta, todo en una única herramienta. [8] El proyecto fue de código abierto desde el principio y empezó a ser utilizado también por los usuarios de Boxever y Docker , a pesar de no haber sido anunciado explícitamente. [8] [9] Prometheus se inspiró en la herramienta de monitorización Borgmon utilizada en Google. [10] [11]
En 2013, Prometheus se introdujo para la monitorización de la producción en SoundCloud. [8] El anuncio público oficial se realizó en enero de 2015. [8]
En mayo de 2016, la Cloud Native Computing Foundation aceptó a Prometheus como su segundo proyecto incubado, después de Kubernetes . La publicación del blog que lo anunció afirmó que la herramienta estaba en uso en muchas empresas, incluidas DigitalOcean , Ericsson , CoreOS , Weaveworks, Red Hat y Google . [12]
Prometheus 1.0 se lanzó en julio de 2016. [13] Se lanzaron versiones posteriores durante 2016 y 2017, lo que llevó a Prometheus 2.0 en noviembre de 2017. [14]
En agosto de 2018, la Cloud Native Computing Foundation anunció que el proyecto Prometheus había finalizado. [6]
Se han celebrado diversas conferencias centradas en Prometeo.
Una plataforma de monitoreo típica con Prometheus se compone de múltiples herramientas: [ cita requerida ]
Los datos de Prometheus se almacenan en forma de métricas, y cada métrica tiene un nombre que se utiliza para hacer referencia a ella y realizar consultas. Cada métrica se puede desglosar mediante una cantidad arbitraria de pares clave=valor (etiquetas). Las etiquetas pueden incluir información sobre la fuente de datos (de qué servidor provienen los datos) y otra información de desglose específica de la aplicación, como el código de estado HTTP (para métricas relacionadas con respuestas HTTP), el método de consulta (GET versus POST), el punto final, etc. La capacidad de especificar una lista arbitraria de etiquetas y realizar consultas basadas en ellas en tiempo real es la razón por la que el modelo de datos de Prometheus se denomina multidimensional. [16] [8] [9]
Prometheus almacena datos localmente en el disco, lo que ayuda a un rápido almacenamiento de datos y consultas rápidas. [8] Existe la capacidad de almacenar métricas en almacenamiento remoto. [17]
Prometheus recopila datos en forma de series temporales . Las series temporales se construyen a través de un modelo de extracción: el servidor Prometheus consulta una lista de fuentes de datos (a veces llamadas exportadores) a una frecuencia de sondeo específica. Cada una de las fuentes de datos proporciona los valores actuales de las métricas para esa fuente de datos en el punto final consultado por Prometheus. Luego, el servidor Prometheus agrega datos de todas las fuentes de datos. [8] Prometheus tiene una serie de mecanismos para descubrir automáticamente los recursos que se deben usar como fuentes de datos. [18]
Prometheus ofrece su propio lenguaje de consulta PromQL (Prometheus Query Language) que permite a los usuarios seleccionar y agregar datos. PromQL está específicamente ajustado para trabajar en convención con una base de datos de series temporales y por lo tanto proporciona funcionalidades de consulta relacionadas con el tiempo. Algunos ejemplos incluyen la función rate(), el vector instantáneo y el vector de rango que pueden proporcionar muchas muestras para cada serie temporal consultada. [19] Prometheus tiene cuatro tipos de métricas claramente definidos alrededor de los cuales giran los componentes de PromQL . Los cuatro tipos son: [20]
La configuración de las alertas se puede especificar en Prometheus, que especifica una condición que debe mantenerse durante una duración específica para que se active una alerta. Cuando se activan las alertas, se reenvían al servicio Alertmanager. Alertmanager puede incluir lógica para silenciar las alertas y también para reenviarlas al correo electrónico, Slack o servicios de notificación como PagerDuty . [21] Algunos otros sistemas de mensajería como Microsoft Teams [22] podrían configurarse utilizando el receptor de webhook de Alertmanager como un mecanismo para integraciones externas. [23] También se pueden utilizar las alertas de Prometheus para recibir alertas directamente en dispositivos Android incluso sin el requisito de ninguna configuración de destino en Alert Manager. [24]
Prometheus no está pensado como un panel completo. Aunque se puede utilizar para graficar consultas específicas, no es un panel completo y necesita conectarse con Grafana para generar paneles; esto se ha citado como una desventaja debido a la complejidad adicional de configuración. [25]
Prometheus favorece la monitorización de caja blanca. Se anima a las aplicaciones a publicar (exportar) métricas internas que Prometheus recopilará periódicamente. [26] Hay algunos exportadores y agentes para varias aplicaciones que proporcionan métricas. [27] Prometheus admite algunos protocolos de monitorización y administración para permitir la interoperabilidad para la transición: Graphite , StatsD, SNMP , JMX y CollectD.
Prometheus se centra en la disponibilidad de la plataforma y las operaciones básicas. [28] Las métricas suelen almacenarse durante unas semanas. Para el almacenamiento a largo plazo, las métricas se pueden transmitir a un almacenamiento remoto. [17]
Existe un esfuerzo por promover el formato de exposición de Prometheus en un estándar conocido como OpenMetrics. [29] Algunos productos adoptaron el formato: la suite TICK de InfluxData, [30] InfluxDB , Google Cloud Platform , [31] y DataDog. [32]
Prometheus se utilizó por primera vez internamente en SoundCloud, donde se desarrolló, para monitorear sus sistemas. [8] La Cloud Native Computing Foundation tiene varios estudios de casos de otras empresas que utilizan Prometheus. Entre ellas se incluyen el servicio de alojamiento digital DigitalOcean , [33] el festival digital DreamHack , [34] y el servicio de migración de correo electrónico y contactos ShuttleCloud. [35] Por otra parte, Pandora Radio ha mencionado el uso de Prometheus para monitorear su flujo de datos. [36]
GitLab proporciona una guía de integración de Prometheus para exportar métricas de GitLab a Prometheus [37] y está activada de forma predeterminada desde la versión 9.0 [38]
Borgmon sigue siendo una función interna de Google, la idea de tratar los datos de series temporales como una fuente de datos para generar alertas ahora es accesible para todos a través de herramientas de código abierto como Prometheus...
Me uní a SoundCloud en 2012, procedente de Google... todavía no teníamos ninguna herramienta de monitoreo que funcionara con este tipo de entorno dinámico. Extrañábamos un poco la forma en que Google realizaba el monitoreo para su propio programador de clúster interno y eso nos inspiró mucho y finalmente decidimos crear nuestra propia solución de código abierto.
{{cite book}}
: Mantenimiento de CS1: falta la ubicación del editor ( enlace ){{cite book}}
: Mantenimiento de CS1: falta la ubicación del editor ( enlace ){{cite book}}
: Mantenimiento de CS1: falta la ubicación del editor ( enlace )