Мониторинг

Для мониторинга работы Samba в роли контроллера домена используется набор метрик в формате Prometheus.

В качестве источников метрик выступают модули:

  • inno-samba-dc-exporter — обеспечивает формирование и экспорт следующих групп метрик в формате Prometheus:

    • метрики для мониторинга работы основных процессов и служб Samba;

    • метрики для мониторинга корректности настройки DNS;

  • prometheus-bind-exporter — обеспечивает экспорт метрик, отражающих состояние DNS-сервера BIND, в формате Prometheus;

  • node_exporter — обеспечивает экспорт метрик, отражающих статистику использования системных ресурсов (CPU, RAM, дисковое пространство, сеть), в формате Prometheus.

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

  • сбор и хранение метрик — Prometheus или VictoriaMetrics;

  • отображение собранных метрик в графическом формате — Grafana;

  • формирование и отправка оповещений при достижении установленных для метрик порогов — Alertmanager.

Настройка сбора метрик

Настройки inno-samba-dc-exporter хранятся в файле config.yaml. Пример файла со значениями по умолчанию создается после установки в каталоге /app/samba-dc-exporter/etc.

Файл содержит следующие настройки формирования и сбора метрик:

  • dc_hostname — имя хоста контроллера домена Samba, для которого требуется формировать и экспортировать метрики (по умолчанию используется имя текущего хоста);

  • domain_name — имя домена, в рамках которого осуществляется мониторинг (по умолчанию используется имя локального домена);

  • настройки запуска HTTP/HTTPS-сервера для предоставления метрик:

    • HTTP-сервер:

      • http_enabled — признак запуска HTTP-сервера (значение по умолчанию — True);

      • http_port — номер порта для запуска HTTP-сервера (значение по умолчанию — 9099);

    • HTTPS-сервер:

      • https_enabled — признак запуска HTTPS-сервера (значение по умолчанию — False);

      • https_port — номер порта для запуска HTTPS-сервера(значение по умолчанию — 9098);

      • https_certpath — путь к файлу сертификата (значение по умолчанию — "");

      • https_keypath — путь к файлу закрытого ключа (значение по умолчанию — "");

  • настройки логирования:

    • logLevel — уровень логирования (значение по умолчанию — INFO);

    • logFormat — набор атрибутов для формирования записи в лог-файле (значение по умолчанию — '%(asctime)s - %(levelname)s - %(name)s - %(message)s');

    • logDir — путь к каталогу с логами (значение по умолчанию — /app/samba-dc-exporter/logs/);

    • logFileBytes — максимальный размер лог-файла в байтах (значение по умолчанию — 10*1024*1024);

    • logFileCount — максимальное количество лог-файлов (значение по умолчанию — 10);

  • metric_collect_interval_sec — интервал сбора метрик в секундах в секундах (значение по умолчанию — 5);

  • настройки LDAP:

    • ldap_search_path — уникальное составное имя объекта AD (DN) в LDAP для поиска sAMAccountName по заданному значению ldap_user;

    • ldap_timeout — время ожидания ответа от LDAP в секундах (значение по умолчанию — 2.0);

    • ldap_credentials_path — путь к файлу с реквизитами доступа для LDAP и базовой аутентификации по HTTP/HTTPS (значение по умолчанию — /app/samba-dc-exporter/etc/cred);

      В указанном файле ожидаются имена и пароли пользователей, зашифрованные с помощью base64:

      • ldap_user — имя пользователя для доступа к LDAP;

      • ldap_user_pw — пароль пользователя для доступа к LDAP;

      • http_user — имя пользователя для базовой аутентификации по HTTP/HTTPS (при необходимости);

      • http_user_pw — пароль пользователя для базовой аутентификации по HTTP/HTTPS (при необходимости).

      В качестве примера может использоваться файл cred.example, который создается при установке пакета в каталоге /app/samba-dc-exporter/etc.

  • rpc_connect_transport — способ подключения к службе dcerpc; возможные варианты подключения:

    • ncacn_np — подключение по именованным каналам;

    • ncacn_ip_tcp — подключение по TCP/IP (значение по умолчанию — ncacn_ip_tcp:127.0.0.1);

    • ncalrpc — подключение по протоколу LRPC;

  • ntp_config — путь к конфигурационному файлу службы синхронизации времени (значение по умолчанию — /etc/chrony/chrony.conf);

  • настройки DNS:

    • dns_timeout — период ожидания ответа от DNS-сервера в секундах (значение по умолчанию — 2.0);

    • dns_log_path — путь к лог-файлу (значение по умолчанию — /var/log/syslog);

  • wsgi_headers — пользовательские HTTP/HTTPS-заголовки; если параметр не задан, используются заголовки по умолчанию.

    Для задания заголовков используйте следующие разделители:

    • ';' — разделитель между заголовками;

    • ':' — разделитель между заголовком и его содержимым;

    • '\;' — для добавления символа ';'.

    Пример значения для параметра:

    'Server:WSGIServer/0.2\; Python/3.20.1; Second-header: Second Header Content'

    Данное значение соответствует следующим HTTP-заголовкам:

    Server: WSGIServer/0.2; Python/3.20.1
    Second-header: Second Header Content
  • переключатели для задания списка метрик (см. полный список переключателей метрик со значениями по умолчанию в примере файла).

