Статьи → DevOps → Часть 6. Создание и настройка дашбордов в Grafana
DevOps Актуальная

Часть 6. Создание и настройка дашбордов в Grafana

Andrew ⚡ Администратор
(обновлено 20.09.2026)
144 v1.0

Создание дашборда графаны

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

Давайте перейдем в графану на дашборд, где остановились в прошлый раз.

старый дашборд

Как вы помните, там где No data у нас был блок информации из zabbix об ssd. Так как заббикс только включил, он не успел отдать еще метрики и мы видим надпись No data. Пару минут и он начнет отдавать данные. Ниже данные из базы данных postgresql, записанные и собранные скриптом python с ActiveDirectory.

Давайте создадим новую визуализацию.

создаем новую визуализацию

Добавим вывод проблем напрямую с zabbix. Это сработанные триггеры.

выводим проблемы

Теперь нужно изменить тип вывода данных с Time series на Zabbix Problems

выбираем тип данных

выбираем zabbix problems

Получился вот такой результат. Теперь мы можем отслеживать срабатывания триггеров прямо в графане.

добавление блока проблем

Сохраняем эту визуализацию и создадим еще одну, новую.

создаем новую визуализацию

Выбираем группу - Linux servers, хост - astraops-grafana, тег элемента - component: memory, элемент отображения метрики - Memory utillizations. Далее выбираем тип визуализации по вкусу. Я выбрал ячеечную.

выбираем тип отображения

Теперь нужно ее включить

выбрали визуализацию

Находим справа Retro LCD и выбираем ее. 

выбираем retro lcd

Включаем горизонтальное отображение.

включаем горизонтальное отображение

Получилось вот так:

результат двух визуализаций

Пока получается неплохо, но нужно больше данных. Начнем мы с CPU. Нам важно смотреть нагрузку на CPU.

график нагрузки CPU

Теперь наведем красоты. Включим слева полосу разделителя данных от графика.

включаем разделитель

Теперь поиграемся с кривыми и жирностью отображения. Я не буду описывать, то заполнение непрозрачности такие-то, ширина линии такая-то, просто посмотрите на картинку и можете повторить либо сами подгоните под свой вкус.

изменяем кривые

Далее создадим еще одну визуализацию. Нам помимо RAM, CPU важно наблюдать за сетью. Давайте сделаем два запроса, где будем брать отдачу и прием и выведем их на график.

создаем визуализацию

Поправим по аналогии кривые.

правим кривые

Переопределим поля, а именно перекрасим графики в наши цвета.

переопределяем поля по покраске цвета

переопределяем второе поле с графиком

перекрашиваем второй график

Сохраняем и создаем новую визуализацию. Было бы информативно видеть, сколько работает сервер, тобишь его uptime. Создаем запрос, где указываем item tag - component: sytem, item - System uptime.

создаем новую визуализацию

выбираем тип визуализации

Выбираем тип визуализации. Остановился на этом варианте.

выбрал этот элемент

Переопределим цвет плашки.

переопределяем цвет

выбираем поле

выбираем цвет

Получился вот такой цвет:

получился вот такой цвет

Выключаем отображение графика.

выключаем график

отображение без графика

Сохраняем и создаем новую визуализацию. Теперь сделаем по аналогии, как делали про SSD. Выведем состояние места в корне (/ Root).

создаем новую визуализацию

Создаем два запроса, как на картинке. Включаем поля с именем значения. Переопределяем поля по цветам и тексту. Подробно мы делали это тут.

Сохраняем и создаем новую визуализацию по количество оставшихся inodes.

создаем визуализацию inodes

Про inode я писал вот тут.

Сделаем настройку перекраски блока по уменьшению количества процентов inodes.

перекраска блока

Соответственно мы указали Range от 0 до 40, если значение будет в этом range, то цвет блока будет красным и так далее. Сейчас у нас 92, по этому блок зеленый. Будет ниже 81, то будет желтый.

Покажу на примере. Удалим range от 81 до 100. Блок сразу покрасился в желтый.

блок желтый

выполнилось условие желтого блока

Общий результат получился вот такой:

общий план

Создадим дубликат блока / Root, только давайте выводить так же подробно про оперативную память. Мы можем вывести нагрузку и сколько всего, а сколько занято, нету готового элемента. Не беда, создадим новый элемент.

