Введение в Prometheus и Grafana

Prometheus — это система мониторинга с открытым исходным кодом, основанная на метриках. Он собирает данные от служб и хостов, отправляя HTTP-запросы на конечные точки метрик. Затем он сохраняет результаты в базе данных временных рядов и делает их доступными для анализа и оповещения.

Зачем мониторить?

  • Включает оповещения, когда что-то идет не так, желательно до того, как что-то пойдет не так. Чтобы кто-нибудь мог посмотреть на это.
  • Он предоставляет информацию для анализа, отладки и решения проблемы.
  • Это позволяет вам видеть тенденции/изменения с течением времени. Например, сколько активных сеансов в любой момент времени. Это помогает в проектных решениях и планировании емкости.

Мониторинг обычно относится к событиям. Событие может включать в себя получение HTTP-запроса, отправку ответа, чтение с диска, вход пользователя в систему. Мониторинг системы может включать профилирование, ведение журнала, отслеживание, метрики, оповещение и визуализацию.

Мониторинг «черного ящика» и «белого ящика»

Мониторинг подразделяется на две основные категории:

Мониторинг черного ящика

В мониторинге «черного ящика» мониторинг осуществляется на уровне приложения или хоста, поскольку за ними наблюдают извне. Это может быть весьма ограничивающим.

Мониторинг белого ящика

Мониторинг белого ящика означает мониторинг внутренних компонентов службы. Он будет предоставлять данные о состоянии и производительности внутренних компонентов.

Четыре золотых сигнала

Согласно Googleесли вы можете измерить только четыре показателя системы взаимодействия с пользователем, сосредоточьтесь на следующих четырех, называемых четырьмя золотыми сигналами:

№1. Задержка

Время, необходимое для обслуживания запроса — успешное или неудачное. Важно отслеживать не только успешные запросы, но и неудачные.

№ 2. Движение

Мера того, насколько большой спрос предъявляется к вашей системе. Для веб-службы это обычно HTTP-запросы в секунду.

№3. Ошибки

Частота неудачных запросов.

№ 4. Насыщенность

Насколько полно ваше служение. Увеличение задержки часто является важным индикатором насыщения. Производительность многих систем снижается задолго до того, как они достигают 100%-го использования.

Типы метрик Prometheus

Метрики Prometheus бывают четырех основных типов:

№1. Прилавок

Значение счетчика всегда будет увеличиваться. Он никогда не может уменьшиться, но его можно обнулить. Таким образом, если парсинг не удается, это означает только пропущенную точку данных. Совокупное увеличение будет доступно при следующем чтении. Примеры:

  • Общее количество полученных HTTP-запросов
  • Количество исключений.

№ 2. Измерять

Датчик — это моментальный снимок в любой заданный момент времени. Он может как увеличиваться, так и уменьшаться. Если выборка данных не удалась, вы потеряете образец; следующая выборка может показать другое значение: примеры дискового пространства, использование памяти.

№3. Гистограмма

Гистограмма отбирает наблюдения и подсчитывает их в настраиваемых сегментах. Они используются для таких вещей, как продолжительность запроса или размер ответа. Например, вы можете измерить продолжительность запроса для определенного HTTP-запроса. Гистограмма будет иметь набор сегментов, скажем, 1 мс, 10 мс и 25 мс. Вместо того, чтобы хранить каждую продолжительность для каждого запроса, Prometheus будет хранить частоту запросов, попадающих в конкретную корзину.

№ 4. Резюме

Подобно наблюдениям за образцами гистограмм, обычно запрашивается продолжительность или размер ответа. Он предоставит общее количество наблюдений и сумму всех наблюдаемых значений, что позволит вам рассчитать среднее наблюдаемых значений. Например, за одну минуту у вас было три запроса, которые заняли 2,3,4 секунды. Сумма будет равна 9, а количество будет равно 3. Задержка составит 3 секунды.

Компоненты экосистемы Prometheus

Сервер Прометей

Собирает метрики, сохраняет их и делает доступными для запросов, отправляет оповещения на основе собранных метрик.

Соскоб

