Несколько Zabbix серверов в одном Grafana Dashboard

Долгое время у меня в голове витала мысль о том, что было бы здорово как-то организовать единый dashboard для нескольких zabbix серверов. До проработки вопроса долго не доходили руки, но в итоге дошли. Сразу же было найдено простое и эффективное решение, о котором ранее просто не задумывался. Далее рассказываю подробно о том, как я объединил в едином дашборде все подопечные серверы zabbix с помощью Grafana.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

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

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

Решение вопроса мульти дашборда в zabbix изначально мне виделось очень сложным, так как не представлял, на базе какого готового инструмента это можно было сделать. Пока я не вспомнил про Grafana. Причем, знаю то я ее давно, но использую редко. Она чаще всего с prometheus используется, а у меня основной мониторинг всегда и везде Zabbix. При этом его графических возможностей мне хватает за глаза. За красотой не гонюсь, важен функционал.

Я видел интеграцию Zabbix и Grafana, но как я уже сказал, мне встроенной визуализации данных в заббиксе достаточно. А вот в контексте сбора информации о триггерах в едином дашборде, я графану не рассматривал. Я просто не знал, что в плагине графаны для интеграции с заббиксом есть готовая визуализация для Zabbix Problems.

После того, как узнал, что с помощью Grafana можно будет собрать multi dashboard для zabbix, настроить его было дело техники. Причем не очень сложной. Далее подробно расскажу, как это сделать.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Установка Grafana

Установить Grafana не просто, а очень просто. Я вообще не стал заморачиваться, так как мне она нужна только для одного дашборда. Поэтому запустил графану в докере.

# docker run -d -p 3000:3000 --name=grafana -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,alexanderzobnin-zabbix-app" grafana/grafana

Запустил Grafana на 3000 порту, сразу же установив несколько основных плагинов, в том числе тот, что нужен для интеграции с zabbix - alexanderzobnin-zabbix-app.

Если не хотите docker, то воспользуйтесь документацией по установке. Там нет никаких проблем, так как есть репозиторий с готовыми пакетами. Ставится все очень быстро и просто.

Я настроил доступ к web интерфейсу Grafana через nginx proxy_pass с помощью следующего конфига. Предварительно получил сертификат let's encrypt.

server {
    listen 443 http2 ssl;
    server_name grafana.site.ru;
    access_log /var/log/nginx/grafana.site.ru-access.log full;
    error_log /var/log/nginx/grafana.site.ru-error.log;

    ssl_certificate /etc/letsencrypt/live/grafana.site.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/grafana.site.ru/privkey.pem;

    limit_conn perip 50;

    location /.well-known {
    root /tmp;
    }

    location / {
        proxy_pass http://10.20.50.7:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
    }
}

server {
    listen 80;
    server_name grafana.site.ru;
    return 301 https://grafana.site.ru$request_uri;
}

Дальше можно идти в web интерфейс и логиниться. Логин и пароль по умолчанию в Grafana - admin / admin.

Grafana login

Подключение Zabbix к Grafana

Теперь нам нужно по очереди подключить все Zabbix сервера, данные из которых мы хотим видеть в Grafana. Для этого идем в Configuration -> Plugins. Мотаем в самый низ и находим там Zabbix.

Zabbix plugin в Grafana

Заходим в него и активируем, нажав Enable. Дальше идем в Data Sources. Опять же, мотаем в самый низ и выбираем Zabbix.

Zabbix Data Source в Grafana

Если у вас в Data Sources нет Zabbix, значит ваша версия Графаны запрещает использование неподписанных плагинов. Чтобы это исправить, добавьте в настройках параметр:

allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource 

и перезапустите Grafana.

Здесь нам нужно заполнить параметры доступа к серверу Zabbix. Ко всем подключаемым серверам должен быть доступ со стороны Grafana. Так же нам нужен будет отдельный пользователь zabbix с доступом ко всем хостам, информацию с которых мы хотим видеть в Grafana.

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

Подключение Zabbix к Grafana
Настройки подключения заббикс в графане

URL должен заканчиваться на скрипт api_jsonrpc.php. То есть полный url до web интерфейса и скрипт на конце. И не забудьте выбрать версию сервера. Там по умолчанию стоит 3-я. Я сначала не заметил этого. Некоторое время пришлось разбираться с тем, почему нет подключения к zabbix. После того, как все настроите, нажимайте Save & Test. Должны увидеть сообщение, что все в порядке.

Успешное подключение к zabbix server

