DataLife Engine / Поднимаем Grafana с интеграцией Active Directory и Zabbix

Поднимаем Grafana с интеграцией Active Directory и Zabbix


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

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

Для начала, убедитесь, что у вас уже есть следующие компоненты:



Теперь давайте перейдем к настройке:

1. Создание директории для проекта:
mkdir /opt/grafana

2. Определение файла docker-compose.yml:
version: "3.8"

networks:
  default:
    name: grf-net
    external: true

services:
  grafana:
    image: grafana/grafana:9.3.0-ubuntu
    container_name: grafana
    restart: unless-stopped
    environment:
     - GF_SERVER_ROOT_URL=http://grafana.example.com/
     - GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app
    ports:
     - '3000:3000'
    volumes:
     - './grafana.ini:/etc/grafana/grafana.ini'
     - './ldap.toml:/etc/grafana/ldap.toml'
     - grafana-storage:/var/lib/grafana

volumes:
  grafana-storage:

3. Редактирование конфигурационного файла grafana.ini:
vi /opt/grafana/grafana.ini
 grafana.ini

4. Редактирование конфигурационного файла ldap.toml:
vi /opt/grafana/ldap.toml
[[servers]]
host = "1.2.3.4"
port = 389
use_ssl = false
start_tls = false
tls_ciphers = []
min_tls_version = ""
ssl_skip_verify = false
bind_dn = "CORP\\%s"
#bind_password = 'grafana'
timeout = 10
search_filter = "(sAMAccountName=%s)"
search_base_dns = ["dc=example,dc=com"]
[servers.attributes]
name = "givenName"
surname = "sn"
username = "cn"
member_of = "memberOf"
email =  "email"
[[servers.group_mappings]]
group_dn = "CN=Grafana Admins,CN=Users,DC=example,DC=com"
org_role = "Admin"
grafana_admin = true
#[[servers.group_mappings]]
#group_dn = "cn=editors,ou=groups,dc=grafana,dc=org"
#org_role = "Editor"
#[[servers.group_mappings]]
#group_dn = "*"
#org_role = "Viewer"

* где:

host — имя сервера контроллера домена или IP-адрес. В данном примере указан сервер 1.2.3.4
port — используемый порт для связи с AD.
use_ssl — использовать ли SSL. В данном примере не используем.
start_tls — использовать ли STARTTLS.
ssl_skip_verify — опция проверки сертификата на корректность. Если задано false, то проверять.
bind_dn — учетная запись, от которой будут выполняться запросы в сторону LDAP. У нее могут быть минимальные права в AD. В данном примере мы используем ту же запись, от которой заходим в систему. В нашем примере работаем в домене CORP.
bind_password — пароль для связки с AD. Обратите внимание, что данная опция должна быть закомментирована, тогда пароль будет браться из того, что введет пользователь при входе.
search_filter — ldap фильтр для поиска учетных записей, которые будут удовлетворять определенным запросам. В моем случае, cn был заменен на sAMAccountName, так как логин в AD больше соответствует данному атрибуту.
search_base_dns — в каком контейнере нужно искать пользователей. Можно задать конкретный организационный юнит. В данном примере поиск будет идти по всему домену.

group_dn — группа безопасности в LDAP каталоге, org_role — роль в Grafana, на основе которой пользователю будут присвоены права, grafana_admin — права суперадминистратора.

В конкретном примере мы предоставляем полные права пользователям группы «Grafana Admins».


5. Сборка и запуск контейнера:
docker compose -f /opt/grafana/docker-compose.yml up -d

6. Проверка статуса контейнера:
docker ps
27-10-2023, 16:48
Вернуться назад