Установка и настройка Grafana

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




Grafana — инструмент с открытым исходным кодом для визуализации данных из различных систем сбора статистики. Используется для представления в графическом виде временных рядов и текстовых данных.




Grafana поддерживает установку на самые популярные операционные системы: Linux (Debian, Ubuntu, CentOS, Fedora, OpenSuse, RedHat), Mac и Windows. Допустимыми базами данных, в которых возможно хранение данных о пользователях и дашбордах, являются SQLite (используется по умолчанию), MySQL и PostgreSQL. В качестве демонстрационных серверов будем использовать «Облачные серверы» с операционными системами CentOS Stream и Ubuntu, на которые установим Grafana с базой данных SQLite.




Перед началом установки Grafana, подготовим серверы. В консоли управления Selectel перейдём в раздел Облачная платформа и нажмём кнопку Создать сервер.







На следующем представлении выберем готовую конфигурацию сервера с 1 vCPU и 1 ГБ RAM с операционной системой CentOS 8 64-bit.







Наш сервер будет иметь 10 ГБ на жестком диске. Для целей демонстрации этого достаточно. Прокручиваем вниз и нажимаем кнопку Создать. Аналогичным образом создадим сервер с Ubuntu 20.04 LTS 64-bit.







После проделанных манипуляций оба сервера появятся в списке доступных. Приступим к установке Grafana.







Установка Grafana на CentOS Stream




Установка Grafana на CentOS Stream выполняется из репозитория разработчиков. Скачать дистрибутив можно также с официального сайта. Создадим новую конфигурацию репозитория:




sudo nano /etc/yum.repos.d/grafana.repo




Впишем в этот файл следующие переменные со значениями:




[grafana]

name=grafana

baseurl=https://packages.grafana.com/oss/rpm

repo_gpgcheck=1

enabled=1

gpgcheck=1

gpgkey=https://packages.grafana.com/gpg.key

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt




Далее установим Grafana:




sudo yum install grafana -y




После установки включаем автозагрузку и запускаем демон Grafana:




sudo systemctl enable grafana-server




sudo systemctl start grafana-server




Установка завершена. Grafana на Ubuntu 20.04 готова к использованию. Проверим текущий статус сервиса:




sudo systemctl status grafana-server




В результате получим вывод:




grafana-server.service - Grafana instance

   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)

   Active: active (running) since Mon 2021-01-25 09:48:04 MSK; 5s ago




Установка Grafana на Ubuntu 20.04




На Ubuntu Grafana устанавливается из репозитория производителя. Скачаем GPG-ключ и добавим его в список надежных:




wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -




После этого добавим в систему репозиторий Grafana:




sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"




Далее обновляем кэш APT и установим Grafana:




sudo apt update

sudo apt install grafana




После установки включаем автозагрузку и запускаем демон Grafana:








sudo systemctl enable grafana-server

sudo systemctl start grafana-server




Установка завершена. Grafana на Ubuntu 20.04 готова к использованию. Проверим текущий статус сервиса:




sudo systemctl status grafana-server




В результате получим вывод:




grafana-server.service - Grafana instance

   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)

   Active: active (running) since Mon 2021-01-25 09:44:26 MSK; 10s ago




Настройка брандмауэра для доступа к Grafana




По умолчанию Grafana доступна на порту 3000. При использовании firewalld или iptables, необходимо разрешить сетевой доступ к этому порту из внешнего мира.




Набор команд для firewalld (добавление нового правила и перезагрузка сервиса firewalld для применения конфигурации):




firewall-cmd --zone=public --add-port=3000/tcp --permanent

systemctl reload firewalld




Набор команд для iptables:




nano /etc/sysconfig/iptables




Вписываем в раздел OUTPUT ACCEPT следующую строку:




-A INPUT -p tcp -m tcp --dport 3000 -m state --state NEW -j ACCEPT




И перезапускаем iptables:




sudo systemctl restart iptables




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







Если не удается войти в Grafana или вы поменяли пароль и не можете его вспомнить, через CLI административный пароль Web-интерфейса можно сбросить:




grafana-cli admin reset-admin-password --homepath "/usr/share/grafana" новый_пароль




После выполнения команды выше, можно входить с новым паролем.




Источники данных Grafana и установка плагинов




Grafana поддерживает из коробки различные источники данных:




  • Prometheus,
  • Graphite,
  • OpenTSDB,
  • InfluxDB,
  • Elasticsearch и другие.




Полный список можно посмотреть в документации. Перечень встроенных источников данных может быть расширен при помощи сторонних плагинов. Один из таких плагинов — плагин Zabbix для Grafana. Мониторинг — одно из основных назначений использования Grafana.







Установим этот плагин и добавим его в Grafana.




grafana-cli plugins install alexanderzobnin-zabbix-app




Теперь перезагрузим сервис Grafana:




systemctl restart grafana-server




В интерфейсе Grafana перейдём в Configuration -> Plugins и обнаружим здесь плагин для Zabbix.







Перейдем к настройке плагина и нажмём на кнопку Enable.







