В данной статье хочу рассказать, как я использую Графану. Это не будет полное и исчерпывающее руководство по обновлению Grafana. Я просто покажу, как и зачем ее использую я. Приведу несколько своих дашбордов и опишу схему работы этой панели с графиками и метриками.
Введение
У меня уже есть статья про установку grafana и ее интеграцию с заббикс - Подключение Zabbix к 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. Сам дашборд графаны переведен на русский язык, а шаблон Zabbix стандартный - английский. Получилось вот так:
За основу взял какой-то готовый дашборд, уже не помню где. Но сильно его переделал, так как он был под старую версию шаблонов заббикса. Сверху в выпадающем списке можно выбирать различные Data sources и сервера. Один дашборд для всех. В Zabbix такое сделать пока невозможно. Нужно потратить огромное количество времени, чтобы попытаться воспроизвести что-то подобное. Скачать панель можно отсюда - Zabbix-Server.json .
Вот еще один пример моего дашбода. Тут сводная информация по моим сайтам и группам, плюс доход в adsense.
Беглого взгляда на этот дашборд достаточно, чтобы оценить обстановку и не тратить время на ручную проверку всех этих метрик.
А это сводная картинка активных триггеров с нескольких серверов мониторинга.
Я показал несколько общих дашбордов, которые регулярно использую в Grafana. Остальное делается по месту разным заказчикам в случае необходимости. Все в связке с Zabbix. Отдельно графану или в связке с чем-то еще я не использую.
Заключение
Было бы интересно посмотреть на ваши дашбодры в Grafana, если используете их. Особенно в связке с Zabbix. Все остальное меня мало интересует, так как в практической деятельности мне не нужно.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.