Для применения изменений в конфигурационном файле перезапустите сервис samba-dc-exporter.service.

Метрики для мониторинга работы процессов и служб

Модуль inno-samba-dc-exporter предоставляет метрики для мониторинга работы следующих основных процессов и служб на контроллере домена Samba:

samba

samba_process_check_samba

Проверка существования процесса samba.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_samba Health of process
# TYPE samba_process_check_samba gauge
samba_process_check_samba 0.0

smbd

samba_process_check_smbd

Проверка существования процесса smbd.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_smbd Health of smbd process
# TYPE samba_process_check_smbd gauge
samba_process_check_smbd 1.0
samba_smbd_list_folder

Проверка существования подкаталога с именем домена в каталоге sysvol.

В рамках проверки выполняется SMB-запрос по имени домена.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — каталог существует;

  • 1 — каталог не существует.

Формат:

# HELP samba_smbd_list_folder Health of smbd
# TYPE samba_smbd_list_folder gauge
samba_smbd_list_folder 0.0

LDAP

samba_process_check_ldap

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

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_ldap Health of process
# TYPE samba_process_check_ldap gauge
samba_process_check_ldap 0.0
samba_ldap_search

Проверка работоспособности поиска в LDAP.

В рамках проверки выполняется простой поисковый запрос в LDAP.

При проверке используются значения параметров, заданные в файле /app/samba-dc-exporter/etc/config.yaml (см. описание в разделе «Настройка сбора метрик»):

  • ldap_user;

  • ldap_user_pw;

  • ldap_search_path.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — поисковый запрос к LDAP выполнен успешно;

  • 1 — поисковый запрос не выполнен.

формат:

# HELP samba_ldap_search Health of ldap search
# TYPE samba_ldap_search gauge
samba_ldap_search 0.0

DNS

samba_process_check_dns

Проверка существования процесса службы DNS.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_dns Health of process
# TYPE samba_process_check_dns gauge
samba_process_check_dns 0.0
samba_dns_resolver

Проверка работоспособности службы DNS.

В рамках проверки выполняется запрос SRV-записей (A, AAAA, MX и т. д.) для службы ldap по протоколу TCP и для службы kerberos по протоколу UDP.

При проверке используются значения параметров, заданные в файле /app/samba-dc-exporter/etc/config.yaml (см. описание в разделе «Настройка сбора метрик»):

  • dc_hostname;

  • domain_name;

  • dns_timeout.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — в ответ на запрос получены SRV-записи;

  • 1 — в ответ на запрос не получены SRV-записи.

Формат:

# HELP samba_dns_resolver Health of DNS resolve
# TYPE samba_dns_resolver gauge
samba_dns_resolver 0.0

RPC

samba_process_check_rpc

Проверка существования процесса RPC.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_rpc Health of rpc process
# TYPE samba_process_check_rpc gauge
samba_process_check_rpc 0.0
samba_rpc_echo_request

Проверка работоспособности служб RPC.

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

При проверке используется значение параметра rpc_connect_transport, заданное в файле /app/samba-dc-exporter/etc/config.yaml (см. описание в разделе «Настройка сбора метрик»).

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

Формат:

# HELP samba_rpc_echo_request Health of RPC
# TYPE samba_rpc_echo_request gauge
samba_rpc_echo_request 0.0

wrepl

samba_process_check_wrepl

Проверка существования процесса wrepl.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_wrepl Health of wrepl process
# TYPE samba_process_check_wrepl gauge
samba_process_check_wrepl 0.0
samba_wrepl_inbound_check

Проверка статуса входящей репликации.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — последняя попытка входящей репликации завершилась успешно;

  • 1 — последняя попытка входящей репликации завершилась ошибкой.

Формат:

# HELP samba_wrepl_inbound_check AD Replication check from neighbors
# TYPE samba_wrepl_inbound_check gauge
samba_wrepl_inbound_check 0.0
samba_wrepl_outbound_check