С момента включения плагина, в меню Data Sources появится новый источник данных — Zabbix. Нажмём на кнопку Select и настроим источник данных.







В настройках плагина укажем URL-адрес, имя пользователя и пароль для доступа по API к Zabbix.







Нажимаем на кнопку Save & Test и получаем подтверждение корректности настроек.







С этого момента данных из Zabbix могут быть использованы для создания визуализаций.




Создание и настройка панелей и дашбордов




Панели и дашборды — основные сущности представлений внутри Grafana. Каждый дашборд состоит из набора панелей. Для создания дашбордов перейдём в представление Dashboards и нажмём на кнопку New Dashboard.







На следующем шаге будет предложено добавить на дашборд новую панель.







Grafana имеет встроенные панели, которые можно сразу начинать использовать. По умолчанию представлены следующие типы:




  • Graph — панель с графиками с возможностью комбинировать несколько метрик на одной панели.
  • Stat (ранее SingleStat) — панель с одиночным графиком и возможностью отображения моментального значения метрики.
  • Gauge — панель в формате спидометра, есть возможность ограничить верхнее значение на шкале.
  • Bar Gauge — панель с возможностью отображения нескольких метрик на вертикальной гистограмме.
  • Table — панель с представлением в виде таблицы, на которой можно отображать значения нескольких метрик.
  • Text — панель для отображения произвольного текста (подписи).
  • Heatmap — панель для отображения тепловой карты значений метрик.
  • Alert list — панель для отображения событий из внешних систем.
  • Dashboard list — комбинированная панель для отображения дашбордов, добавленных в избранное.
  • News — панель для отображения новостной ленты из внешних источников.
  • Zabbix problems — панель для отображения событий из системы мониторинга Zabbix.
  • Logs — панель для отображения строчек лога, которые собираются одной из внешних систем.







Далее выберем в выпадающем меню источник данных Zabbix и укажем группу, хост, приложение и элемент данных. Если всё выполнено правильно — на графике появятся данные.







Grafana поддерживает различные типы визуализаций:




  • графические,
  • табличные,
  • гистограммы,
  • тепловые карты,
  • карты сетевого взаимодействия в Grafana и другие.




При создании новой панели, в правой части экрана в разделе Visualization есть возможность выбрать тип визуализации. Перейдем к созданию SingleStat (отображается как Stat) — панели с комбинацией численного и графического представлений. После ввода специфических данных для Zabbix, нажмём кнопку Apply.







В результате выполненных действий, увидим на дашборде две панели.







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







На изображении ниже показаны настройки дашборда.







Импорт и экспорт дашбордов




В Grafana можно импортировать и экспортировать дашборды. Для импорта нужно перейти в представление Dashboards и нажать кнопку Import.







Для импорта доступны две опции: загрузка произвольного JSON и импорт готовых дашбордов с grafana.com. Во втором случае нужно указывать ID дашборда.







Для экспорта любого дашборда, необходимо нажать на специальную иконку в верхней части экрана и далее нажать Save to file. Дашборд будет сохранен в формате JSON.







Обратный прокси-сервер и SSL




Для настройки SSL в Grafana необходимо использовать обратный прокси-сервер. В этом разделе мы расскажем как настроить такой прокси на базе Nginx. Для целей демонстрации мы зарегистрировали домен grafana.tk, для которого выпустили специальный сертификат Let’s Encrypt.







После создания сервера мы настроили веб-сервер Nginx для работы через SSL. Осталось перенаправить трафик с него на порт 3000, по которому доступна Grafana. Для этого откроем конфигурационный файл веб-сервера.




sudo nano /etc/nginx/sites-available/grafana.tk




В этом файле будем работать с этим блоком конфигурации:




...

        location / {

                try_files $uri $uri/ =404;

        }

...




Заменим его на следующий:




...

    location / {

        proxy_pass http://127.0.0.1:3000;

    }

...




Таким образом мы настроили переадресацию на локальный порт 3000. Теперь можно проверить корректность конфигурации Nginx:




sudo nginx -t




Осталось перезапустить Nginx:




sudo systemctl reload nginx




Теперь наша тестовая Grafana доступна по URL https://grafana.tk. Проверим:







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




Конфигурационный файл Grafana




Для тонкой настройки Grafana, можно использовать конфигурационный файл (по умолчанию /etc/grafana/grafana.ini). Здесь хранятся параметры, которые можно менять при необходимости. Рассмотрим основные блоки этого файла.




[paths]




data




Директория, в которой Grafana хранит базу данных sqlite3 и другие данные. Эта директория обычно задаётся в стартовом скрипте init.d.




logs




Директория, в которой Grafana хранит логи. Эта директория обычно задаётся в стартовом скрипте init.d.




[server]




http_addr




IP-адрес, на котором будет доступен веб-интерфейс Grafana. Если параметр не указан, то интерфейс будет доступен по всем сетевым интерфейсам сервера.




http_port




Порт, на котором будет доступен веб-интерфейс Grafana. По умолчанию номер порта 3000. Если нужно использовать порт 80, можно настроить переадресацию в iptables:




sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000




