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

22.06.2023

Это завершающая статья цикла публикаций про построение системы мониторинга серверов на базе 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.

Зарегистрироваться