GRAFANA

Визуализация и анализ данных производится в Grafana. Переходим по адресу http://servername:81/grafana. Попадаем на страницу авторизации. По умолчанию логин/пароль admin/admin.

register imageОкно авторизации Grafana

Открываем Home -> Dashboards -> Plan-r.

register imageОткрытие встроенного дашборда PLAN-R

Данный дашборд является преднастроенным и сразу будет отображать логи с первого включения системы. Будет работать только при условии наличия переменной среды EXTEND_LOGS=true.

register imageПример вывода дашборда PLAN-R

Для просмотра логов со всех контейнеров нажмите Explore ->Label filters ->Select label (service_name) -> Select value(planr) ->Run Query.

register imageПросмотр логов со всех контейнеров

Для просмотра логов нужного контейнера (например, planr-proxy-1) можно воспользоваться JSON парсером. Для этого нажмите hint: add json parser ->Operations ->Label filters ->Label filter expression ->Label (container_name) ->Value (/planr-proxy-1) ->Run query

register imageПросмотр логов нужного контейнера

Чтобы сохранить логи в файл, нажмите на Downloads и выберите формат сохраняемого файла

register imageСохранение логов

Чтобы создать нового пользователя, нажмите Administration -> Users and access -> Users -> New user -> Create user

register imageСоздание нового пользователя

Добавляем в Grafana LDAP-авторизацию, интеграция с Active Directory https://grafana.com/docs/grafana/next/setup-grafana/configure-security/configure-authentication/ldap/?src=FB&plcmt=footer

Создаем учетную запись в AD, с правами на чтение пользователей, от которой будут выполняться запросы в сторону LDAP.

register image

Следующим шагом создаем файл ldap.toml, на хосте с докером. Он должен находится по пути /opt/dpmm/plan/, а также рядом с файлом docker-compose.

[servers]
# Основные настройки подключения к LDAP/AD серверу
host = "10.10.22.12"  # IP-адрес или доменное имя контроллера домена
port = 636  # Порт для LDAPS (защищенное соединение LDAP через SSL). Для подключения без SSL используется 389.
use_ssl = true  # Использовать SSL/TLS для шифрования соединения
start_tls = false  # Не использовать STARTTLS (уже используем SSL напрямую)
ssl_skip_verify = true  # Не проверять SSL сертификат (не рекомендуется для production)

# Учетные данные для подключения к AD
bind_dn = "cn=ldap,cn=Users,dc=dpractices,DC=local"  # Учетная запись для подключения к LDAP
bind_password = "password"  # Пароль для указанной учетной записи

# Настройки поиска пользователей
search_filter = "(|(sAMAccountName=%s)(displayName=%s))"  # Фильтр поиска по логину или имени
search_base_dns = ["DC=dpractices,DC=local"]  # Базовый DN для поиска (всё дерево домена)

# Маппинг атрибутов AD на поля пользователя в Grafana
[servers.attributes]
name = "givenName"  # Имя пользователя (атрибут givenName в AD)
surname = "sn"  # Фамилия (атрибут sn в AD)
username = "sAMAccountName"  # Логин (атрибут sAMAccountName в AD)
email = "mail"  # Email (атрибут mail в AD)
member_of = "memberOf"  # Группы пользователя (атрибут memberOf в AD)

# Настройки привилегий на основе групп AD
[[servers.group_mappings]]
group_dn = "cn=Domain Admins,cn=Users,dc=dpractices,dc=local"  # Группа доменных администраторов
org_role = "Admin"  # Роль в Grafana: Администратор
grafana_admin = true  # Давать права администратора Grafana

# Пример закомментированного маппинга для редакторов
#[[servers.group_mappings]]
#group_dn = "cn=Редакторы графаны,ou=Группы безопасности,dc=dpractices,dc=local"
#org_role = "Editor"  # Роль в Grafana: Редактор

# Маппинг для всех остальных пользователей (подстановка *)
[[servers.group_mappings]]
group_dn = "*"  # Все пользователи, не попавшие в предыдущие группы
org_role = "Viewer"  # Роль в Grafana: Просмотр

После создания файла ldap.toml редактируем docker compose файл, добавляя environment и volumes.

 grafana:
    image: grafana/grafana:11.1.0
    container_name: grafana
    restart: *default-restart-policy
    environment:
      GF_RENDERING_SERVER_URL: http://renderer:8081/render
      GF_RENDERING_CALLBACK_URL: http://grafana:3000/
      GF_LOG_FILTERS: rendering:debug
      GF_SERVER_ROOT_URL: "%(protocol)s://%(domain)s:%(http_port)s/grafana/"
      GF_SERVER_SERVE_FROM_SUB_PATH: "true"
      GF_ANALYTICS_ENABLED: "false"
      GF_ANALYTICS_REPORTING_ENABLED: "false"
      GF_ANALYTICS_CHECK_FOR_UPDATES: "false"
      GF_ANALYTICS_CHECK_FOR_PLUGIN_UPDATES: "false"
      GF_AUTH_LDAP_ENABLED: "true"  #  параметр, который разрешает или запрещает использование ldap; 
      GF_AUTH_LDAP_CONFIG_FILE: "/etc/grafana/ldap.toml" # путь до файла, где будут храниться соответствующие настройки; 
      GF_AUTH_LDAP_ALLOW_SIGN_UP: "true"  # Разрешить вход без предварительной регистрации
    volumes:
      - grafana:/var/lib/grafana
    # При использовании portainer указать абсолютный путь до файлов конфигурации.
    # например 
      # - /opt/dppm/planr/logging/grafana/provisioning:/etc/grafana/provisioning
      # - ./logging/grafana/provisioning:/etc/grafana/provisioning
      - ./logging/grafana/provisioning/:/etc/grafana/provisioning:/etc/grafana/provisioning
      - ./logging/grafana/ldap/ldap.toml:/etc/grafana/ldap.toml # примонтированная директория с файлом ldap.toml для настройки 
    networks: *default-network
    profiles : ['logging', 'all']

Чтобы новые настройки вступили в силу, перезапускаем docker compose c Grafana. Для этого, либо используем docker restart grafana, либо сначала запускаем скрипт ./stop.sh, который остановит все контейнеры, а потом запускаем с помощью скрипта ./start.sh.

Проверить работоспособность LDAP-авторизации в Grafana можно по пути Home->Administration->Authentication->LDAP, и диалоговом окне, введя имя юзера из домена Active Directory.

register image

Попробуем зайти в Grafana под учеткой из домена с минимальной ролью - Viewer.

register image

Авторизация по LDAP прошла.

register image


509.1-59ba7826