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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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



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


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

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



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

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


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

Создаем два запроса, как на картинке. Включаем поля с именем значения. Переопределяем поля по цветам и тексту. Подробно мы делали это тут.
Сохраняем и создаем новую визуализацию по количество оставшихся 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 строку, она должна быть такого вида. Если ее нету или закомментирована, то ее нужно привести в такой вид:

То есть чтобы наш агент использовал все кастомные конфиги по элементам.
Обязательно перезапускаем службу, чтобы агент смог отдавать новый элемент данных на сервер.
sudo systemctl restart zabbix-agent2.service
Теперь переходим на zabbix server, идем в «Мониторинг» → «Узла сети», нажимаем левой кнопкой на astraops-grafana и выбираем Элементы данных.


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


Начинаем заполнять данные:
Указываем имя элемента, любое, но лучше такое, какое задали в конфиге - ram_used.
Тип - Zabbix агент (активный)
Ключ - ram.used (тут с точностью, как в конфигурационном файле UserParameter=)
Единицу измерения ставим - B (так как мы делали в байтах вывод).
Остальное оставляем по умолчанию.

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

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

Все бьет. Теперь нужно сделать переконнект соединения с графаны до заббикса, чтобы графана увидела новый элемент.
Возвращаемся на графану, откроем новую вкладку и идем справа «Connections» → «Data sources»


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

Снова идем в нашу создаваемую визуализацию ранее. Там где Item ищем созданный 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 значения.

Когда будет 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

Включаем службу после успешной установки:
sudo systemctl start grafana-server


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

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

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

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

Один плагин:

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

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

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

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

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

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