Таким же образом вам нужно добавить все сервера Zabbix, информацию с которых вы хотите видеть в общем дашборде Grafana.

Настройка Multi Dashboard

Осталось добавить данные на единый Dashboard. Для этого идем на главную графаны и добавляем новый dashboard.

Добавление dashboard

Выбираем Choose Visualisation.

Создание visualization

В общем случае достаточно указать только тип визуализации - Zabbix Problems и Data Source. Данные по активным триггерам по всем группам и хостам сразу же появятся. Ниже можно настроить некоторые параметры. К примеру, я не вывожу триггеры типа Information и тэги к ним, так как не использую их.

Настройка визуализации Zabbix problems в Grafana
Параметры отображения триггеров

После того, как все настроите, сохраните дашборд. Следующие панели можно добавлять просто копируя и редактируя уже сделанную. В ней нужно будет поменять только Data Source. В итоге у меня получился вот такой Dashboard из 5-ти основных серверов Zabbix.

Дашборд с триггерами из нескольких zabbix серверов

Я не настраивал никакой красоты. Все сугубо по делу. Просто список, который я могу быстро посмотреть и оценить обстановку.

Визуализация данных Zabbix с помощью Grafana

Если у вас есть желание настроить красивые визуализации для Zabbix в Grafana, то можете начинать это делать. В принципе, тут ничего сложного нет. Мы уже все подготовили. Все интуитивно понятно, не то, что визуализации в Kibana для Elastic. Там я залипаю надолго, когда что-то рисую.

В комплекте плагина alexanderzobnin-zabbix-app есть несколько примеров дашбордов, но из коробки они не везде работают. Надо допиливать под конкретные версии серверов, так как время от времени шаблоны меняются. Для того, чтобы посмотреть готовые дашборды, надо вернуться в Data Source и перейти на вкладку Dashboards.

Встроенные в плагин дашборды

Ну и выполнить их Import. Дальше опять идите на главную и добавляйте импортированный дашборд.

Выбор готового дашборда

Должно получиться примерно так.

Grafana Dashboard для Zabbix Server

Лучше сразу с нуля начинать делать дашборд из тех данных и графиков, которые необходимы именно вам. Я обычно не использую готовое.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

На этом по объединению разных Zabbix серверов в единый дашборд у меня все. На деле настройка оказалась очень простой и быстрой. Разобрался во всем сходу. Не пришлось возиться со всякими мелочами. Завис только в одном месте, когда забыл в Data Source поменять версию сервера с 3 на 4. Подключение не шло. Потом внимательно все проверил и завелось.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

