Установка Grafana
В этой статье мы разберем, как устанавливать Grafana на Astra Linux, а так же настроим ldap аутентификацию на ней. Создал я новый сервер с версией Astra Linux 1.8.6.39. В репозиториях Astra Linux есть установочный пакет grafana-server, но правда старой версии. Для работы из коробки подойдет, но в конце статьи 6-ой части цикла, я покажу как можно быстро и культурно обновить grafana до самой последней версии.

Как можно заметить, пакет просто называется grafana. Перейдем к его установке.
sudo apt install -y grafana

Включаем и добавляем службу grafana-server в автозагрузку:
sudo systemctl enable --now grafana-server
Теперь проверяем статус службы:
sudo systemctl status grafana-server

На этом все, как это смешно щас не звучало, но это правда. Установка завершена :D Далее пойдут настройки ldap аутентификации, установка базы данных, настройки графаны итд.
Давайте попробуем открыть графану (переходим по ссылке ниже):

Нас встречает приветствие от графаны и просит авторизоваться. Какой логин и пароль для авторизации? Да, тут конечно нужно глянуть документацию (ну кто ее конечно читает перед сборкой/установкой? Правда же?). Для нетерпеливых, я разместил логин и пароль тут:
Спойлер
Логин - admin, Пароль - admin
А для всех остальных, мы продолжаем. Пойдем в документацию, поищем ответы там.
На главной странице под формой входа, видим как раз ссылку на нее.
Кликаем на нее и попадаем на официальный сайт графаны.
Далее, слева выбираем продукт «Grafana Enterprise».

Ищем раздел установки, а в нем вход в графану.

Тут мы видим вторым пунктом, что на странице входа графаны, логин и пароль admin

Воспользуемся полученными данными и попробуем авторизоваться администратором.

Тут же графана просит придумать новый пароль для локального администратора admin.

После смены пароля, мы попадаем на главную страницу.

Посмотрим на настройки языка.

Как видим, Русского нет. Но у нас старая версия, в 13-ой уже появился Русский язык, а так же есть docker образ старой версии, в которой есть тоже Русский язык. Я пробовал стянуть от туда json конфиг и подкинуть в свою графану (давно это было, не сейчас), он появлялся в меню, но при его выборе становились квадратики вместо букв. Где-то нужно было поиграться с кодировкой, я забросил это дело и работал в English версии. Для изучения может показаться непонятным, но когда уже нарисуешь ни один дашборд, на язык уже не смотришь.
Следующим шагом, мы установим базу данных. Сразу хочу сказать, что устанавливаю базу данных для примера и для сбора и хранения каких то данных или метрик. Пример, для чего нужна отдельная база: у графаны есть своя, локальная (sqlite) база, которая хранит в себе алерты, настройки и пользователей, но она не рассчитана на большие объемы и постоянные обращения к ней. В документации к графане, даже не рекомендуют оставлять sqlite в продакшене, а пеерезжать на postgresql или mariadb. Но я считаю, что ее можно оставить под учетные записи и настройки графаны, а уже все данные и метрики на отдельной. На моей личной практики с большим количеством данных, никаких абсолютно проблем я не заметил с sqlite. Отдельную базу я разворачивал на отдельном сервере, ставил туда postgresql, отдельно сервер под grafana, настраивал связь. Все данные писались в postgresql, а графана уже красиво их рисовала на дашборде.
Установка базы данных Postgresql
Установить базу можно на том же сервере где и графана или на отдельном. Если нагрузка небольшая, то можно на одном сервере.
Запускаем установку базы данных:
sudo apt install postgresql postgresql-contrib -y

После установки postgresq создадим роль и базу. Тут я показываю пример, вы же не пренебрегайте безопасностью, создавайте учетные записи и делайте разграничение прав.
sudo -u postgres psql
Этой командой мы переходим в учетную запись postgres, а потом и в сам postgresql.
sudo -i а потом pdpl-user -i 63 postgres и потом exit.Теперь создаем базу данных:
CREATE DATABASE grafana;
Подключаемся к ней:
\c grafana;
Создаем пользователя (меняем на свой пароль):
CREATE USER grafana_user WITH PASSWORD 'Qwerty12';
Даем полные права на созданную базу для созданной учетной записи:
GRANT ALL ON SCHEMA public TO grafana_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO grafana_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO grafana_user;
Выходим.
\q
Теперь нужно сообщить графане, что мы будем использовать базу данных postgres.
Заходим в файл конфиг и пропишем данные:
sudo vim /etc/grafana/grafana.ini
находим секцию [database] и прописываем по образцу
[database]
type = postgres
host = 127.0.0.1:5432
name = grafana
user = grafana_user
password = ВАШ_ПАРОЛЬ
Соответственно, если у вас база данных на другом сервере, то указываем все реквизиты ее по другому.


Далее, настроим ldap авторизацию. Не покидая конфиг /etc/grafana/grafana.ini ищем секцию [auth.ldap]

