Prometheus — бесплатное программное приложение, используемое для мониторинга событий и оповещения . [2] Он записывает метрики в базу данных временных рядов (с высокой размерностью ), построенную с использованием модели извлечения HTTP , с гибкими запросами и оповещениями в реальном времени. [3] [4] Проект написан на Go и лицензируется по лицензии Apache 2, исходный код доступен на GitHub , [5] и является дипломным проектом Cloud Native Computing Foundation вместе с Kubernetes и Envoy . [6]
Prometheus разрабатывался в SoundCloud начиная с 2012 года [7] , когда компания обнаружила, что существующие метрики и инструменты мониторинга (с использованием StatsD и Graphite ) недостаточны для их нужд. В частности, они определили потребности, для удовлетворения которых был создан Prometheus, включая: многомерную модель данных, простоту эксплуатации, масштабируемый сбор данных и мощный язык запросов — и все это в одном инструменте. [8] Проект с самого начала был открытым исходным кодом и начал использоваться пользователями Boxever и Docker , несмотря на то, что об этом не было объявлено явно. [8] [9] На создание Prometheus вдохновил инструмент мониторинга Borgmon, используемый в Google. [10] [11]
К 2013 году Prometheus был представлен для мониторинга производства в SoundCloud. [8] Официальное публичное заявление было сделано в январе 2015 года. [8]
В мае 2016 года Cloud Native Computing Foundation принял Prometheus в качестве своего второго инкубируемого проекта после Kubernetes . В сообщении блога, в котором сообщалось об этом, говорилось, что этот инструмент использовался во многих компаниях, включая DigitalOcean , Ericsson , CoreOS , Weaveworks, Red Hat и Google . [12]
Prometheus 1.0 был выпущен в июле 2016 года. [13] Последующие версии были выпущены в 2016 и 2017 годах, что привело к выпуску Prometheus 2.0 в ноябре 2017 года. [14]
В августе 2018 года Фонд Cloud Native Computing Foundation объявил о завершении проекта Prometheus. [6]
Было проведено множество конференций, посвященных Прометею.
Типичная платформа мониторинга с Prometheus состоит из нескольких инструментов :
Данные Prometheus хранятся в виде метрик, причем каждая метрика имеет имя, которое используется для ссылки и запроса. Каждую метрику можно детализировать с помощью произвольного количества пар ключ=значение (меток). Метки могут включать информацию об источнике данных (с какого сервера поступают данные) и другую информацию о разбивке приложения, такую как код состояния HTTP (для показателей, связанных с ответами HTTP), метод запроса (GET или POST), конечную точку и т. д. Возможность задавать произвольный список меток и выполнять запросы на его основе в режиме реального времени — вот почему модель данных Prometheus называется многомерной. [16] [8] [9]
Prometheus хранит данные локально на диске, что способствует быстрому хранению данных и быстрому выполнению запросов. [8] Есть возможность хранить метрики в удаленном хранилище. [17]
Prometheus собирает данные в виде временных рядов . Временные ряды строятся с помощью модели извлечения: сервер Prometheus запрашивает список источников данных (иногда называемых экспортерами) с определенной частотой опроса. Каждый из источников данных предоставляет текущие значения метрик для этого источника данных в конечной точке, запрашиваемой Prometheus. Затем сервер Prometheus объединяет данные из источников данных. [8] В Prometheus имеется ряд механизмов для автоматического обнаружения ресурсов, которые следует использовать в качестве источников данных. [18]
Prometheus предоставляет собственный язык запросов PromQL (язык запросов Prometheus), который позволяет пользователям выбирать и агрегировать данные. PromQL специально настроен для работы с базой данных временных рядов и, следовательно, предоставляет функции запросов, связанных со временем. Примеры включают функциюrate(), мгновенный вектор и вектор диапазона, которые могут предоставить множество выборок для каждого запрошенного временного ряда. [19] В Prometheus есть четыре четко определенных типа метрик, вокруг которых вращаются компоненты PromQL. Четыре типа
Конфигурацию оповещений можно указать в Prometheus, где указывается условие, которое необходимо поддерживать в течение определенного времени, чтобы оповещение сработало. При срабатывании оповещений они пересылаются в службу Alertmanager. Alertmanager может включать логику для отключения оповещений, а также для пересылки их по электронной почте, Slack или в службы уведомлений, такие как PagerDuty . [20] Некоторые другие системы обмена сообщениями, такие как Microsoft Teams [21], можно настроить с использованием приемника Alertmanager Webhook в качестве механизма внешней интеграции. [22] Также Prometheus Alerts можно использовать для получения оповещений непосредственно на устройствах Android, даже без необходимости настройки каких-либо целей в Alert Manager. [23]
Прометей не задуман как полноценная приборная панель. Хотя его можно использовать для построения графиков конкретных запросов, он не является полноценной информационной панелью, и для создания информационных панелей его необходимо подключить к Grafana ; это было названо недостатком из-за дополнительной сложности установки. [24]
Prometheus предпочитает мониторинг «белого ящика». Приложениям рекомендуется публиковать (экспортировать) внутренние метрики, которые Prometheus будет периодически собирать. [25] Некоторые экспортеры и агенты для различных приложений могут предоставить показатели. [26] Prometheus поддерживает некоторые протоколы мониторинга и администрирования, обеспечивающие совместимость при переходе: Graphite , StatsD, SNMP , JMX и CollectD.
Прометей фокусируется на доступности платформы и основных операциях. [27] Метрики обычно хранятся в течение нескольких недель. Для долгосрочного хранения метрики можно передавать в удаленное хранилище. [17]
Предпринимаются попытки превратить формат представления Prometheus в стандарт, известный как OpenMetrics. [28] Некоторые продукты приняли этот формат: пакет TICK от InfluxData, [29] InfluxDB , Google Cloud Platform , [30] и DataDog. [31]
Впервые Prometheus использовался в SoundCloud, где он был разработан, для мониторинга своих систем. [8] Фонд Cloud Native Computing Foundation располагает рядом тематических исследований других компаний, использующих Prometheus. К ним относятся служба цифрового хостинга DigitalOcean , [32] цифровой фестиваль DreamHack , [33] и служба миграции электронной почты и контактов ShuttleCloud. [34] Отдельно Pandora Radio упомянуло об использовании Prometheus для мониторинга своего конвейера данных. [35]
GitLab предоставляет руководство по интеграции Prometheus для экспорта метрик GitLab в Prometheus [36] и оно активировано по умолчанию, начиная с версии 9.0 [37]
Несмотря на то, что Borgmon остается внутренней частью Google, идея рассматривать данные временных рядов как источник данных для генерации оповещений теперь доступна каждому через такие инструменты с открытым исходным кодом, как Prometheus...
Я присоединился к SoundCloud еще в 2012 году из Google… у нас еще не было инструментов мониторинга, которые работали бы в такой динамической среде.
Нам не хватало того, как Google осуществлял мониторинг собственного внутреннего планировщика кластера, и мы были очень вдохновлены этим и, наконец, решили создать собственное решение с открытым исходным кодом.
{{cite book}}
: CS1 maint: location missing publisher (link){{cite book}}
: CS1 maint: location missing publisher (link){{cite book}}
: CS1 maint: location missing publisher (link)