Это завершающая статья цикла публикаций про построение системы мониторинга серверов на базе Prometheus. Мы уже научились разворачивать полноценную систему мониторинга через Docker на одном сервере, подробно разобрались в том, что такое экспортеры и Prometheus. В этой статье мы будем плотно работать с Grafana: устанавливать её, настраивать, использовать готовые решения.
Затем опишем процесс подключения Grafana к заранее развернутому Prometheus, чтобы повторить материал на практике — рекомендуем сначала ознакомиться с предыдущими статьями цикла и самостоятельно развернуть Prometheus на сервере.
Что такое Grafana и как она работает?
Grafana — это open source система визуализации данных. Grafana поддерживает множество типов баз данных:
- Graphite и Prometheus — легкая система сбора, хранения и визуализации данных;
- CloudWatch — это сервис мониторинга облачных ресурсов AWS и приложений, работающих на AWS;
- Elasticsearch — поисковый движок с json rest api, использующий Lucene (свободная библиотека для высокопроизводительного полнотекстового поиска) и написанный на Java;
- InfluxDB и OpenTSDB— open source система управления базами данных для хранения временных рядов;
- 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 не составляет труда:
- Настройте фильтр и выберите нужный вам шаблон из списка. Мы выбрали шаблон дашборда Node Exporter Full — он нас полностью устраивает.
- Скопируйте ID дашборда:
- Перейдите в Grafana → раздел «Create» → пункт Import, вставьте ID и нажмите кнопку «Load»:
- На следующем шаге укажите базу данных откуда будут браться данные и нажмите кнопку «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.
Prometheus: мониторинг серверов
Устанавливаем и настраиваем все элементы экосистемы Prometheus для мониторинга кластера серверов.
Grafana на VPS: установка и настройка
Разбираемся в том, как работают системы мониторинга нагрузки на примере Grafana, а также устанавливаем её на VPS.
Мануалы по системам мониторинга
Раздел содержит статьи по установке и настройке Prometheus, Grafana, Alertmanager и node exporter.