Grafana и Prometheus: настройка совместной работы

Это завершающая статья цикла публикаций про построение системы мониторинга серверов на базе Prometheus. Мы уже научились разворачивать полноценную систему мониторинга через Docker на одном сервере, подробно разобрались в том, что такое экспортеры и Prometheus. В этой статье мы будем плотно работать с Grafana: устанавливать её, настраивать, использовать готовые решения.

Затем опишем процесс подключения Grafana к заранее развернутому Prometheus, чтобы повторить материал на практике — рекомендуем сначала ознакомиться с предыдущими статьями цикла и самостоятельно развернуть Prometheus на сервере.

Что такое Grafana и как она работает?

Grafana — это open source система визуализации данных. Grafana поддерживает множество типов баз данных:

  1. Graphite и Prometheus — легкая система сбора, хранения и визуализации данных;
  2. CloudWatch — это сервис мониторинга облачных ресурсов AWS и приложений, работающих на AWS;
  3. Elasticsearch — поисковый движок с json rest api, использующий Lucene (свободная библиотека для высокопроизводительного полнотекстового поиска) и написанный на Java;
  4. InfluxDB и OpenTSDB— open source система управления базами данных для хранения временных рядов;
  5. Kairos DB — open source распределенная масштабируемая база данных временных рядов.

Устанавливается Grafana немного непривычным способом. Она не входит в состав стандартных Linux репозиториев apt или apt-get. Мы не будем заострять внимание на установке Grafana в этой статье, оставим ссылку на мануал.

Grafana работает так: вы подключаете её по API к любой из поддерживаемых БД или сразу к нескольким БД, она забирает оттуда данные и проецирует их на шаблоны графиков и дашборды, которые вы выбрали. Сама по себе Grafana лишь инструмент для визуализации данных, всю работу по выгрузке, хранению и предоставлению доступа к данным делают экспортеры и СУБД.

Теперь, когда мы точно понимаем, как работает Grafana давайте подключим её к Ptometheus и посмотрим на собранные метрики.

Подключение Grafana к Prometheus

Подключить Grafana к Prometheus можно двумя способами: через web-интерфейс или через конфигурационный файл. Второй способ подойдет, если вы разворачиваете систему мониторинга через Ansible. Об этом мы выпустим отдельный пост. Сейчас мы рассмотрим процесс подключения Prometheus к Grafana через web-интерфейс.

Если у вас установлен и работает Alertmanager перед добавлением источника данных, необходимо настроить его интеграцию с Grafana. Для этого на левой боковой панели управления выберите пункт «Конфигурация», вкладку «Плагины» и кликнете по Alertmanager:

В открывшемся меню настроек Alertmanager надо обязательно настроить две опции подключения: имплементация должна быть выставлена как Prometheus, а адрес подключения обязательно должен содержать протокол подключения — http:// и порт Alertmanager — по умолчанию 9093:

Если у вас Grafana и Prometheus установлены на одном сервере, то можно в качестве URL указать http://localhost:9093, если же они установлены на разных серверах — указывается полный IP-адрес сервера, например: http://89.223.100.158:9093. После сохранения настроек можно возвращаться на центральную страницу Grafana, где кликом по кнопке можно добавить источник данных:

Альтернативный путь подключения источника данных лежит через левую боковую панель. В ней нужно найти вкладку «Конфигурация», пункт меню «Источники данных» и нажать кнопку «Добавить источник данных»:

Вне зависимости от пути добавления источника данных вы окажетесь на этапе выбора типа подключения баз данных — выберете Prometheus:

В открывшихся настройках подключения Prometheus нас интересует пока только два пункта: URL подключения — адрес сервера указывается с портом доступа к Prometheus; Alertmanager data source — выбирается из заранее преднастроенного с предыдущего шага источника.

После сохранения источника данных в конфигурации Grafana должны быть два источника данных: Prometheus (у нас он называется My prod) и Alertmanager.

Отлично, мы подключили Prometheus к Grafana и готовы работать с дашбордами. Этим и займемся.

Работа с дашбордами Grafana

Графаной пользуются миллионы людей по всему миру, у неё огромное комьюнити, которое уже многое сделало. Поэтому перед тем как начать создавать собственные дашборды — загляните в готовые решения, скорее всего всё уже сделали до вас. Архив с готовыми дашбордами находится здесь.

Поиск и добавление дашборда в Grafana не составляет труда:

  1. Настройте фильтр и выберите нужный вам шаблон из списка. Мы выбрали шаблон дашборда Node Exporter Full — он нас полностью устраивает.
  2. Скопируйте ID дашборда:
  3. Перейдите в Grafana → раздел «Create» → пункт Import, вставьте ID и нажмите кнопку «Load»:
  4. На следующем шаге укажите базу данных откуда будут браться данные и нажмите кнопку «Import»: После импорта откроется дашборд, где вы сможете выбрать нужный вам для мониторинга сервер из списка:

Если данный дашборд вас чем-то не устроил, вы можете установить другой дашборд. Вот, например дашборд с ID 11074 тоже очень информативный и интересный. Вообще вы можете работать с любым количеством дашбордов. Конечно, помимо использования готовых шаблонов, вы можете создавать свои дашборды, панели и графики. Это очень обширная тема, раскрытие которой займет не одну статью, мы и так достаточно много узнали о Grafana и Prometheus — можно подвести итог.

О системе мониторинга, построенной на Grafana и Prometheus

Grafana, Prometheus, node exporter и Alertmanager образуют вместе систему мониторинга, которая позволяет работать со статистикой и оперативно отслеживать изменения в инфраструктуре. Каждый из элементов системы мониторинга отвечает за свой пул задач.

Grafana — это гибкая система визуализации данных с web-интерфейсом, которая работает с десятками разнообразных баз данных: начиная от классических SQL баз данных, заканчивая базами данных временных рядов. Одной из самых популярных СУБД временных рядов является Prometheus.

Prometheus — СУБД хранения временных рядов, с возможностью построения графиков, настройки оповещений и работы с БД через язык запросов PromQL. Prometheus в отличие от других СУБД сам опрашивает хосты и забирает из них данные. Программы, которые снимают данные с хостов называются экспортёры. Самый востребованный из них — node exporter.

Node exporter — это маленькая программа, которая отслеживает метрики системы и предоставляет к ним доступ на порте 9100. Node exporter считывает огромное количество метрик, однако его можно настроить так, чтобы он передавал только нужные вам метрики. На базе полученных метрик строятся графики и формируются оповещения об инцидентах. Обычно для их обработки используют Alertmanager.

Alertmanager — это программа, которая обрабатывает оповещения об инцидентах (алерты), которые формирует Prometheus на базе метрик, получаемых от node exporter. Alertmanager нужен для более гибкой работы с алертами. Он умеет объединять их в группы, работать с условиями и каналами их доставки. Вы можете получать алерты любым удобным для вас способом: начиная от электронной почты, заканчивая Telegram.

Сначала работа с Prometheus и Grafana может показаться сложной, а схема их установки и настройки запутанной. Действительно, без опыта работы с Linux и знания определенных нюансов разобраться будет непросто. Именно поэтому мы сделали этот цикл статей и создали специальный раздел в базе знаний, материалы которого помогут вам в работе с системой мониторинга на базе Prometheus и Grafana.