Как мы видим из example, нам нужно прописать отдельно ldap.toml файл.
Приводим в соотвествие секцию как указано ниже.
[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
allow_sign_up = true
Данными настройками включили авторизацию ldap и указали где лежат настройки для нее.

Сохраняем и выходим. Далее перезапускаем grafana-server:
sudo systemctl restart grafana-server
Теперь нам нужно настроить ldap.toml.
sudo vim /etc/grafana/ldap.toml

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

Так как у меня развернут контроллер домена, я иду в него и создаю специальную, бесправную учетную запись grafana-ldap, которая будет служить посредником между доменом и графаной, отвечающей за авторизацию и доменных групп.
![]()
В ActiveDirectory я создал пользователя grafana-ldap, накинул ей группу, в которую входят мои пользователи домена.
![]()
Ниже, представлен измененный ldap.toml конфиг под настройки моего домена с учетной записью и группой.

Сохраняем перезапускаем службу:
sudo systemctl restart grafana-server
Итак, пройдемся по настройкам.
В секции [[servers]], не трудно догадаться, мы прописываем контроллер домена. Указываем используется ли ssl, в моем случае - нет. Потом самое важное, указываем полный путь по лесу домена до учетной записи grafana-ldap и ее пароль. Указываем фильтр поиска по sAMAccountName=%s, и search_base_dns. Все остальное по умолчанию. Далее в секции [servers.attibutes] поменял значение у username тоже на sAMAccountName и email со значения email на mail.
Далее идут секции с группами. В графане присутствует три локальных группы: Admin, Editor, View. Думаю тут не сложно догадаться кто есть кто и для чего. Мы можем сразу указать, что если пользователь входит в условно созданную группу grafana-admin, то добавлять такого пользователя локальную группу Admin и так далее. Что я и сделал, но я не стал создавать группу, а решил использовать уже созданную ранее dhome. Указать полный путь до нее в секции [[servers.group_mappings]] и определил ей роль Admin. Все доменные пользователи, входящие в группу dhome домена, при автории будут в группе администраторов графаны. Очень удобно на самом деле, когда у вас очень много пользователей, не нужно заходить в настройки графаны, открывать список пользователей, а потом заходить в конкретного пользователя и настраивать ему роль вручную. Я показал на примере одной группы, как это можно сделать. Давайте проверим.
Попробую залогиниться пользователем dorohoven, который входит в группу dhome.
![]()




Как можно заметить, мы успешно авторизовались доменной учетной записью dorohoven, а так же видим, что у нас полный администраторский доступ к графане и видем плашку LDAP.
На этом подключение авторизации ldap завершена, переходим к подключении базы данных и вывода с нее данных на дашборд.
Подключение базы и вывод с нее данных
Закадром, я состряпал простенький скрипт на python, который подключается к LDAP, высасывает всех пользователей AD и отправляет собранные данные в базу данных grafana в postgresql. Далее мы настроем коннект с postgresql и нарисуем простенький дашборд, который будет выводить собранные нами данные в информативные блоки, а не сухие цифры.
Открваем графану, слева находим «Connections → Add new connection» и ищем в поиске postgres

Нажимаем на «Add new data source»

Задаем произвольное имя подключению.

Задаем параметры подключения.
grafana_db. Честно сказать, я уже не помню почему я использовал другое, наверное потому что имя grafana уже было занято самой графаной.
Выключаем ssl если у вас база лежит там же, где и графана.

Указываем версию postgresql, в моем случае это 15.

Теперь нажимаем «Save & Test».

Если все сделали правильно, то увидим уведомление об успешном подключении.

Попробуем что-нибудь нарисовать. Слева находим «Dashboards»
![]()
Нажимаем на «+ Create Dashboard»

Далее нажимаем «+ Add visualization»

Указываем в качестве источника данных нашу базу данных.


База подключена, настройки визуализации открыты. Тут теперь, как у пилота в самолете, куча кнопок и настроек. На самом деле, все просто, нужно лишь разобраться и понять, что где и куда. Там где надпись No data, это показывается, как будут отображаться наши данные после кручения вертушка с настройками снизу и справа. Соответственно снизу, мы указываем источник данных, можем в графике выбирать какие поля выводить и какие фильтры применять, а можем написать чистый SQL запрос и вывести данные. Справа, колонка отвечает за стиль отображения данных. Это будет таблица или блоки, а может бублики или графики. Соответственно куча настроек для кастомизации. Это минимальная база, дальше вы сами все поймете по ходу действий.
Сейчас я покажу как сделать вывод через графику данных из базы данных и через SQL.
Выбираем таблицу ad_users данных.

Теперь выбираем, что выводить с этой таблицы. Я выбрал * - вывести все столбцы.


А после выполняем SQL через кнопку «Run query».

Получилось непонятно что. Вверху давайте переведем ползунок в Table view. Посмотрим, как данные будут выглядеть в форме таблицы.

Вот, в таблице выглядит неплохо. Но это лишь демонстрация, для отображения в таблице, нужно будет выбрать стиль таблицы. Об этом чуть позже. Теперь давайте выведем лишь одного пользователя с ActiveDirectory.
Перейдем в режим Code и изменим SQL запрос.


Отредактируем его так, чтобы вывести одного пользователя dorohoven и выполним SQL код кнопкой Run query.

В целом, получилось неплохо. Давайте зададим имя визуализации и сохраним наш дашборд.
Сохраняем дашборд

Как говорил ранее, что нужно изменить стиль отображения на табличный, теперь давайте это реализуем.
Меняем на Table.
Вот такая визуализация таблицы из базы данных по ActiveDirectory у нас получилась.

Ну что это такое? Что за название столбцов? Щас исправим. Есть несколько способов: можно переопределить через панель настроек визуализации справа, его я покажу в 5-ой части цикла либо же здесь и сейчас, по быстрому изменим это через SQL запрос.

Вот таким кустарным методом мы помененяли названия столбцов.

Теперь создадим еще одну визуализацию, где сделаем счетчик количества пользователей в контроллере домена ActiveDirectory.

Итог получился вот таким:

На этом данная статья подошла к концу, надеюсь Вам понравилось и увидимся в следующих частях цикла!