В данной статье хочу рассказать, как я использую Графану. Это не будет полное и исчерпывающее руководство по обновлению Grafana. Я просто покажу, как и зачем ее использую я. Приведу несколько своих дашбордов и опишу схему работы этой панели с графиками и метриками.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Введение
У меня уже есть статья про установку grafana и ее интеграцию с заббикс - Подключение Zabbix к Grafana. Со времен написания той статьи я немного расширил использование графаны. Стал больше и чаще делать дашборды для zabbix. Причем не для того, чтобы наводить красоту или кого то удивлять невероятными дашбордами. В графане просто их быстрее и удобнее делать.
В дашборды Zabbix только недавно завезли copy-paste, да еще импорт и экспорт. Без этого раньше вообще мучение было дашборды делать. Очень много времени уходило. Сейчас команда Zabbix старается наверстать упущенное и немного развивает свою визуализацию, но лично я уже привык к Grafana, так что использую ее достаточно часто.
Недавно обновлял Grafana с версии 6 на 7, так что решил поделиться с вами информацией. Не сказать, что мне сильно нужны нововведения 7-й версии (совсем не нужны). Тем не менее, не хочется сильно отставать по релизам, так что я все равно периодически обновляюсь на новые версии.
Обновление Grafana с 6 на 7
Я использую Grafana фактически как stateless приложение. Из всех настроек мне нужны только Data Sources и Dashboards. Меняются они не часто, храню их у себя в виде json конфигов, штатно выгруженных из графаны. Отредактирую что-то и сразу выгружаю в свое хранилище конфигов. При таком подходе идеально работает установка и запуск в Docker. Собственно, об этом я и рассказываю в своей статье - установка grafana.
Перед графаной ставится реверс прокси nginx в режиме proxy_pass. Таким образом, обновление графаны сводится к выгрузке конфигов, запуску новой чистой графаны 7-й версии в docker и замене бэкенда в настройках nginx на новую версию. Вот конфиг nginx, который я использую для проксирования запросов в grafana.
server { listen 443 http2 ssl; server_name gr.serveradmin.ru; access_log /var/log/nginx/gr.serveradmin.ru-access.log full; error_log /var/log/nginx/gr.serveradmin.ru-error.log; ssl_certificate /etc/letsencrypt/live/gr.serveradmin.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/gr.serveradmin.ru/privkey.pem; location /.well-known { root /tmp; } location / { allow 111.111.111.111; allow 222.222.222.222; allow 333.333.333.333; deny all; proxy_pass http://10.20.50.7:3001; 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 gr.serveradmin.ru; return 301 https://gr.serveradmin.ru$request_uri; }
При желании, ограничение по ip заменяется на basic auth. Я непубличные сервисы стараюсь в интернет не показывать без крайней необходимости. Иногда это вызывает неудобства, но безопасность и спокойствие мне важнее.
Так что обновляя grafana, я просто запускаю последнюю версию в докере и направляю через nginx трафик на нее:
docker run -d -p 3001:3000 --name=grafana7 -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,alexanderzobnin-zabbix-app" grafana/grafana:7.4.3-ubuntu
Чтобы не ставить вручную плагины, я сразу же их добавляю при первом запуске. Если вам нужен докер, то у меня есть статья про установку docker в centos.
Импорт и экспорт Data Sources в Grafana
По умолчанию, через веб интерфейс графаны не получится экспортировать Data Sources. Я не понимаю, почему разработчики пожадничали с подобной кнопкой, по аналогии с Dashboards. Большой проблемы в этом нет, так как их можно выгрузить в json через curl. Я это делаю вот так:
# curl -H "Content-Type: application/json" -s "https://gr.serveradmin.ru/api/datasources" -u admin:password
На выходе будет неудобочитаемая лапша. Машине все равно, но хочется и человеческий глаз порадовать, чтобы можно было хоть что-то разобрать. Для этого можно воспользоваться утилитой jq.
# dnf install epel-release && dnf install jq
или
# apt install jq
Преобразуем вывод с ее помощью:
# curl -H "Content-Type: application/json" -s "https://gr.serveradmin.ru/api/datasources" -u admin:password | jq .
Другое дело. Можно посмотреть, отредактировать или какие-то Data Sources удалить.
Итак, забрали Data Sources со старой версии, теперь импортируем в новую. Опять с помощью curl.
curl -X POST -H "Content-Type: application/json" --data '{ "id": 3, "orgId": 1, "name": "Zabbix", "type": "alexanderzobnin-zabbix-datasource", "typeLogoUrl": "public/plugins/alexanderzobnin-zabbix-datasource/img/icn-zabbix-datasource.svg", "access": "proxy", "url": "https://zabbix.firma.ru/zabbix/api_jsonrpc.php", "password": "", "user": "", "database": "", "basicAuth": false, "isDefault": false, "jsonData": { "addThresholds": false, "alerting": false, "alertingMinSeverity": 3, "dbConnectionDatasourceId": null, "dbConnectionEnable": false, "disableReadOnlyUsersAck": false, "password": "pass_secret", "trends": true, "username": "grafana", "zabbixVersion": 5 }, "readOnly": false }' "http://grafana.site.ru/api/datasources" -u admin:password
То есть просто через POST запрос передаем данные через ключ --data.
Импорт и экспорт Dashboard в Grafana
Перед обновлением grafana так же забираем из нее нужные дашборды. У меня обычно их не много, так как это больше вспомогательный инструмент для каких-то общих дашбордов, которые неудобно делать в Zabbix. Для оперативной работы чаще всего пользуешься самим заббиксом.
Для того, чтобы экспортировать dashboard из Grafana, открываем его и нажимаем на Share dashboard. Там переходим на вкладку Export и сохраняем в файл.
В новой версии импортируем штатно с главной страницы с дашбордами.
Если хотите автоматизировать экспорт и импорт дашбодров grafana с помощью curl, то никаких проблем. Делается это следующим образом. Сначала смотрим список всех дашбордов:
# curl -H "Content-Type: application/json" -s "https://gr.serveradmin.ru/api/search" -u admin:password | jq .
Выбираете нужный dashboard и экспортируете его, сохраняя сразу в файл:
# curl -H "Content-Type: application/json" -s "https://gr.serveradmin.ru/api/dashboards/db/zabbix-polnyi-status-servera" -u admin:password | jq . >> ~/zabbix-polnyi-status-servera.json
Импортировать dashboard можно следующим образом:
# cat ~/zabbix-polnyi-status-servera.json | jq '. + {overwrite: true}' | curl -X POST -H "Content-Type: application/json" -s "https://gr.serveradmin.ru/api/dashboards/db" -u admin:password /api/dashboards/db --data @-
Этой информации достаточно, чтобы автоматизировать процесс в случае необходимости. У меня такой необходимости не было, так что я не заморачивался этой темой. Но она легко гуглится. Готовых скриптов полно.
Пример некоторых дашбордов
Я как-то заморочился и сделал обзорный дашборд в Grafana для Linux сервера. Работает с последними версиями стандартного шаблона Zabbix, который появился начиная с версии 4.4 (дашборд актуализирован для стандартного шаблона ветки 6.0). Сам дашборд графаны переведен на русский язык, а шаблон Zabbix стандартный - английский. Получилось вот так:
За основу взял какой-то готовый дашборд, уже не помню где. Но сильно его переделал, так как он был под старую версию шаблонов заббикса. Сверху в выпадающем списке можно выбирать различные Data sources и сервера. Один дашборд для всех. В Zabbix такое сделать пока невозможно. Нужно потратить огромное количество времени, чтобы попытаться воспроизвести что-то подобное. Скачать панель можно отсюда - grafana-zabbix-linux-server.json.
Вот еще один пример моего дашбода. Тут сводная информация по моим сайтам и группам, плюс доход в adsense.
Беглого взгляда на этот дашборд достаточно, чтобы оценить обстановку и не тратить время на ручную проверку всех этих метрик.
А это сводная картинка активных триггеров с нескольких серверов мониторинга.
Я показал несколько общих дашбордов, которые регулярно использую в Grafana. Остальное делается по месту разным заказчикам в случае необходимости. Все в связке с Zabbix. Отдельно графану или в связке с чем-то еще я не использую.
Заключение
Было бы интересно посмотреть на ваши дашбодры в Grafana, если используете их. Особенно в связке с Zabbix. Все остальное меня мало интересует, так как в практической деятельности мне не нужно.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
А каким образом обновить Графану c 9 на 10 версию, если она установлена через apt? Суть проблемы - репы графаны нынче не доступны, потому что
https://community.grafana.com/t/cant-download-grafana-9-0-2-from-russia/68391
Спасибо!
Скачайте через vpn необходимый пакет и установите вручную. Либо воспользуйтесь каким-нибудь зеркалом репозитория. Правда я такой не знаю.
Статья полностью актуальна для обновления с 7-й версию на 10-ю. Проверил лично.
Подскажите, а с помощью чего вы перевели на русский язык дашборды и есть возможность/идеи как полностью её локализовать?
Дашборды вручную создаются. Просто зашел в каждый виджет и переименовал заголовок.
А будет ли инструкция запуска zabbix из docker?
А что там особенного, что требуется отдельная инструкция? Запустил контейнер и все. В этом суть докера. Возможно когда выйдет 6.0 включу докер в стандартную статью про установку и настройку.
Особенного много. Во-первых, желательно клонировать официальный git-репозиторий. Во-вторых, сделать копию нужного yaml и отредактировать его, убрав лишние компоненты, иначе будет куча контейнеров с java-gateway, zabbix-proxy с БД и т.п. В-третьих, zabbix-agent запущен не на localhost. И много других нюансов, включая обновления всего этого.
Если запуск в docker создает столько проблем и лишних телодвижений, то возможно zabbix нет смысла запускать в нем. Докер призван упрощать жизнь, а не усложнять. Я лично вообще не вижу плюсов запуска zabbix в docker. Это же не приложение, которые надо быстро деплоить в прод по 5 раз в день с автотестами и т.д.
Я лишь указал, что есть свои особенности. Из больших преимуществ установки в докер - лёгкая переносимость на другой хост. Достаточно одну папку скопировать.
А заббикс сам состоит из одного пакета и конфига к нему. Так же переносится установкой пакета и копированием конфига.
В общем, я понял, что там есть нюансы. Надо будет посмотреть.
Я вернулся с 7-й на 6-ю версию графаны потом что:
1. бесконечная ошибка "cannot read property '1' of null" на самых разных панелях
2. крайне неудачное оформление редактора панелей вместо разных окон queries, visualization, general - все стало на одном экране
Редактор панелей мне тоже показался менее удобным. Не понравился. Но откатываться назад не вариант. Не будешь же теперь всегда сидеть на 6-й версии. Все равно придется когда-то обновиться. Я сам тоже ждал какое-то время, потому что реально для себя никаких плюсов в 7-й версии не увидел. Некоторые шаблоны переделывать пришлось, потому что типы визуализации изменились.