Проверка статуса исходящей репликации.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — последняя попытка исходящей репликации завершилась успешно;

  • 1 — последняя попытка исходящей репликации завершилась ошибкой.

Формат:

# HELP samba_wrepl_outbound_check AD Replication check to neighbors
# TYPE samba_wrepl_outbound_check gauge
samba_wrepl_outbound_check 0.0

nbt

samba_process_check_nbt

Проверка существования процесса nbt.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_nbt Health of nbt process
# TYPE samba_process_check_nbt gauge
samba_process_check_nbt 0.0
samba_nmbd_response

Проверка работоспособности NetBIOS.

В рамках проверки выполняется запрос имени NetBIOS.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — ответ на запрос получен;

  • 1 — ответ на запрос не получен.

Формат:

# HELP samba_nmbd_response Health of NetBios
# TYPE samba_nmbd_response gauge
samba_nmbd_response 0.0

cldap

samba_process_check_cldap

Проверка существования процесса cldap.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_cldap Health of cldap process
# TYPE samba_process_check_cldap gauge
samba_process_check_cldap 0.0
samba_cldap_check

Проверка работоспособности CLDAP.

В рамках проверки выполняется запрос имени домена доступного для записи контроллера домена с поддержкой LDAP (с флагами NBT_SERVER_LDAP, NBT_SERVER_DS, NBT_SERVER_WRITABLE) по протоколу CLDAP.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — ответ на запрос получен;

  • 1 — ответ на запрос не получен.

Формат:

# HELP samba_cldap_check Connection-less LightweightDirectory Access Protocol checking
# TYPE samba_cldap_check gauge
samba_cldap_check 0.0

KDC

samba_process_check_kdc

Проверка существования процесса kdc.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_kdc Health of kdc process
# TYPE samba_process_check_kdc gauge
samba_process_check_kdc 0.0
samba_kdc_response

Проверка работоспособности KDC.

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

При проверке используются значения параметров, заданные в файле /app/samba-dc-exporter/etc/config.yaml (см. описание в разделе «Настройка сбора метрик»):

  • ldap_user;

  • ldap_user_pw.

Для успешного выполнения проверки в конфигурационном файле smb.conf должен быть задан параметр kerberos method = secrets and keytab.

Формат:

# HELP samba_kdc_response Health of KDC
# TYPE samba_kdc_response gauge
samba_kdc_response 0.0

drepl

samba_process_check_drepl

Проверка существования процесса drepl.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_drepl Health of drepl process
# TYPE samba_process_check_drepl gauge
samba_process_check_drepl 0.0

winbindd

samba_process_check_winbindd

Проверка существования процесса winbindd.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_winbindd Health of winbindd process
# TYPE samba_process_check_winbindd gauge
samba_process_check_winbindd 0.0

ntp_signd

samba_process_check_ntp_signd

Проверка существования процесса ntp_signd.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_ntp_signd Health of ntp_signd process
# TYPE samba_process_check_ntp_signd gauge
samba_process_check_ntp_signd 0.0
samba_ntp_response

Проверка работоспособности NTP.

В рамках проверки выполняется запрос к NTP-серверу с переданными параметрами (хост — localhost, порт — 123).

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — ответ на запрос получен;

  • 1 — ответ на запрос не получен.

Формат:

# HELP samba_ntp_response Health of NTP
# TYPE samba_ntp_response gauge
samba_ntp_response 1.0
samba_ntp_signd_config_check

Проверка корректности конфигурации ntp_signd.

В рамках проверки проверяется корректность задания в ключе ntpsigndsocket в конфигурации NTP пути к каталогу сокета, через который NTP взаимодействует с Samba при подписании пакетов. Для этого сравниваются значение ntpsigndsocket из конфигурационного файла NTP, заданного в параметре ntp_config в конфигурации модуля inno-samba-dc-exporter, и значение, полученное от NTP-сервера.

При проверке используется значение параметра ntp_config, заданное в файле /app/samba-dc-exporter/etc/config.yaml (см. описание в разделе «Настройка сбора метрик»).

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — ключ найден, значения совпадают;

  • 1 — ключ не найден либо значения не совпадают.

Формат:

# HELP samba_ntp_signd_config_check Value of ntpsigndsocket in config file of NTP server
# TYPE samba_ntp_signd_config_check gauge
samba_ntp_signd_config_check 1.0

dnsupdate

samba_process_check_dnsupdate

Проверка существования процесса dnsupdate.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_dnsupdate Health of dnsupdate process
# TYPE samba_process_check_dnsupdate gauge
samba_process_check_dnsupdate 0.0
samba_dns_update_check

