Home » Devops » Обновление Grafana

Обновление Grafana

В данной статье хочу рассказать, как я использую Графану. Это не будет полное и исчерпывающее руководство по обновлению Grafana. Я просто покажу, как и зачем ее использую я. Приведу несколько своих дашбордов и опишу схему работы этой панели с графиками и метриками.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Введение

У меня уже есть статья про установку 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 в Grafana

Другое дело. Можно посмотреть, отредактировать или какие-то 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 и сохраняем в файл.

Экспорт Dashboard в Grafana

В новой версии импортируем штатно с главной страницы с дашбордами.

Импорт Dashboard в Grafana

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

Zabbix Server Dashboard в Grafana

За основу взял какой-то готовый дашборд, уже не помню где. Но сильно его переделал, так как он был под старую версию шаблонов заббикса. Сверху в выпадающем списке можно выбирать различные Data sources и сервера. Один дашборд для всех. В Zabbix такое сделать пока невозможно. Нужно потратить огромное количество времени, чтобы попытаться воспроизвести что-то подобное. Скачать панель можно отсюда - Zabbix-Server.json.

Вот еще один пример моего дашбода. Тут сводная информация по моим сайтам и группам, плюс доход в adsense.

Custom dashboard in grafana

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

А это сводная картинка активных триггеров с нескольких серверов мониторинга.

Несколько серверов Zabbix в одном дашборде Grafana

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

Заключение

Было бы интересно посмотреть на ваши дашбодры в Grafana, если используете их. Особенно в связке с Zabbix. Все остальное меня мало интересует, так как в практической деятельности мне не нужно.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

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

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

Автор Zerox

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

8 комментариев

  1. Аватар

    А будет ли инструкция запуска zabbix из docker?

    • Zerox

      А что там особенного, что требуется отдельная инструкция? Запустил контейнер и все. В этом суть докера. Возможно когда выйдет 6.0 включу докер в стандартную статью про установку и настройку.

      • Аватар

        Особенного много. Во-первых, желательно клонировать официальный git-репозиторий. Во-вторых, сделать копию нужного yaml и отредактировать его, убрав лишние компоненты, иначе будет куча контейнеров с java-gateway, zabbix-proxy с БД и т.п. В-третьих, zabbix-agent запущен не на localhost. И много других нюансов, включая обновления всего этого.

        • Zerox

          Если запуск в docker создает столько проблем и лишних телодвижений, то возможно zabbix нет смысла запускать в нем. Докер призван упрощать жизнь, а не усложнять. Я лично вообще не вижу плюсов запуска zabbix в docker. Это же не приложение, которые надо быстро деплоить в прод по 5 раз в день с автотестами и т.д.

          • Аватар

            Я лишь указал, что есть свои особенности. Из больших преимуществ установки в докер - лёгкая переносимость на другой хост. Достаточно одну папку скопировать.

            • Zerox

              А заббикс сам состоит из одного пакета и конфига к нему. Так же переносится установкой пакета и копированием конфига.
              В общем, я понял, что там есть нюансы. Надо будет посмотреть.

  2. JMLabs

    Я вернулся с 7-й на 6-ю версию графаны потом что:
    1. бесконечная ошибка "cannot read property '1' of null" на самых разных панелях
    2. крайне неудачное оформление редактора панелей вместо разных окон queries, visualization, general - все стало на одном экране

    • Zerox

      Редактор панелей мне тоже показался менее удобным. Не понравился. Но откатываться назад не вариант. Не будешь же теперь всегда сидеть на 6-й версии. Все равно придется когда-то обновиться. Я сам тоже ждал какое-то время, потому что реально для себя никаких плюсов в 7-й версии не увидел. Некоторые шаблоны переделывать пришлось, потому что типы визуализации изменились.

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

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.