Prometheus vs Grafana в AWS Cloud
Сегодня на рынке представлено множество инструментов, способных удовлетворить Ваши требования. Большинство продуктов, особенно ведущих с открытым исходным кодом, были разработаны для решения всего лишь одной задачи и впоследствии дополнены вспомогательным функционалом; при этом неосновной функционал редко соответствует отраслевым стандартам. Prometheus и Grafana - два ярких тому примера.
Что такое Prometheus?
«Prometheus - это набор инструментов для мониторинга и оповещения систем с открытым исходным кодом...», - говорится прямо в источнике. Хотя это утверждение верно, оно не учитывает степень важности Prometheus, который стал основным инструментом с открытым исходным кодом для сбора метрик и генерации базовых оповещений в современном облачном мире. Это особенно верно, если Вы работаете во вселенной Kubernetes, где Prometheus занимает главенствующее положение.
Данные временных рядов, генерируемые Prometheus на основе метрик, которые он отслеживает, хранятся в его собственном хранилище данных. Prometheus также может импортировать данные из любого количества других источников данных, включая различные решения для мониторинга публичных облаков, благодаря обширному набору плагинов, которые позволяют ему предоставлять данные различным внешним решениям. Компания AWS даже предпочитает Prometheus собственному сервису CloudWatch для своего предложения EKS (Kubernetes).
Поскольку Prometheus имеет ограничения на управление данными по мере их роста, при необходимости роста конкретного экземпляра выбор, который он делает для этого, сильно влияет на способ хранения данных. Это может затруднить объединение данных для получения полной картины инфраструктуры. Когда стандартная конфигурация достигает своих пределов, есть два основных варианта действий: либо сегментировать Prometheus, чтобы иметь несколько независимых экземпляров, либо иметь ряд ведомых, которые разделяют данные, чтобы справиться с большим объемом.
Если Вам нужно отобразить основные тенденции, раскрыв лишь несколько показателей, Вы вполне можете использовать базовые возможности визуализации Prometheus. Однако почти каждая организация выбирает более продвинутый пакет визуализации.
Для запуска Prometheus также можно использовать контейнер Docker. Однако он редко используется как отдельное приложение. Обычно он внедряется в кластер Kubernetes и управляется оператором или с помощью диаграммы Helm. Prometheus может сосредоточиться на том, что у него получается лучше всего, а именно на раскрытии и сборе метрик из кластерных подсистем, поскольку эти два метода развертывания устраняют многие сложности, связанные с работой в кластере Kubernetes.
Что такое Grafana?
Краткое описание решение непосредственно из источника: Торкель Дегаард основал проект Grafana в 2014 году. Он «позволяет запрашивать, визуализировать и оповещать о метриках и журналах независимо от того, где они хранятся».
Grafana - это, по сути, инструмент для объединения и отображения данных на дашбордах из всех источников данных организации. Она управляет фундаментальными функциями оповещения, которые генерируют визуальные сигналы тревоги на основе панелей. Большинство платформ мониторинга и наблюдаемости производят и хранят данные временных рядов в базах данных, таких как Graphite, Elastic или родной репозиторий Prometheus, с которыми Grafana работает лучше всего. Grafana же может получать данные из широкого спектра источников данных с помощью плагинов, таких как SQL-базы данных, например MariaDB и PostgreSQL, и решения для мониторинга, предлагаемые публичными облачными провайдерами, например Stackdriver от Google и AWS CloudWatch.
Kibana, продукт экосистемы Elasticsearch, является наиболее часто упоминаемым конкурентом Grafana. Grafana и Kibana имеют общую цель - упростить визуализацию и получение оповещений о данных, к которым у пользователей есть доступ. Grafana не ограничена одним источником данных, в то время как Kibana поддерживает только Elastic.
Поскольку Kibana - это инструмент, который Elastic использует в своем коммерческом предложении, логично, что его поисковые возможности лучше, чем у Grafana. Корреляция событий и расширенный поиск - это функции, на которые есть время и ресурсы только у коммерческих продуктов.
Поскольку Grafana не имеет собственного хранилища данных, у нее нет встроенной возможности агрегировать данные из нескольких источников. Это не позволяет ей проводить корреляцию между различными типами данных.
Запуск одного контейнера Docker и подключение к Grafana Dashboard - это все, что нужно для начала работы с Grafana.
Да начнется бой!!!
На изображении, приведенном выше, я упомянул несколько особенностей Prometheus и Grafana, некоторые из которых я хотел бы осветить более подробно.
Получение данных
Prometheus лучше всего справляется со сбором данных. Для сбора данных он получает данные временных рядов по протоколу HTTP. Для хранения собранных данных используется многомерная модель данных, которую можно определить по имени метрики.
PromQL, оригинальный и мощный язык запросов Prometheus, также может использоваться для запроса и агрегирования данных временных рядов из вышеупомянутой модели данных в режиме реального времени. Запрошенные данные могут быть отправлены во внешнюю систему или отображены в виде графика или таблицы.
Поскольку синтаксис PromQL аналогичен синтаксису Go, Вы сможете довольно быстро освоить PromQL, если уже знакомы с этим языком. Если Вам понадобится помощь в поиске нужных выражений PromQL, вспользуйтесь встроенным проводником метрик.
Grafanaне может визуализировать некоторые данные, если пользователь не установит внешний источник данных (например, Prometheus).
Таким образом, очевидно, что в этом плане Prometheus круче или - Prometheus vs Grafana (1: 0)
Визуализация данных
Grafana отлично справляется с задачей отображения данных. Она способна создавать панели с картами, графиками и временными рядами из внешних источников данных. Эти панели можно настроить так, чтобы они были доступны для широкой публики или для совместного использования членами отдельной команды.
Кроме того, в Grafana можно менять легенду графика, добавлять временные фильтры, изменять режим просмотра и модифицировать существующие панели. Например, после создания дашборда Вы можете увеличивать или уменьшать масштаб изображения.
Если у Вас несколько дашбордов, Вы также можете им управлять. Grafana позволяет организовывать панели в папки.
Используя браузер выражений, Prometheus также может генерировать графики и диаграммы из собранных данных. Однако по сравнению с Grafana ему не хватает некоторыхх функций. Например:
Вы не можете объединить несколько графиков.
Нет возможности drag and drop.
Одновременно можно просматривать только один чат, поскольку для просмотра результатов необходимо вводить запросы.
Совместное использование не поддерживается.
В графики не могут быть включены события и оповещения
В этом случае побеждает Grafana, итого Prometheus vs Grafana (1: 1)
Дизайн UI и UX
Grafana занимает первое место по удобству использования и дизайну пользовательского интерфейса. У нее потрясающе продуманный интерфейс, который очень прост в использовании. Слева находятся все необходимые ссылки, а справа - панели управления, оповещения и параметры. В последнюю версию Grafana также встроен режим light/dark, который подстраивается под настройки системы.
Дизайн пользовательского интерфейса Prometheus оставляет желать лучшего...
Prometheus vs Grafana (1: 2)
Удобство интеграции
Prometheus и Grafana имеют разные процедуры интеграции. Для передачи данных на сервер Prometheus требуются клиентские библиотеки. Затем для запроса, выбора и фильтрации нужных данных на сервере можно использовать PromQL. В этой процедуре задействовано много кода.
Grafana требует подключения источника данных только через свой пользовательский интерфейс, поскольку предполагает, что Вы уже собрали достаточное количество данных в совместимом формате.
Таким образом, Prometheus vs Grafana (1: 3).
Управление
В данном случае Grafana - единственная, кто имеет возможность управления командой. Она позволяет создавать несколько пользователей с различными ролями, такими как редактор, зритель и администратор. Вы также можете разделить пользователей на команды и назначать разрешения и папки командам, а не пользователям. Поскольку Prometheus ориентирован исключительно на сбор данных, он лишен подобных возможностей.
Prometheus vs Grafana (1: 4).
Ограничения Prometheus
Платформа мониторинга Prometheus имеет ограничения, препятствующие масштабированию. Поэтому альтернатива «мониторинг как услуга», основанная на технологии Prometheus, о которой речь пойдет чуть позже, вполне оправдана.
Ограничения Grafana
Тот факт, что сбор и хранение данных нужно настраивать по отдельности, является единственным существенным ограничением Grafana. Кроме того, Grafana не способна проводить корреляцию между несколькими типами данных.
Заключение (Prometheus vs Grafana (1:4))
Даже если Grafana и выиграла со счетом 4:1, я не хочу и не могу отметить Grafana как победителя в этом поединке. Почему? Да потому что Grafana и Prometheus - отличные решения для мониторинга данных. Однако при создании они были ориентированы на разные приоритеты. Prometheus в первую очередь ориентирован на сбор данных, предоставляя пользователям возможность выбирать и агрегировать данные временных рядов в режиме реального времени. Визуализация данных - основной фокус Grafana. Нельзя сказать, что один из них лучше другого; на самом деле лучше всего они работают в совокупности.