Для переадресации можно также использовать веб-сервер Nginx или Apache.




protocol




Протокол, по которому будет доступна Grafana. Варианты http или https.




domain




Может использоваться только вместе с опцией root_url (см. ниже). Важно, если вы используете аутентификацию через GitHub или Google OAuth.




enforce_domain




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




root_url




Полный URL-адрес для доступа к Grafana через веб-браузер. Важно, если вы используете аутентификацию через GitHub или Google OAuth.




static_root_path




Путь к директории, в которой находятся файлы HTML, JS и CSS.




cert_file




Директория с файлом сертификата (если доступ к Grafana — https).




cert_key




Директория с файлом ключа (если доступ к Grafana осуществляется по протоколу https).




[database]




Grafana нужна база данных для хранения пользователей, дашбордов и других данных. По умолчанию используется sqlite3, которая включена в дистрибутив Grafana.




type




Поддерживаются mysql, postgres или sqlite3 на выбор.




path




Параметр применим только к базе данных sqlite3. Путь к файлу данных.




host




Параметр применим только к MySQL или Postgres. Включает IP-адрес или hostname и номер порта. Например, для MySQL запущенной на одном сервере с Grafana: host = 127.0.0.1:3306




name




Имя базы данных Grafana.




user




Имя пользователя базы данных (не применимо к sqlite3).




password




Пароль пользователя базы данных (не применимо к sqlite3).




ssl_mode




Применимо только к postgres. Доступны опции: disable, require или verify-full.




[security]




admin_user




Имя привилегированного пользователя Grafana. По умолчанию admin.




admin_password




Пароль привилегированного пользователя Grafana. По умолчанию admin.




login_remember_days




Количество дней, в течении которых не требуется повторный ввод логина и пароля.




disable_gravatar




Отключение пользовательской иконки. Устанавливается в true для отключения. По умолчанию имеет значение false.




[users]




allow_sign_up




Устанавливается в false для предотвращения создания новых учетных записей действующими пользователями.




allow_org_create




Устанавливается в false для предотвращения создания новых организаций действующими пользователями. По умолчанию имеет значение true.




auto_assign_org




Устанавливается в true для автоматического добавления новых пользователей в основную организацию (id 1). Когда установлено в false, новые пользователи добавляются в новые организации, которые создаются автоматически.




auto_assign_org_role




Роль новых пользователей будет привязана к основной организации.




[auth.anonymous]




enabled




Устанавливается в true для включения анонимного доступа. По умолчанию находится в значении false




org_name




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




org_role




Указывает роль для анонимных пользователей. По умолчанию Viewer, а другие доступные Editor и Admin.




[auth.basic]




enabled




Когда установлено значение true (по умолчанию) http api будет принимать соединения с флагом basic authentication.




[auth.ldap]




enabled




Устанавливается в true для включения интеграции с LDAP (по умолчанию: false).




config_file




Путь к конфигурационному файлу LDAP (по умолчанию: /etc/grafana/ldap.toml).




[auth.proxy]




Эта функция разрешает аутентифицироваться в обратном прокси.




enabled




По умолчанию установлено в false.




header_name




По умолчанию установлено в X-WEBAUTH-USER.




header_property




По умолчанию имя пользователя, но также может принимать значение адреса электронной почты.




auto_sign_up




Устанавливается в значение true для включения автоматического входа пользователей, которые отсутствуют в Grafana DB. По умолчанию установлено значение true.




[session]




provider




Валидные значения: memory, file, mysql, postgres. По умолчанию установлено значение file.




provider_config




Эта опция должна быть сконфигурирована отдельно в зависимости от того, какой тип провайдера сессии установлен.




  • file: путь к файлу с сессиями, например, data/sessions.
  • mysql: go-sql-driver/mysql dsn config string, например, user:password@tcp(127.0.0.1:3306)/database_name
  • postgres: ex: user=a password=b host=localhost port=5432 dbname=c sslmode=disable




cookie_name




Имя сессионного cookie в Grafana.




cookie_secure




Устанавливается в true если Grafana находится только за HTTPS-прокси. По умолчанию установлено в значение false.




session_life_time




Как долго длится сессия в секундах. По умолчанию 86400 секунд (24 часа).




[analytics]




reporting_enabled




Когда опция включена, Grafana будет отправлять анонимную статистику на stats.grafana.org. Никакие IP-адреса не записываются. Данные отправляются каждые 24 часа. По умолчанию установлено в true.




google_analytics_ua_id




Если вы хотите отслеживать активности в Grafana при помощи Google analytics, укажите ваш Universal Analytics ID. По умолчанию эта функция отключена.




[dashboards.json]




Если у вас есть система, которая автоматически строит дашборды из JSON-файлов, вы можете включить эту опцию, чтобы новые дашборды были доступны через поиск в Grafana.




enabled




Значение true или false. По умолчанию выключено.




path




Полный путь к директории, содержащей JSON-файлы с дашбордами.




Заключение




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




Источник: https://selectel.ru/blog/install-and-setup-grafana/



2021-08-15T21:15:55
Software