создаем дубликат блока

Теперь редактируем дубликат.

редактируем дубликат

Правим элементы отображения.

изменяем элементы

Теперь переходим на машину astraops-grafana и на ней будем создавать новый элемент данных для zabbix.

Будем узнавать состояние занятой оперативной памяти командой free.

выводим оперативную память

Создаем кастомный элемент:

sudo vim /etc/zabbix/zabbix_agent2.d/userparametr_ram.conf

Название создаем свое, но хорошей практикой будет, чтобы из названия было понятно что это.

создаем конфиг данных

Выводить будет в байтах, чтобы заббикс без проблем конвертировал их в понимаемый вид для нас.

UserParameter=ram.used, free -b | grep Mem | awk '{print $3}'

создаем параметр

UserParameter= - тут оставляем, а вот ram.used - это уже кастомное название. Может быть любым. Под таким названием мы будем искать в zabbix, в элементах данных. Далее идет команда, результат которой будет отдавать в этот кастомный элемент ram.used.

Необходимо проверить главный конфиг zabbix_agent2.conf (с двойкой, потому что мы используем zabbix_agent2 на go из предыдущех частей цикла). Если у вас первая версия, то конфиг будет без двойки.

sudo vim /etc/zabbix/zabbix_agent2.conf

В нем ищем Include строку, она должна быть такого вида. Если ее нету или закомментирована, то ее нужно привести в такой вид:

include

То есть чтобы наш агент использовал все кастомные конфиги по элементам.

Обязательно перезапускаем службу, чтобы агент смог отдавать новый элемент данных на сервер.

sudo systemctl restart zabbix-agent2.service

Теперь переходим на zabbix server, идем в «Мониторинг» → «Узла сети», нажимаем левой кнопкой на astraops-grafana и выбираем Элементы данных.

узлы сети

элементы данных

Создаем новый элемент.

создаем новый элемент

создаем элемент

Начинаем заполнять данные:

Указываем имя элемента, любое, но лучше такое, какое задали в конфиге - ram_used.

Тип - Zabbix агент (активный)

Ключ - ram.used (тут с точностью, как в конфигурационном файле UserParameter=)

Единицу измерения ставим - B (так как мы делали в байтах вывод). 

Остальное оставляем по умолчанию.

создаем элемент данных

После сохранения, можем найти наш созданный элемент.

созданный элемент

Перепроверим вывод на самой машине.

проверяем

Все бьет. Теперь нужно сделать переконнект соединения с графаны до заббикса, чтобы графана увидела новый элемент.

Возвращаемся на графану, откроем новую вкладку и идем справа «Connections» → «Data sources»

открываем data sources

zabbix

Внизу настроек просто нажимаем Save & Test.

нажимаем save & test

Снова идем в нашу создаваемую визуализацию ранее. Там где Item ищем созданный ram_used.

Внимание! Не выбирайте Item tag, если его выбрать, то не дает потом выбрать кастомный Item. В старых версия графаны можно вручную выделить Item tag и с помощью Backspace удалить его, а в новых версиях это сделать не дает. Будь-те внимательны.

выбираем кастомный ram_used

вывод данных с ram_used

Отлично, мы можем теперь выводить сколько занято оперативной памяти на данный момент. Теперь как делали ранее, по аналогии наведем красоту. Получилось вот так:

получился результат

Прекрасно! Но я бы хотел еще наблюдать за статусом службы docker. Хочу мониторить службу (Активна или нет). Создадим по аналогии с ram_used еще один кастомный элемент но для клиента astra-client-01.

sudo vim /etc/zabbix/zabbix_agent2.d/userparametr_docker.conf

С содержимым:

UserParameter=docker.service.status.numeric, if systemctl is-active docker.service >/dev/null 2>&1; then echo 1; else echo 0; fi

Данная команда возвращает 0 или 1 в зависимости от состояния службы. Если служба активна, то возвращает 1, а если нет, то 0.

кастомный параметр

Незабываем перезапустить службу.

sudo systemctl restart zabbix-agent2.service

Создаем новый элемент на zabbix server:

создаем новый элемент

Делаем по аналогии, только выбираем Тип информации - Числовой (целое положительное).

Сохраняем и смотрим результат. Заббикс отдает значение 1. Значит доступен.