34 комментария

  1. Вебдрик

    А как включить звуковые оповещения в графане для дашбордов с проблемами?

  2. Здравствуйте, подскажите пожалуйста, в Графане можно построить карту сети?

    • Да, можно. Там вообще практически всё, что угодно можно реализовать. Я каких только дашбордов не видел. Но всё это нужно уметь делать и наскоком её не осилить. Надо разбираться, изучать, пробовать.

  3. Сергей

    Здравствуйте! Спасибо за статью, очень подробно все описано. Все вроде бы настроил и работает. Но возникла проблема в отображении графиков при изменении периода. Есть простейший график, который показывает значение реле 0 или 1. Если я беру период "последние 2 дня" то все корректно отображается, а вот если взять период уже "последние 7 дней", то в Графане отображаются только нули. Или беру конкретный период за какие-то сутки, там тоже могут быть одни нули, а за другие сутки уже все корректно. Не подскажете в какую сторону копать?

    • Сергей

      При чем есть графики по датчикам температуры, там таких проблем в принципе нет.

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

      • Сергей

        Решил проблему, может кому пригодиться. Судя по официальному форуму у многих такая проблема есть, а решения нет.
        Решение: В источнике данных Zabbix - Zabbix API details - After выставить значения, которое соответствует периоду сохранения истории. По умолчанию стоит 7 дней. Но при этом графики могут не корректно прорисовываться, исправляем: В настройках самого графика идем - Query options и увеличиваем значение Max data points, до нормальной прорисовки графика. Слишком большое значение не советовал бы ставить, теоретически может сильно нагружать систему.

  4. Константин

    Добрый день, поставил Zabbix 5 + Grafana 7.1.3. Плагин Заббикса пришлось ставить 3.*.* версию с копейками, но в итоге всё засинхронайзил - вроде стек функционирует, спасибо вам за руководство огромное - возник вопрос:
    к примеру, использую в Zabbix стандартные шаблоны мониторинга для дисков и томов, возьмём элемент C:: Used space с вышестоящим шаблоном для Windows. Вывожу по этому "ключу" в Графане на dashboard статистику использования пространства диска С на хосте (Win) - "выбрасываются" какие то странные, не соответствующие реально занимаемому объему на искомом диске, данные. К примеру - С забит на 35% - через графану по этому шаблону и элементу выкидывается 70% на диаграмме. Стандартные шаблоны (включая все их под-элементы) неработоспособны и нужно настраивать мониторинг с нуля даже в таких казалось бы дефолтных вещах или дело в чем то ином?
    Ключ vfs.fs.size[C:,used], что использую.
    Еще, в графе Элементы данных в Zabbix этот и сродни ему у меня активированы - но отображаются красным, напротив некоторых написано, что он "Не обнаруживается" - хотя он обнаруживается и даже что то выдаёт.....
    Пардон, многобукофф)

    • Если кратко, то в графане все дашборды надо настраивать с нуля. И это очень кропотливый процесс. Данные она берет точно как в zabbix, 1 в 1, так что если что-то не соответствует, разбирайтесь с настройкой. Я как то раз заморочился и создал дашборд для линукс сервера на основе стандартного шаблона zabbix. Потратил несколько часов, по факту и не пригодилось. Мне визуализации Zabbix хватает.

      • Константин

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

        • От задач зависит. Если у вас типовое оборудование и системы, то какой смысл выкидывать стандартные шаблоны. Там уже все есть. А если вы настраиваете что-то специфичное, например, мониторинг каких-то контроллеров, где надо с нуля писать шаблон, то имеет смысл убрать все лишнее из системы.

    • Константин

      Спасибо за разъяснение. Может и действительно, попробую просто заббиксом обойтись

  5. Александр

    Та же проблема что и у Павла, версия графаны 7.1.5 плагин заббикс включаю, а в data source его нет, помогите пожалуйста! Ради интереса пробовал версию 7.0, там точно такая же проблема

    • Я не проверял на 7-й версии. Она, судя по всему, вышла недавно. У меня на 6-й нормально работает, как в статье описано. Могу только предложить использовать 6-ю версию.

    • Алексей

      плагин стал unsigned, поэтому в конфиге Grafana нужно прописать в строке "allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource", тогда плагин появится в Data Sources. Единственное, у меня не получается теперь подключиться к заббиксу из графаны, но это думаю у меня какие-то сетевые проблемы.

  6. Владимир, добрый день.
    Подскажите пожалуйста, плагин zalexanderzobnin-zabbix-app в плагинах есть, активируется, а в Data Sources zabbix'а нет.

    • Сам спросил, сам ответил. :-)
      Нужно в конфиге Grafana в строчке "allow_loading_unsigned_plugins = " добавить "alexanderzobnin-zabbix-datasource" и перезапустить Grafana.

  7. Михаил

    Настройка интергации
    Поправьте пожалуйста.

  8. Я прав - один и тот же юзер+пароль должен быть на всех заббиксах для общей панели?

    • Нет, не обязательно. Для каждого Zabbix Server настраивается свое отдельное подключение для сбора данных.

  9. Андрей

    Владимир, подскажите пожалуйста наиболее правильный способ "прикрыть" web интерфейс графаны от свободного доступа?

    Есть вариант добавить в конфиг nginx, который Вы приводили выше auth_basic авторизацию, но то ли баг, то ли фича - если указать произвольный пароль в .httpaswd при проксировании не происходит перенаправление на web интерфейс графаны (где стандартная форма логина и пароля), появляется ошибка что не правильно указаны login, password. Если же в .httpaswd указать точно такой же логин/пароль, как от стандартного web интерфейса - всё начинает работать, т.е. после авторизации nginx перекидывает на dashboard с графиками, а родная форма графаны (где запрос логина/пароля) - не отображается. Так вообще можно оставить или есть другие, более правильные решения?

    • Способов несколько. Самый простой, закрыть доступ на уровне firewall или настроить vpn и разрешить доступ через него.
      Далее можно настроить работу графаны за nginx proxy, статья у меня есть. Надо будет настроить basic auth. Это вариант рабочий 100%. Если у вас не получается, скорее всего что-то не так сделали.

  10. Вышла 7я Grafana. Плагин для Zabbix рабочий. На первый взгляд работает корректно.

  11. Zerox, вы уже поставили версию 5.0?

    • Протестировал уже. Как раз статью подробную только что закончил. Завтра опубликую.

  12. Добрый день, а не планируется сделать связку consul+zabbix?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar