Prometheus es una aplicación de software gratuita que se utiliza para monitorear y alertar de eventos . [2] Registra métricas en tiempo real en una base de datos de series de tiempo (que permite una alta dimensionalidad ) construida usando un modelo de extracción HTTP , con consultas flexibles y alertas en tiempo real. [3] [4] El proyecto está escrito en Go y tiene la licencia Apache 2 License, con el código fuente disponible en GitHub , [5] y es un proyecto graduado de Cloud Native Computing Foundation , junto conKubernetes y Envoy. [6]
![]() | |
Versión inicial | 24 de noviembre de 2012 |
---|---|
Lanzamiento estable | v2.27.1 [1] / 18 de mayo de 2021 |
Repositorio | github |
Escrito en | Ir |
Sistema operativo | Multiplataforma |
Tipo | Base de datos de series de tiempo |
Licencia | Licencia Apache 2.0 |
Sitio web | prometeo |
Historia
Prometheus se desarrolló en SoundCloud a partir de 2012, [7] cuando la compañía descubrió que sus métricas y soluciones de monitoreo existentes (usando StatsD y Graphite ) no eran suficientes para sus necesidades. Específicamente, identificaron las necesidades para las que se creó Prometheus, que incluyen: un modelo de datos multidimensional, simplicidad operativa, recopilación de datos escalable y un potente lenguaje de consulta, todo en una sola herramienta. [8] El proyecto fue de código abierto desde el principio y también comenzó a ser utilizado 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 monitoreo que usaba Borgmon en Google. [10] [11]
En 2013, Prometheus se introdujo para el monitoreo de 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ó Prometheus como su segundo proyecto incubado, después de Kubernetes . La publicación del blog que anunciaba esto indicaba que la herramienta estaba en uso en muchas empresas, incluidas Digital Ocean , Ericsson , CoreOS , Weaveworks , Red Hat y Google . [12]
Prometheus 1.0 se lanzó en julio de 2016. [13] Las versiones posteriores se lanzaron 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 se había graduado. [6]
Arquitectura
Una plataforma de monitoreo típica con Prometheus se compone de varias herramientas: [ cita requerida ]
- Varios exportadores que normalmente se ejecutan en el host supervisado para exportar métricas locales.
- Prometheus para centralizar y almacenar las métricas.
- Alertmanager [15] para activar alertas basadas en esas métricas.
- Grafana para producir cuadros de mando.
- PromQL es el lenguaje de consulta utilizado para crear paneles y alertas.
Formato de almacenamiento de datos
Los datos de Prometheus se almacenan en forma de métricas, y cada métrica tiene un nombre que se utiliza para hacer referencia y consultarla. Cada métrica se puede desglosar mediante un número arbitrario 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), método de consulta (GET versus POST), 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 los datos localmente en el disco, lo que ayuda a un rápido almacenamiento de datos y consultas rápidas. [8] Existe la posibilidad de almacenar métricas en almacenamiento remoto. [17]
Recopilación de datos
Prometheus recopila datos en forma de series de tiempo . Las series de tiempo se construyen a través de un modelo de extracción: el servidor de 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 sirve los valores actuales de las métricas para esa fuente de datos en el punto final consultado por Prometheus. El servidor de Prometheus luego agrega datos a través de las fuentes de datos. [8] Prometheus tiene varios mecanismos para descubrir automáticamente los recursos que debería utilizar como fuentes de datos. [18]
PromQL
Prometheus proporciona 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. Los ejemplos incluyen la función rate (), el vector instantáneo y el vector de rango que pueden proporcionar muchas muestras para cada serie de tiempo consultada. [19] Prometheus tiene cuatro tipos de métricas claramente definidas alrededor de las cuales giran los componentes de PromQL. Los cuatro tipos son
- Calibre
- Encimera
- Histograma
- Resumen
Alertas y seguimiento
La configuración de las alertas se puede especificar en Prometheus que especifica una condición que debe mantenerse durante un período específico 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 . [20] Algunos otros sistemas de mensajería como Microsoft Teams [21] podrían configurarse utilizando Alertmanager Webhook Receiver como mecanismo para integraciones externas. Además, las alertas de Prometheus se pueden utilizar para recibir alertas directamente en dispositivos Android, incluso sin necesidad de configurar ningún objetivo en el Administrador de alertas.
Cuadros de mando
Prometheus no está diseñado como una solución de tablero. Aunque se puede utilizar para graficar consultas específicas, no es una solución de panel de control completa y debe conectarse con Grafana para generar paneles de control; esto se ha citado como una desventaja debido a la complejidad adicional de la configuración. [22]
Interoperabilidad
Prometheus favorece el monitoreo de caja blanca. Se anima a las aplicaciones a publicar (exportar) métricas internas para que Prometheus las recopile periódicamente. [23] Algunos exportadores y agentes para diversas aplicaciones están disponibles para proporcionar métricas. [24] Prometheus admite algunos protocolos de supervisió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. [25] Las métricas generalmente se almacenan durante algunas semanas. Para el almacenamiento a largo plazo, las métricas se pueden transmitir a soluciones de almacenamiento remoto. [26]
Estandarización en OpenMetrics
Hay un esfuerzo por promover el formato de exposición de Prometheus en un estándar conocido como OpenMetrics. [27] Algunos productos adoptaron el formato: la suite TICK de InfluxData, [28] InfluxDB, Google Cloud Platform , [29] y DataDog. [30]
Uso
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. Estos incluyen el servicio de alojamiento digital Digital Ocean , [31] festival digital DreamHack, [32] y el servicio de migración de contactos y correo electrónico ShuttleCloud. [33] Por separado, Pandora Radio ha mencionado el uso de Prometheus para monitorear su canal de datos. [34]
GitLab proporciona una guía de integración de Prometheus para exportar métricas de GitLab a Prometheus [35] y está activada de forma predeterminada desde la versión 9.0 [36]
Ver también
- Compruebe MK
- Ganglia (software)
- Zabbix
- Sensu Core
- Comparación de sistemas de monitoreo de red
- Lista de sistemas de gestión de sistemas
Referencias
- ^ Lanzamientos en Github
- ^ "Resumen" . prometheus.io .
- ^ James Turnbull (12 de junio de 2018). Monitoreo con Prometheus . Prensa Turnbull. ISBN 978-0-9888202-8-9.
- ^ "Prometheus: de las métricas a la información. Impulse sus métricas y alertas con una solución de supervisión de código abierto líder" . Consultado el 26 de diciembre de 2018 .
- ^ "Prometeo" . Consultado el 26 de diciembre de 2018 .
- ^ a b Evans, Kristen (9 de agosto de 2018). "Cloud Native Computing Foundation anuncia la graduación de Prometheus" . Consultado el 26 de diciembre de 2018 .
- ^ Brian Brasil (9 de julio de 2018). Prometheus: Up & Running: Infraestructura y supervisión del rendimiento de las aplicaciones . O'Reilly Media. pag. 3. ISBN 978-1-4920-3409-4.
- ^ a b c d e f g h Volz, Julius; Rabenstein, Björn. "Prometheus: Monitoreo en SoundCloud" . SoundCloud .
- ^ a b "Supervisar contenedores Docker con Prometheus" . 5π Consultoría. 26 de enero de 2015.
- ^ Murphy, Niall; Beyer, Betsy; Jones, Chris; Petoff, Jennifer (2016). Ingeniería de confiabilidad del sitio: cómo Google administra los sistemas de producción . O'Reilly Media. ISBN 978-1491929124.
Aunque Borgmon sigue siendo interno de Google, la idea de tratar los datos de series de tiempo como una fuente de datos para generar alertas ahora es accesible para todos a través de herramientas de código abierto como Prometheus ...
- ^ Volz, Julius (4 de septiembre de 2017). "PromCon 2017: Resumen de la conferencia" - a través de YouTube.
Me uní a SoundCloud en 2012 procedente de Google ... todavía no teníamos ninguna herramienta de monitorización que funcionara con este tipo de entorno dinámico. Nos estábamos perdiendo la forma en que Google supervisaba su propio programador de clúster interno y eso nos inspiró mucho y finalmente decidimos crear nuestra propia solución de código abierto.
- ^ "Cloud Native Computing Foundation acepta Prometheus como segundo proyecto alojado" . Base de computación nativa en la nube . 9 de mayo de 2016 . Consultado el 26 de diciembre de 2018 .
- ^ "Prometheus 1.0 ya está aquí" . Base de computación nativa en la nube . 18 de julio de 2016 . Consultado el 26 de diciembre de 2018 .
- ^ "Nuevas funciones de Prometheus 2.0.0" . Percepción robusta. 8 de noviembre de 2017 . Consultado el 26 de diciembre de 2018 .
- ^ https://github.com/prometheus/alertmanager
- ^ "Modelo de datos" . Prometeo . Consultado el 26 de diciembre de 2018 .
- ^ "Integraciones - Prometheus" . prometheus.io .
- ^ "Prometheus: recopila métricas, proporciona alertas y gráficos de interfaz de usuario web" . 18 de marzo de 2017 . Consultado el 26 de diciembre de 2018 .
- ^ "Consultando a Prometeo" . Consultado el 4 de noviembre de 2019 .
- ^ Dubey, Abhishek (25 de marzo de 2018). "Integración de AlertManager con Prometheus" . Consultado el 26 de diciembre de 2018 .
- ^ Danuka, Praneeth (8 de marzo de 2020). "Alerta para aplicaciones nativas de la nube con Prometheus" . Consultado el 18 de octubre de 2020 .
- ^ Ryckbosch, Frederick (28 de julio de 2017). "Monitoreo de Prometheus: pros y contras" . Consultado el 26 de diciembre de 2018 .
- ^ Prometeo. "Instrumentación - Prometheus" . prometheus.io .
- ^ "Exportadores" . prometheus.io .
- ^ Prometeo. "Prometheus - Sistema de monitoreo y base de datos de series de tiempo" . prometheus.io .
- ^ "Integraciones - Prometheus" . prometheus.io .
- ^ "OpenMetrics" . GitHub . 2018-11-13.
- ^ "Telegraf de InfluxData" . 2018-12-25.
- ^ "Anuncio de Stackdriver Kubernetes Monitoring" .
- ^ "DataDogHQ" .
- ^ Evans, Kristen (28 de febrero de 2017). "Perfil de usuario de Prometheus: cómo DigitalOcean utiliza Prometheus" . Base de computación nativa en la nube . Consultado el 26 de diciembre de 2018 .
- ^ Evans, Kristen (24 de agosto de 2016). "Perfil de usuario de Prometheus: seguimiento del festival digital más grande del mundo - DreamHack" . Base de computación nativa en la nube . Consultado el 26 de diciembre de 2018 .
- ^ Evans, Kirsten (17 de mayo de 2017). "Perfil de usuario de Prometheus: ShuttleCloud explica por qué Prometheus es bueno para su pequeña empresa" . Base de computación nativa en la nube . Consultado el 26 de diciembre de 2018 .
- ^ Haidrey, Ace (15 de marzo de 2018). "Apache Airflow en Pandora" . Ingeniería en Pandora . Consultado el 26 de diciembre de 2018 .
- ^ "Métricas de GitLab Prometheus" . Consultado el 26 de diciembre de 2018 .
- ^ "GitLab 9.0 lanzado con subgrupos y tableros de implementación" . GitLab. 2017-03-22.
Otras lecturas
- Russ, McKendrick (15 de diciembre de 2015). Supervisión de Docker: supervise sus contenedores de Docker y sus aplicaciones utilizando varias herramientas nativas y de terceros con la ayuda de esta guía exclusiva. . Birmingham, Reino Unido. ISBN 9781785885501. OCLC 933610431 .
- JOSÉ., HECK (2018). KUBERNETES PARA DESARROLLADORES usa kubernetes para desarrollar, probar e implementar sus aplicaciones con la ayuda de contenedores; use kubernetes para desarrollar . [Sl]: PACKT PUBLISHING. ISBN 978-1788830607. OCLC 1031909876 .
- 1976-, Burns, Brendan (20 de febrero de 2018). Diseño de sistemas distribuidos: patrones y paradigmas para servicios escalables y confiables (Primera ed.). Sebastopol, CA. ISBN 9781491983614. OCLC 1023861580 .CS1 maint: nombres numéricos: lista de autores ( enlace )
- Martin., Helmich (2017). Programación nativa en la nube con Golang Desarrolle aplicaciones web de alto rendimiento basadas en microservicios para la nube con Go . Andrawos, Mina., Snoeck, Jelmer. Birmingham: Packt Publishing. ISBN 9781787127968. OCLC 1020029257 .
- Alok, Shrivastwa (23 de febrero de 2018). Nube híbrida para arquitectos: cree soluciones sólidas de nube híbrida con AWS y OpenStack . Birmingham, Reino Unido. ISBN 9781788627986. OCLC 1028641698 .
- Kaewkasi, Chanwit (2016). Agrupación nativa de Docker con Swarm . ISBN 978-1786469755.