смотрим результат

Проверим на сервере:

смотрим состояние службы

Отлично, отпрабатывает нормально.

Попробуем высветить на графане.

создаем запрос на графане

состояние службы

Можно конечно оставить так и смотреть состояние службы 0 или 1. Ладно, шучу. Давайте сделаем красиво и информативно. Добавим справа в Value mappings значения.

настраиваем mappings

Когда будет 1 - значит будет краситься зеленым. Когда 0, будет краситься красным. Так же изменим Display text на Активна и Неактивна.

состояние службы

Я думаю так лучше стало.

Итоговый вывод вот такой:

общий вывод

Попробуем потушить службы docker и посмотрим результат на графане, что произойдет.

выключаем службу

Видим, что изменилось на Неактивна.

состояние службы

В заббиксе тоже четко все.

состояние службы в заббиксе

состояние службы в заббиксе

Но для красоты, создадим триггер на падение службы. Будет сработкой в заббиксе и графане.

Мы уже как-то создавали триггер.

Посмотрите как создавать триггер по ссылке выше, а мы сразу перейдем к настройкам триггера.

создание триггера

Условия триггера получаются такие: если за последнее время статус равен 0 (тобишь недоступен), то сработает данный триггер с именем Падение службы Docker и важностью Высокая.

Результат получился такой:

проверка работы триггера

результат работы триггера

Включим службу обратно.

включаем службу обратно

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


Обновление версии графана (ручной способ)

Следующим этапом, обновим версию графаны на новую. В репозиториях Astra Linux 1.8 лежат не самые свежие версии графаны.

версия графаны

Попробовал я обновиться с официального сайта, а именно скачать свежую версию deb пакета.

официальный сайт графаны

Но при загрузки я получаю такую надпись

Sorry, our service is currently not available in your region.

То есть в связи с санкциями, загрузка графаны для России недоступна.

ошибка

Тут сразу вспоминается мем

мем

Все мы профи в обходах блокировок и ограничений. По этому пользуемся своими скиллами нео и загружаем тот самый запретный плод.

Я же на просторах интернета нашел версию постарее, но тоже свежую 13.1.1. по сравнению с 11.5.7.

Сначала останавливаем службу sudo systemctl stop grafana-server

Переходим в директорию куда загрузили пакет и выполняем:

sudo apt install ./grafana*.deb

установка новой версии grafana

Включаем службу после успешной установки:

sudo systemctl start grafana-server

обновленная версия графаны

обновленная графана

Как видно, обновляется быстро и просто, но не все так радужно. Видим, что отвалилась визуализация проблем с заббикса. Что-то работает, а что-то нет. Для начало, переключимся на русский язык.

В настройках профиля, выберем язык Русский.

смена языка

Затем, я хотел сделать Save & Test плагина zabbix, чтобы переконнектиться. Но это увы не помогло.

ошибка коннекта заббикса

Версия плагина была вроде свежая, но стала доступна кнопка обновить.

кнопка обновить

Обновил, но это не помогло и по итогу стало 2 плагина.

два плагина

Один плагин:

плагин 1

Второй плагин:

второй плагин

В общем схема такая. Удалил оба плагина, добавил заново плагин, активировал. Настроил заново соединение, пересоздал API ключ и тогда все заработало.

успешное подключение

Нашел вот такое сообщение и решение по нему:

В Grafana 13.x есть регресс: старые datasource, созданные до обновления, могут ломаться при health check. На форуме говорят, что дашборды при этом продолжают работать, а ошибка «not found» появляется только при Save & Test.

Решение:

Удалить старый Zabbix Data Source в Grafana
Перезапустить Grafana: sudo systemctl restart grafana-server
Создать новый Data Source → выбрать Zabbix
Указать URL, логин/пароль (или API Token)
Нажать Save & Test

Так как я пересоздал соединение, слетели все визуализации.

слетели визуализации

Пришлось вручную каждую править и заново выбирать хосты и элементы данных.

Создал потом новый дашборд и посидев немного сделал вот такой дашборд.

новый дашборд

Так же сделал вкладки, на второй вкладке проблемы.

вкладка проблем

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

0
Andrew

DevOps Engineer

1 50 статей
Комментарии (0)
Войдите, чтобы оставить комментарий

Пока нет комментариев. Будьте первым!