Прометей является вытягивающей системой. Чтобы получить метрики, Prometheus отправляет HTTP-запрос, называемый очисткой. Он отправляет царапины на цели в зависимости от своей конфигурации.

Каждая цель (статически определенная или обнаруженная динамически) очищается через регулярные промежутки времени (интервал очистки). Каждая очистка считывает конечную точку HTTP /metrics, чтобы получить текущее состояние метрик клиента, и сохраняет значения в базе данных временных рядов Prometheus.

Есть и другие базы данных временных рядов для решений мониторинга, которые вы, возможно, захотите изучить.

Клиентские библиотеки

Чтобы отслеживать сервис, вам нужно добавить инструменты в свой код. Имеются клиентские библиотеки для всех популярных языков и сред выполнения. Используя эти библиотеки, как только вы добавите несколько строк кода, ваш код начнет выдавать метрики. Это называется прямой аппаратурой. Эти библиотеки позволяют вам определять внутренние метрики, а также предоставлять их через конечную точку HTTP. Когда Prometheus очищает конечную точку HTTP метрик, клиентская библиотека отправляет метрики на сервер.

Официальные клиентские библиотеки предлагаются Prometheus для Go, Java, Python и Ruby. Prometheus имеет открытую экосистему. Существуют также созданные сообществом клиентские библиотеки для C, PHP, Node.js, C#/.NET и многих других.

Экспортеры

Многие приложения предоставляют метрики в формате, отличном от Prometheus. Для них и для приложений, которыми вы не владеете или для которых у вас нет доступа к коду, вы не можете добавлять инструменты напрямую. Например, сервер MySQL, Kafka, JMX, HAProxy и NGINX. В этих сценариях вы используете экспортеры.

Экспортер — это инструмент, который вы развертываете вместе с приложением, из которого вы хотите получить метрики. Экспортер действует как прокси между приложением и Prometheus. Он будет получать запросы от сервера Prometheus, собирать данные из журналов доступа, журналов ошибок приложения, преобразовывать их в правильный формат и, наконец, возвращаться на сервер Prometheus.

Некоторые из популярных экспортеров:

  • Окна – для метрик сервера Windows
  • Узел – для метрик сервера Linux
  • Черный ящик – для показателей производительности DNS и веб-сайта
  • JMX – для метрик приложений на основе Java

После того, как приложения настроены или экспортеры установлены, вам нужно сообщить Prometheus, где они находятся. Это можно сделать с помощью статической конфигурации. В случае динамических сред этого сделать нельзя; поэтому используется обнаружение службы.

Оповещение

Оповещение с помощью Prometheus состоит из двух частей:

Правила оповещения отправляют оповещения в Alertmanager.

Затем Alertmanager управляет этими предупреждениями. Он отправляет уведомления, используя множество готовых интеграций, таких как электронная почта, Slack, Hipchat и PagerDuty. Alertmanager также может отключать или объединять уведомления, чтобы уменьшить количество уведомлений.

Вот руководство по мониторингу сервера Linux с помощью Prometheus и Dashboard.

Визуализация с помощью информационных панелей

Prometheus имеет ряд API, с помощью которых запросы PromQL могут создавать необработанные данные для визуализации.

Хотя Prometheus включает браузер выражений, который можно использовать для специальных запросов, лучшим доступным инструментом является Графана. Grafana полностью интегрируется с Prometheus и может создавать самые разные информационные панели.

Вам нужно будет настроить Prometheus в качестве источника данных для Grafana.

Вы можете добавить панели мониторинга:

  • Импорт панелей мониторинга, созданных сообществом
  • Создание собственного
  • Использование предопределенной информационной панели.

Вот как выглядит предопределенная панель управления экспортером узлов:

В Grafana есть модуль worldPing, который позволяет отслеживать показатели производительности сайта и DNS по всему миру.

Резюме

У Prometheus очень мало требований. Его может быть довольно просто запустить, так как это один двоичный файл с файлом конфигурации. Он может обрабатывать тысячи целей и обрабатывать миллионы выборок в секунду. Prometheus предназначен для отслеживания общей системы, здоровья, поведения системы.

Grafana — лучший инструмент для визуализации метрик, который легко интегрируется с Прометей.