Если работаешь системным администратором или аналитиком, то часто приходится отображать данные о событиях или статистику в виде графиков и диаграмм, в зависимости от времени, когда они произошли. Для этого существует множество инструментов, и об одном из них мы поговорим в этой статье.
Сегодня рассмотрим установку и настройку Grafana – веб-инструмента для представления данных, связанных со временем, в виде очень красивых графиков и диаграмм. В качестве источника данных для Grafana можно использовать как множество различных сложных движков баз данных, включая Graphite, ElasticSearch, InfluxDB, Prometeus, так и более простых, например MySQL. В этой статье мы рассмотрим, как установить Grafana в Ubuntu 18.04, а также как настроить её для работы с influxdb.
Установка Grafana в Ubuntu
В официальных репозиториях дистрибутива пакета для этой программы нет, но вы можете установить её из официального репозитория самой программы. Чтобы добавить репозиторий, выполните такие команды:
curl https://packagecloud.io/gpg.key | sudo apt-key add –
sudo add-apt-repository “deb https://packagecloud.io/grafana/stable/debian/ stretch main”
Затем нужно обновить список пакетов:
sudo apt-get update
Установка Grafana Ubuntu:
sudo apt-get install grafana
Затем запускаем сервис и добавляем его в автозагрузку:
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Теперь убедимся, что сервис действительно запущен и не произошло никаких ошибок:
sudo systemctl status grafana-server
Если всё прошло хорошо, то в выводе вы увидите сообщение active(running), выделенное зеленым цветом.
У Grafana своя система авторизации, поэтому закрывать её обратным прокси не обязательно, если вы, конечно, не собираетесь добавлять для интерфейса SSL-сертификат. Но по умолчанию интерфейс доступен на порте 3000. Нам нужно добавить его в исключения брандмауэра. Для этого выполните:
ufw allow 3000/tcp
Если на вашем сервере брандмауэр не настроен, то ничего делать не надо, порт будет доступен по умолчанию.
Установка Grafana в CentOS
В CentOS программа устанавливается похожим образом. Только добавление репозитория будет выглядеть совсем по-другому. Для добавления официального репозитория продукта создайте файл /etc/yum.repos.d/grafana.repo со следующим содержимым:
[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
Сохраните изменения с помощью :w, и можно устанавливать Grafana:
yum -y install grafana
Затем, таким же образом, запустите сервис и добавьте его в автозагрузку:
systemctl start grafana-server
systemctl enable grafana-server
Для управления брандмауэром в CentOS используется команда firewalld. Чтобы разрешить доступ к программе извне, выполните:
firewall-cmd –add-port=3000/tcp –permanent
firewall-cmd –reload
Grafana готова к использованию.
Настройка Grafana
1. Первый вход
Чтобы войти в интерфейс Grafana, нужно ввести в адресной стройке адрес http://localhost:3000 при условии, что вы устанавливали сервер на локальный компьютер. Если программа установлена на другой компьютер или сервер, то нужно ввести именно его адрес.
При первом входе система спросит ваш логин и пароль. По умолчанию это admin – admin. Сразу же после успешного входа вам будет предложено ввести новый пароль для администратора:
2. Источники данных
Дальше вы будете перенаправлены на домашнюю страницу:
Здесь нам система предлагает добавить источники, откуда будут загружаться данные. Для этого нажмите на зеленую кнопку Add Data Source:
В открывшемся окне введите названия ресурса и выберите его тип, движок, откуда будут браться данные. В этом примере я буду использовать InfluxDB:
В разделе HTTP надо ввести IP-адрес сервера, где находится наша база данных InfluxDB или другой ресурс. InfluxDB, как и ElasticSearch, использует обычный HTTP API для выполнения запросов, который доступен на порте 8086. Таким образом, если вы установили базу данных на локальный компьютер, адрес будет таким – http://localhost:8086:
Если база данных закрыта с помощью http-аутентификации, то ниже надо указать для неё данные. В самом низу нужно указать имя базы данных пользователя и его пароль для доступа к ней:
Затем нажмите кнопку Save. Если всё прошло успешно, то вы увидите сообщение, что источник успешно добавлен.
3. Создание Dashboards Grafana
Вернитесь на домашнюю страницу и нажмите кнопку New dashboard:
Доска создана. Теперь нам нужно заполнить её виджетами.
Сейчас доступно 9 разных виджетов:
- Graph – график;
- SingleStat – одиночный показатель;
- Table – таблица;
- Hteatmap – тепловая карта;
- Text – обычный текст;
- Row – разделитель, позволяющий создавать группы виджетов;
- Dashboards List – список доступных досок;
- Plugins List – список плагинов;
- Alerts List – список предупреждений;
Полезны нам для вывода информации только первые четыре, остальные используются для организации пространства или вывода меню программы. Давайте сначала создадим график.
4. Настройка графиков Grafana
Теперь разберём, как выполняется настройка графиков Grafana. Как вы догадались, для создания графика нужно нажать на кнопку Graph. После этого пустой график будет добавлен в рабочую область панели:
Нажмите на стрелочку около его заголовка и выберите в открывшемся меню Edit:
Рассмотрим содержимое интерфейса настройки более подробно:
- Шапка – содержит кнопки: сохранить, поделиться, меню для выбора периода времени, за который будут браться данные, кнопку изменения интервала времени, кнопку обновления данных и кнопку возврата;
- График – размещён под шапкой, показывает, как будет выглядеть ваш график;
- Панель вкладок – позволяет переключаться между разными вкладками настроек;
- Настройки – под панелью вкладок находятся настройки запроса к базе данных на получение данных;
Эти настройки можно разделить на несколько пунктов:
- Data Source – источник данных;
- FROM – таблица в базе данных или индекс;
- WHERE – условие отбора;
- SELECT – поле которые надо выбрать;
- GROUP BY – группировка значений.
В нашем примере у меня есть база с климатическими данными за определённый период, температурой и влажностью. В ней есть таблица rpi-dht22, в которой есть поля: time, humidity, temperature и location. Структура документа influxdb:
<
“measurement”: rpidht22,
“tags”: <
“location”: indor/outdor,
>,
“time”: ГГГГ-ММ-ДДTчч:мм:ссZ,
“fields”: <
“temperature” : температура,
“humidity”: влажность
>
>
Обратите внимание, если вы хотите, чтобы InfluxDB могла нормально работать с временем, нужно, чтобы оно было в правильном формате. Правильный формат – это ГГГГ-ММ-ДД T чч:мм:сс Z , где T и Z ни на что не заменяются. Если время будет не в таком формате, то функции группровки по времени могут не работать.
В качестве источника выбираем ранее созданный источник Климат, таблица – rpidht22, а поле temperature. Когда вы будете открывать каждый из пунктов, программа предложит вам выбрать одно из доступных значений. Это очень удобно:
Если в базе есть данные, то они уже должны начать отображаться. Если не отображаются, попробуйте добавить больше данных или измените период или интервал времени:
Если всё ещё что-то не работает, вы можете нажать кнопку Query Inspector на панели вкладок и посмотреть запрос, который используется для получения данных, его можно потом выполнить отдельно в интерфейсе базы данных, поэкспериментировать и понять, что не работает.
Сейчас мы на вкладке Metrics. Переключившись на вкладку General мы можем настроить имя графика в поле Title:
Сохранив график, вы вернётесь к нашей панели и получите такой результат:
Вот такие графики Grafana можно получить. Если добавить несколько полей данных для графика с помощью кнопки Add Query:
То на одном полотне будет отображаться два графика:
5. Создание SingleStat
Виджет SingleStat позволяет отображать усреднённое значение показателя, а также шкалу и его текущую позицию на ней. Чтобы добавить новый элемент на панель, нажмите кнопку Add Panel:
Затем выберите пункт SingleStat:
Настройка источников данных выполняется точно также, как и для графика, только сюда можно добавить лишь один показатель.
Особенность этого виджета в том, что он берёт все данные и применяет к ним определённую функцию, а затем выводит результат. По умолчанию применяется функция average. Я хочу знать текущую температуру, для этого мне надо получить последнее значение из списка, а не среднее. Функцию обработки данных можно изменить на вкладке Options. Для последнего значения выберите в поле Stat значение Current:
Чтобы включить отображение шкалы, найдите на вкладке Options пункт Guage и поставьте напротив него галочку. Здесь же можно указать максимальное и минимальное значение:
Вот такая панель получится в результате:
6. Настройка панели
Имя панели вы можете задать, нажав на кнопку с шестерёнкой. Затем введите нужное имя в поле Name:
Как вы, возможно, уже заметили, взявшись за нижний правый угол можно менять размеры виджетов, а за заголовок – перетягивать их в другое место. Добавив несколько виджетов и разделив температуру с помощью условия WHERE на улицу и дом, получаем такую панель:
Таблица и тепловая карта выглядят вот так:
После внесения изменений не забывайте сохранить панель.
7. Импорт и экспорт
Готовую панель можно экспортировать и импортировать на другом сервере. Для этого есть кнопка Share:
Здесь перейдите на вкладку Export и нажмите кнопку Save to file. Теперь полученный файл вы можете использовать для импорта на другой машине. Для этого выберите в меню Dashboard -> Manage:
В открывшемся окне нажмите кнопку Import, теперь осталось выбрать файл и выбрать источник, откуда будут браться данные.
Выводы
Grafana – это очень мощная система построения графиков и мониторинга статистики. У неё много функций и их невозможно охватить одной статьей, я рассказал только про работу с InfluxDB и построение простых графиков, но этого будет вполне достаточно, чтобы начать работу, а дальше вы уже разберётесь. А какие системы статистики используете вы? Почему? Напишите в комментариях!
Нет похожих записей
alt=”Creative Commons License” width=”” />
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.