Долгое время у меня в голове витала мысль о том, что было бы здорово как-то организовать единый dashboard для нескольких zabbix серверов. До проработки вопроса долго не доходили руки, но в итоге дошли. Сразу же было найдено простое и эффективное решение, о котором ранее просто не задумывался. Далее рассказываю подробно о том, как я объединил в едином дашборде все подопечные серверы zabbix с помощью Grafana.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Введение
Начнем с того, кому и зачем это может быть нужен общий дашборд заббикс серверов в Grafana. Если у вас один сервер Zabbix, то тема для вас совершенно не актуальна. В целом, у Zabbix сейчас своими средствами можно собирать красивые и информативные дашборды прямо из коробки.
У меня в управлении постоянно находится несколько никак не связанных между собой zabbix серверов от разных заказчиков, плюс свои личные. Везде настроены уведомления, в том числе в telegram. Оповещения удобно рассортированы по меткам, чатам, каналам и т.д. С этим никаких проблем нет. Но иногда хочется одним взглядом быстро посмотреть на все активные триггеры всех серверов. Это нужно для того, чтобы быть уверенным, что не забыл отреагировать на что-то важное, где не настроены повторяющиеся уведомления.
Решение вопроса мульти дашборда в zabbix изначально мне виделось очень сложным, так как не представлял, на базе какого готового инструмента это можно было сделать. Пока я не вспомнил про Grafana. Причем, знаю то я ее давно, но использую редко. Она чаще всего с prometheus используется, а у меня основной мониторинг всегда и везде Zabbix. При этом его графических возможностей мне хватает за глаза. За красотой не гонюсь, важен функционал.
Я видел интеграцию Zabbix и Grafana, но как я уже сказал, мне встроенной визуализации данных в заббиксе достаточно. А вот в контексте сбора информации о триггерах в едином дашборде, я графану не рассматривал. Я просто не знал, что в плагине графаны для интеграции с заббиксом есть готовая визуализация для Zabbix Problems.
После того, как узнал, что с помощью Grafana можно будет собрать multi dashboard для zabbix, настроить его было дело техники. Причем не очень сложной. Далее подробно расскажу, как это сделать.
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
То же самое на Debian 10, если предпочитаете его:
Установка 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.
Подключение Zabbix к Grafana
Теперь нам нужно по очереди подключить все Zabbix сервера, данные из которых мы хотим видеть в Grafana. Для этого идем в Configuration -> Plugins. Мотаем в самый низ и находим там Zabbix.
Заходим в него и активируем, нажав Enable. Дальше идем в Data Sources. Опять же, мотаем в самый низ и выбираем Zabbix.
Если у вас в Data Sources нет Zabbix, значит ваша версия Графаны запрещает использование неподписанных плагинов. Чтобы это исправить, добавьте в настройках параметр:
allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource
и перезапустите Grafana.
Здесь нам нужно заполнить параметры доступа к серверу Zabbix. Ко всем подключаемым серверам должен быть доступ со стороны Grafana. Так же нам нужен будет отдельный пользователь zabbix с доступом ко всем хостам, информацию с которых мы хотим видеть в Grafana.
Для теста можете взять того же админа, которым вы подключаетесь через веб интерфейс. Но в реальной эксплуатации рекомендую настроить отдельного пользователя zabbix для grafana с ограниченными правами. Например, сделать их только на чтение, если не планируется взаимодействие с серверами через графану.
URL должен заканчиваться на скрипт api_jsonrpc.php. То есть полный url до web интерфейса и скрипт на конце. И не забудьте выбрать версию сервера. Там по умолчанию стоит 3-я. Я сначала не заметил этого. Некоторое время пришлось разбираться с тем, почему нет подключения к zabbix. После того, как все настроите, нажимайте Save & Test. Должны увидеть сообщение, что все в порядке.
Таким же образом вам нужно добавить все сервера Zabbix, информацию с которых вы хотите видеть в общем дашборде Grafana.
Настройка Multi Dashboard
Осталось добавить данные на единый Dashboard. Для этого идем на главную графаны и добавляем новый dashboard.
Выбираем Choose Visualisation.
В общем случае достаточно указать только тип визуализации - Zabbix Problems и Data Source. Данные по активным триггерам по всем группам и хостам сразу же появятся. Ниже можно настроить некоторые параметры. К примеру, я не вывожу триггеры типа Information и тэги к ним, так как не использую их.
После того, как все настроите, сохраните дашборд. Следующие панели можно добавлять просто копируя и редактируя уже сделанную. В ней нужно будет поменять только Data Source. В итоге у меня получился вот такой Dashboard из 5-ти основных серверов Zabbix.
Я не настраивал никакой красоты. Все сугубо по делу. Просто список, который я могу быстро посмотреть и оценить обстановку.
Визуализация данных Zabbix с помощью Grafana
Если у вас есть желание настроить красивые визуализации для Zabbix в Grafana, то можете начинать это делать. В принципе, тут ничего сложного нет. Мы уже все подготовили. Все интуитивно понятно, не то, что визуализации в Kibana для Elastic. Там я залипаю надолго, когда что-то рисую.
В комплекте плагина alexanderzobnin-zabbix-app есть несколько примеров дашбордов, но из коробки они не везде работают. Надо допиливать под конкретные версии серверов, так как время от времени шаблоны меняются. Для того, чтобы посмотреть готовые дашборды, надо вернуться в Data Source и перейти на вкладку Dashboards.
Ну и выполнить их Import. Дальше опять идите на главную и добавляйте импортированный дашборд.
Должно получиться примерно так.
Лучше сразу с нуля начинать делать дашборд из тех данных и графиков, которые необходимы именно вам. Я обычно не использую готовое.
Заключение
На этом по объединению разных Zabbix серверов в единый дашборд у меня все. На деле настройка оказалась очень простой и быстрой. Разобрался во всем сходу. Не пришлось возиться со всякими мелочами. Завис только в одном месте, когда забыл в Data Source поменять версию сервера с 3 на 4. Подключение не шло. Потом внимательно все проверил и завелось.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
А как включить звуковые оповещения в графане для дашбордов с проблемами?
Здравствуйте, подскажите пожалуйста, в Графане можно построить карту сети?
Да, можно. Там вообще практически всё, что угодно можно реализовать. Я каких только дашбордов не видел. Но всё это нужно уметь делать и наскоком её не осилить. Надо разбираться, изучать, пробовать.
Здравствуйте! Спасибо за статью, очень подробно все описано. Все вроде бы настроил и работает. Но возникла проблема в отображении графиков при изменении периода. Есть простейший график, который показывает значение реле 0 или 1. Если я беру период "последние 2 дня" то все корректно отображается, а вот если взять период уже "последние 7 дней", то в Графане отображаются только нули. Или беру конкретный период за какие-то сутки, там тоже могут быть одни нули, а за другие сутки уже все корректно. Не подскажете в какую сторону копать?
При чем есть графики по датчикам температуры, там таких проблем в принципе нет.
Может проблема в том, что для большого интервала выводится слишком много значений на график, поэтому графана как-то сама усредняет, чтобы была возможность уместить все на графике и показать его.
Решил проблему, может кому пригодиться. Судя по официальному форуму у многих такая проблема есть, а решения нет.
Решение: В источнике данных Zabbix - Zabbix API details - After выставить значения, которое соответствует периоду сохранения истории. По умолчанию стоит 7 дней. Но при этом графики могут не корректно прорисовываться, исправляем: В настройках самого графика идем - Query options и увеличиваем значение Max data points, до нормальной прорисовки графика. Слишком большое значение не советовал бы ставить, теоретически может сильно нагружать систему.
Спасибо за решение.
Вот к сожалению не помогает ( , обновление до last 7.4.3 тож не помогло (
Добрый день, поставил 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 хватает.
Пишут, что вообще лучше все стандартные шаблоны и элементы данных с прототипами удалить из заббикс, чтоб глаз не мозолили, и создать под специфику всё с нуля -а потом уже в графане все это вывести, как вы пишете, тоже с нуля... Какое то масло масленое - представляю, сколько на это уйдёт....
От задач зависит. Если у вас типовое оборудование и системы, то какой смысл выкидывать стандартные шаблоны. Там уже все есть. А если вы настраиваете что-то специфичное, например, мониторинг каких-то контроллеров, где надо с нуля писать шаблон, то имеет смысл убрать все лишнее из системы.
Спасибо за разъяснение. Может и действительно, попробую просто заббиксом обойтись
Та же проблема что и у Павла, версия графаны 7.1.5 плагин заббикс включаю, а в data source его нет, помогите пожалуйста! Ради интереса пробовал версию 7.0, там точно такая же проблема
Я не проверял на 7-й версии. Она, судя по всему, вышла недавно. У меня на 6-й нормально работает, как в статье описано. Могу только предложить использовать 6-ю версию.
плагин стал unsigned, поэтому в конфиге Grafana нужно прописать в строке "allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource", тогда плагин появится в Data Sources. Единственное, у меня не получается теперь подключиться к заббиксу из графаны, но это думаю у меня какие-то сетевые проблемы.
Владимир, добрый день.
Подскажите пожалуйста, плагин zalexanderzobnin-zabbix-app в плагинах есть, активируется, а в Data Sources zabbix'а нет.
Сам спросил, сам ответил. :-)
Нужно в конфиге Grafana в строчке "allow_loading_unsigned_plugins = " добавить "alexanderzobnin-zabbix-datasource" и перезапустить Grafana.
Спасибо за полезную инфу.
Настройка интергации
Поправьте пожалуйста.
Спасибо, поправил.
Наверное поправили не везде
Настройка интергации Zabbix в Grafana | serveradmin.ru
Я прав - один и тот же юзер+пароль должен быть на всех заббиксах для общей панели?
Нет, не обязательно. Для каждого Zabbix Server настраивается свое отдельное подключение для сбора данных.
Владимир, подскажите пожалуйста наиболее правильный способ "прикрыть" web интерфейс графаны от свободного доступа?
Есть вариант добавить в конфиг nginx, который Вы приводили выше auth_basic авторизацию, но то ли баг, то ли фича - если указать произвольный пароль в .httpaswd при проксировании не происходит перенаправление на web интерфейс графаны (где стандартная форма логина и пароля), появляется ошибка что не правильно указаны login, password. Если же в .httpaswd указать точно такой же логин/пароль, как от стандартного web интерфейса - всё начинает работать, т.е. после авторизации nginx перекидывает на dashboard с графиками, а родная форма графаны (где запрос логина/пароля) - не отображается. Так вообще можно оставить или есть другие, более правильные решения?
Способов несколько. Самый простой, закрыть доступ на уровне firewall или настроить vpn и разрешить доступ через него.
Далее можно настроить работу графаны за nginx proxy, статья у меня есть. Надо будет настроить basic auth. Это вариант рабочий 100%. Если у вас не получается, скорее всего что-то не так сделали.
Вышла 7я Grafana. Плагин для Zabbix рабочий. На первый взгляд работает корректно.
В контексте данной задачи, версия Grafana не актуальна. А с 5-й версией zabbix этот плагин работает? Я не проверял.
Да. На данный момент использую zabbix 5.
Zerox, вы уже поставили версию 5.0?
Протестировал уже. Как раз статью подробную только что закончил. Завтра опубликую.
Добрый день, а не планируется сделать связку consul+zabbix?
Какой вопрос решает эта связка? Я не знаком с consul.