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

Monitoring 27-10-2023, 16:48 sobir 672 0


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

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

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

  • Движок контейнеризации приложений Docker и инструмент Compose.
  • Сервер Active Directory (AD) на базе Windows Server 2019-2022.


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

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

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
Похожие новости
Поднимаем ocserv с аутентификацией LDAP

Поднимаем VPN сервер OpenConnect (ocserv) в контейнере Docker с аутентификацией пользователей из Microsoft...

Подробнее
Разворачиваем LEMP-стэк на контейнерах Docker

Контейнеризируем сервисы LEMP с помощью docker-compose....

Подробнее
Поднимаем MASSCAN Web UI в Docker

MASSCAN — это быстрый сетевой сканер, который идеально подходит для сканирования широкого диапазона...

Подробнее
Мониторинг реплики AlwaysON с помощью Zabbix

Мониторим estimated recovery time репликационных баз SQL Server AlwaysON в Zabbix....

Подробнее
Настройка RADIUS в SoftEther VPN Server

Авторизация VPN-пользователей с помощью Network Policy Server (NPS) на сервере SoftEther....

Подробнее
Как очистить логи запущенных контейнеров Docker

Очистка лог файлов контейнеров в Docker....

Подробнее
Комментарии (0)
Новые комментарии
komronu8 сентября 2022 18:23

Салом, можно ещё создать файл в /etc/nginx/proxy_params, a потом добавить туда

img
К комментарию
sobir26 августа 2022 10:43

Можно ещё так: 1. Создаем отдельную сеть для наших контейнеров docker network

img
К комментарию
komronu22 августа 2022 15:12

Спасибо за отзыв, написал отдельную статью по установке и настройке Ansible

img
К комментарию
sobir19 августа 2022 18:00

Думаю в статье необходимо также описать процесс установки Ansible.

img
К комментарию
sobir17 октября 2021 11:40

Принудительное обновление сертификата: certbot certonly --force-renew -d

img
К комментарию
sobir3 июля 2021 14:19

Можно, но я решил описать процесс копирования ключей более подробно.

img
К комментарию
Все комментарии
Какой дистрибутив Linux вы часто используете?
Календарь
«    Май 2024    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031 
Подпишись на канал