Проверка работоспособности dnsupdate.

В рамках проверки каждые 10 минут:

  1. В файл private/dns_update_list добавляется A-запись для dc-exporter.domain_name.

  2. Через 10 минут выполняется обращение к службе DNS с запросом A-записи для dc-exporter.domain_name.

  3. Запись удаляется.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — добавленная запись существует;

  • 1 — запись не существует.

Формат:

# HELP samba_dns_update_check DNS update checking
# TYPE samba_dns_update_check gauge
samba_dns_update_check 0.0

KCC

samba_process_check_kcc

Проверка существования процесса kcc.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — процесс существует;

  • 1 — процесс не существует.

Формат:

# HELP samba_process_check_kcc Health of kcc process
# TYPE samba_process_check_kcc gauge
samba_process_check_kcc 0.0
samba_kcc_check

Проверка работоспособности KCC.

В рамках проверки выполняется поиск в LDAP объекта nTDSConnection, задающего путь для репликации с одного контроллера домена на другой.

При проверке используются значения параметров, заданные в файле /app/samba-dc-exporter/etc/config.yaml (см. описание в разделе «Настройка сбора метрик»):

  • ldap_user;

  • ldap_user_pw.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — объект существует;

  • 1 — объект не существует.

Формат:

# HELP samba_kcc_check Connection objects
# TYPE samba_kcc_check gauge
samba_kcc_check 1.0

Метрики для мониторинга корректности настройки DNS

Модуль inno-samba-dc-exporter предоставляет набор метрик для контроля ряда настроек DNS-службы на контролере домена Samba.

samba_dns_suffix_check

Проверка корректности задания DNS-суффикса на сервере.

В рамках проверки выполняется поиск наличия в файле /etc/resolv.conf записи с DNS-суффиксом в формате: search domain_name.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — DNS-суффикс задан корректно;

  • 1 — DNS-суффикс не задан или некорректен.

Формат:

# HELP samba_dns_suffix_check Check namesearch record in /etc/resolv.conf
# TYPE samba_dns_suffix_check gauge
samba_dns_suffix_check{dns_suffix="search domain_name"} 0.0
samba_dns_zones_check

Проверка корректности задания зон на DNS-сервере.

В рамках проверки выполняется запрос списка зон, заданных на DNS-сервере. Ожидается, что заданы хотя бы две зоны вида domain_name и _msdcs.domain_name.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — заданы не менее двух зон;

  • 1 — зоны не заданы или их менее двух.

Формат:

# HELP samba_dns_zones_check Check zones record in DNS
# TYPE samba_dns_zones_check gauge
samba_dns_zones_check{zones="['domain_name', '_msdcs.domain_name']"} 0.0
samba_dns_sec_check

Проверка подписания зон при помощи DNSSEC.

В рамках проверки выполняется запрос записи типа DNSKEY.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — запись DNSKEY найдена, зона подписана;

  • 1 — запись DNSKEY не найдена, зона не подписана.

Формат:

# HELP samba_dns_sec_check DNS signature
# TYPE samba_dns_sec_check gauge
samba_dns_sec_check{dns_sec="No DNSKEY found for domain_name"} 1.0
samba_dns_recursive_check

Проверка возможности выполнения рекурсивного DNS-запроса с заданным временем ожидания ответа.

В рамках проверки выполняется рекурсивный запрос A-записи для случайного домена с временем ожидания ответа 2 секунды.

Тип метрики: gauge.

Тип данных: Int.

Возможные значения:

  • 0 — рекурсивный запрос выполнен успешно в рамках заданного времени ожидания ответа;

  • 1 — заданное время ожидания ответа на рекурсивный запрос истекло.

Формат:

# HELP samba_dns_recursive_check Check recursive query timeout
# TYPE samba_dns_recursive_check gauge
samba_dns_recursive_check{dns_recursive="Recursive query performed"} 0.0
samba_dns_log_check

Проверка корректности настройки ротации лог-файлов DNS-сервера.

В рамках проверки запрашивается размер лог-файла по заданному пути.

При проверке используется значение параметра dns_log_path, заданное в файле /app/samba-dc-exporter/etc/config.yaml (см. описание в разделе «Настройка сбора метрик»).

Тип метрики: gauge.

Тип данных: Int.

Метрика возвращает размер лог-файла, найденного по заданному пути. Уменьшение размера файла с течением времени свидетельствует о том, что ротация лог-файлов выполняется корректно.

Формат:

# HELP samba_dns_log_check Check size of dns log
# TYPE samba_dns_log_check gauge
samba_dns_log_check{dns_log_size="dns_log_path"} 0.0