PROM 08: Визуализация метрик в Grafana

Описание:

Всем привет!

В предыдущем задании мы обсудили одну из самых важных фичей prometheus, а именно promql. Теперь вы с легкостью можете суммировать значения метрик, вытаскивать из них скорость изменения, а так же считать персентили и прочие показатели. Это все хорошо, но человеку явно проще принимать визуальную информацию, нежели циферки и таблицы. Именно поэтому сегодня мы разберемся с тем, что такое grafana, какие основные возможности она предоставляет, установим ее, подключим к prometheus и разберемся с тем, как вы можете очень быстро собрать систему мониторинга из готовых dashboards.

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

Итак, поехали!

Что такое grafana

Сразу стоит оговориться, что в задании данного практикума мы не будем разбирать все возможности графана - для этого мы сделаем отдельный практикум. Потому что функций там действительно много. Но мы расскажем про основные моменты - как вы можете уже сейчас начать визуализировать ваши метрики.

Для начала стоит разобраться с тем что такое grafana. Grafana - это средство визуализации и отображения метрик из различных систем мониторинга. Давайте разбираться подробнее. Grafana запускается на сервере и имеет собственный конфигурационный файл. После запуска сервера вы можете зайти в веб интерфейс графаны, пройти аутентификацию и авторизацию и получить доступ к различным графикам и таблицам. Сама графана ничего не хранит - она подключается к источникам данных, вытаскивает из них нужную информацию и визуализирует ее. К примеру, она может подключиться к prometheus, запросить точки для какой-то метрики за один день и построить по ним график. Или же она может подключиться к elasticsearch и достать логи за предыдущий день и вывести их в красивой таблице.

Grafana является очень кастомизируемым средством - вы можете добавлять различные источники данных (вплоть до zabbix'а), устанавливать дополнительные плагины - например, плагин, который добавляет вид отображения мировую карту с различными точками. Помимо этого вы можете настраивать алерты с различными каналами оповещений, создавать организации, пользователей, назначать различные права различным пользователям. Так же вы можете настроить аутентификацию через внешние сервисы, например google.

По сути в графане все организовано следующим образом - у вас есть организация, в которую добавлены пользователи. Вы можете создавать различные организации под различные проекты внутри вашей компании. В каждой организации есть доски (dashboards), внутри которых находятся различные панели инструментов - например графики или таблицы. Каждая панель может обращаться к отдельному источнику данных - вы задаете это в настройки панели. Таким образом вы можете собрать на одном экране информацию по метрикам сервиса, а так же его логи.

Ну и самое главное - когда вы используете источник данных prometheus, в настройках панели с графиком вы будете писать все запросы на promql, который мы разобрали в предыдущей теме. Поэтому вам будут доступны все функции и методы, которые есть в promql.

Установка grafana

Для установки графаны мы воспользуемся официальной документацией. Для установки достаточно добавить официальные apt репозитории и произвести установку. Ну или как в production'е - достаточно запустить нужный нам docker контейнер. Итак, добавляем репозитории:

# sudo apt-get install -y apt-transport-https
# sudo apt-get install -y software-properties-common wget
# wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
# echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
deb https://packages.grafana.com/oss/deb stable main

Теперь мы можем установить grafana:

# apt-get update
# apt-get install grafana

После установки у вас появится сервис grafana, а все конфигурационные файлы будут доступны в /etc/grafana:

root@prom-test:~# systemctl status grafana-server
● grafana-server.service - Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: http://docs.grafana.org
root@prom-test:~# ls -la /etc/grafana/grafana.ini
-rw-r----- 1 root grafana 37098 Jun 9 18:25 /etc/grafana/grafana.ini
root@prom-test:~#

Все что нам осталось сделать - это включить графану и запустить ее:

root@prom-test:~# systemctl enable grafana-server
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /lib/systemd/system/grafana-server.service.
root@prom-test:~# systemctl start grafana-server
Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-06-09 18:27:50 UTC; 3s ago
Docs: http://docs.grafana.org
Main PID: 11190 (grafana-server)
Tasks: 6 (limit: 2345)
Memory: 27.3M
CGroup: /system.slice/grafana-server.service

Теперь можно заходить по нашему ip адресу на порт 3000.

Настройка графаны

На самом деле большая часть всего что вам потребуется настраивается в /etc/grafana/grafana.ini - как минимум способы аутентификации и авторизации.

Best Practice: Мы рекомендуем запускать графану на 127.0.0.1 на 3000 порту и проксировать соединения к ней через nginx - таким образом вы сможете настроить ssl сертификаты, красивое доменное имя и возможно ограничить доступ для некоторых подсетей.

Всю настройку есть смысл разбить на два шага:

Добавление datasource prometheus в настройки grafana

Настройка dashboards с добавлением ваших метрик.

Все эти шаги тяжело расписать текстом, поэтому советуем вам посмотреть скринкаст - тогда все станет намного понятнее.

Единственный момент, который очень хочется упомянуть в тексте - это ресурс grafana.com. На нем вы можете найти список уже готовых dashboards, которые достаточно просто импортировать в вашу графану. Данные доски создаются сообществом и вы так же можете поучастовать в развитии графаны и выложить свои собственные наработки. Благодаря готовым dashboards вырисовывается очень стройный алгоритм настройки вашей системы мониторинга:

Важно: В первую очередь вы устанавливаете prometheus, как центральный сервер мониторинга. После этого вы ищете у себя все операционные системы, железки, сервисы и приложения, для которых устанавливаете свои экспортеры и подключаете их к prometheus. Затем, вы устанавливаете grafana, подключаете ее к prometheus и на grafana.com ищите уже готовые стандартные dashboards для ваших экспортеров. Вуаля! У вас готовые графики по всем компонентам вашей системы!

Итоги

Итак, сегодня мы с вами познакомились с инструментом визуализации метрик - grafana. Мы установили данный продукт, а так же произвели базовую настройку - подключили datasource prometheus и импортироали стандартный dashboard для node_exporter'а, тем самым мы смогли увидеть все показатели системы на единой доске.

В следующей серии мы поговорим с вами про создание алертов.

Полезные ссылки:

grafana cli

grafana dashboards

grafana plugins

grafana installation

Задание:

В этом задании вам будет необходимо установить redis server, redis_exporter, подключить его к prometheus серверу, так же установить grafana и создать dashboard для мониторинга redis сервера. На подготовленной виртуальной машине уже установлен Prometheus.

Критерии оценки выполнения задания:

Установите Redis Server:

1.1. Redis Server должен быть установлен из стандартного репозитория с помощью менеджера пакетов apt (пакет redis-server).

Установите экспортер redis_exporter следуя инструкции на GitHub:

2.1. Исполняемый файл экспортера redis_exporter должен находиться внутри отдельной директории /opt/redis_exporter.

2.2. Экспортер redis_exporter должен быть запущен как сервис c помощью systemd и быть описан в файле /etc/systemd/system/redis_exporter.service.

2.3. Экспортер должен быть запущен на порту 9121.

Установите Grafana:

3.1. Grafana должна быть установлена из официального репозитория Grafana с помощью менеджера пакетов apt (пакет grafana).

3.2. Для входа в Grafana должна использоваться учетная запись admin с паролем secretpassword.

3.3. В grafana должен быть добавлен data source prometheus.

3.4. В Grafana должен быть импортирован dashboard для визуализации метрик с redis_exporter (найдите любой подходящий на grafana.com). Название дашборда должно быть redis.