Мониторинг
Для мониторинга работы Samba в роли контроллера домена используется набор метрик в формате Prometheus.
В качестве источников метрик выступают модули:
-
inno-samba-dc-exporter — обеспечивает формирование и экспорт следующих групп метрик в формате Prometheus:
-
prometheus-bind-exporter — обеспечивает экспорт метрик, отражающих состояние DNS-сервера BIND, в формате Prometheus;
-
node_exporter — обеспечивает экспорт метрик, отражающих статистику использования системных ресурсов (CPU, RAM, дисковое пространство, сеть), в формате Prometheus.
Для работы с метриками может использоваться следующий набор инструментов:
-
сбор и хранение метрик — Prometheus или VictoriaMetrics;
-
отображение собранных метрик в графическом формате — Grafana;
-
формирование и отправка оповещений при достижении установленных для метрик порогов — Alertmanager.
В данном разделе приводится только информация, относящаяся к модулю inno-samba-dc-exporter.
Установка
Для установки inno-samba-dc-exporter требуется следующее:
-
имя apt-репозитория в формате https://artifacts.inno.tech/repository/<repository_name>;
-
файл с публичным ключом для доступа к apt-репозиторию;
-
реквизиты для доступа к apt-репозиторию.
Чтобы установить пакет inno-samba-dc-exporter на сервере из apt-репозитория:
-
Добавьте публичный ключ для доступа к apt-репозиторию с пакетом стандартным способом, соответствующим используемому дистрибутиву Linux.
Например, на Astra Linux 1.7 SE или Ubuntu 20.04 используйте стандартную утилиту
apt-key:sudo apt-key add keyfile.pgpПри необходимости установки ключа для проверки подписи исполняемых файлов в защищенном режиме работы Astra Linux 1.7 SE следуйте инструкции в официальной документации. На Ubuntu 22.04 и выше используйте следующую команду (от имени пользователя root):
cat keyfile.gpg | gpg --dearmor > /usr/share/keyrings/innotech-keyring.gpg -
Создайте файл /etc/apt/auth.conf.d/innotech.conf и задайте в нем реквизиты для доступа к репозиторию в стандартном формате:
machine <repo_host> login <repo_user> password <repo_password>
-
Подключите требуемый apt-репозиторий в соответствии с инструкциями для используемого дистрибутива Linux (см., например, инструкцию в официальной документации Astra Linux).
Например, при использовании дистрибутива на основе Debian выполните следующую команду:
echo -e "deb https://artifacts.inno.tech/repository/<repository_name> main" | sudo tee /etc/apt/sources.list.d/innotech.list
-
Обновите пакеты с помощью стандартной команды:
sudo apt update
-
Подготовьте файл config.yaml с требуемыми настройками (см. пример содержимого файла и описание настроек в разделе «Настройка сбора метрик»), создайте каталог /etc/samba-dc-exporter и поместите в него файл.
Если файл отсутствует, он создается при установке пакета и может быть отредактирован в последующем. -
Создайте файл с реквизитами для доступа к LDAP по пути, указанному в параметре
ldap_credentials_pathв config.yaml (по умолчанию —/etc/samba-dc-exporter/cred):printf 'ldap_user=%s\n' `echo username | base64` | sudo tee /etc/samba-dc-exporter/cred printf 'ldap_user_pw=%s\n' `echo userpassword | base64` | sudo tee -a /etc/samba-dc-exporter/cred
Если файл создается после установки пакета, обеспечьте доступ сервиса к нему:
sudo chown samba-dc-exporter:samba-dc-exporter /etc/samba-dc-exporter/cred sudo chmod 400 /etc/samba-dc-exporter/cred
-
Установите пакет inno-samba-dc-exporter:
sudo apt install inno-samba-dc-exporter
-
Запустите сервис:
sudo systemctl start samba-dc-exporter
После этого на сервере будет доступна служба samba-dc-exporter.service, реализующая функции экспорта метрик.
|
Для указания пути к файлу с реквизитами для доступа к LDAP после установки также может использоваться параметр командной строки ExecStart=/usr/bin/python3 /app/samba-dc-exporter/samba_exporter.py --credentials /path/to/credentials/file Данный параметр имеет более высокий приоритет, чем параметр |
Настройка сбора метрик
Настройки inno-samba-dc-exporter хранятся в файле /etc/samba-dc-exporter/config.yaml. Они могут быть заданы до установки либо после нее.
Файл должен содержать следующие настройки формирования и сбора метрик:
-
dc_hostname— имя хоста контроллера домена Samba, для которого требуется формировать и экспортировать метрики; -
domain_name— имя домена, в рамках которого осуществляется мониторинг; -
port— порт, на котором доступны для сбора метрики (значение по умолчанию —9099); -
настройки логирования:
-
logLevel— уровень логирования (значение по умолчанию —INFO); -
logFormat— набор атрибутов для формирования записи в лог-файле (значение по умолчанию —'%(asctime)s - %(levelname)s - %(name)s - %(message)s');
-
-
metric_collect_interval_sec— интервал сбора метрик в секундах в секундах (значение по умолчанию —5); -
настройки LDAP:
-
ldap_search_path— уникальное составное имя объекта AD (DN) в LDAP для поискаsAMAccountNameпо заданному значениюldap_user; -
ldap_timeout— время ожидания ответа от LDAP в секундах (значение по умолчанию —2.0); -
ldap_credentials_path— путь к файлу с реквизитами доступа для LDAP (значение по умолчанию —/etc/samba-dc-exporter/cred);В указанном файле ожидаются два параметра, значения которых должны быть зашифрованы с помощью
base64:-
ldap_user— имя пользователя для доступа к LDAP; -
ldap_user_pw— пароль пользователя для доступа к LDAP.
-
-
-
rpc_connect_transport— способ подключения к службеdcerpc; возможные варианты подключения:-
ncacn_np— подключение по именованным каналам; -
ncacn_ip_tcp— подключение по TCP/IP (значение по умолчанию —ncacn_ip_tcp:127.0.0.1); -
ncalrpc— подключение по протоколу LRPC;
-
-
krb5_keytab_path— путь к keytab-файлу (значение по умолчанию —/etc/krb5.keytab); -
ntp_config— путь к конфигурационному файлу службы синхронизации времени (значение по умолчанию при использовании chrony —/etc/chrony/chrony.conf; значение при использовании ntpd —/etc/ntpd.conf); -
настройки DNS:
-
dns_timeout— период ожидания ответа от DNS-сервера в секундах (значение по умолчанию —2.0); -
dns_log_path— путь к лог-файлу (значение по умолчанию —/var/log/syslog).
-
Пример содержимого файла config.yaml:
dc_hostname: "dc1" domain_name: "example.com" port: 9099 # Logging parameters log: logLevel: INFO logFormat: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' # Collection interval metric_collect_interval_sec: 5 # LDAP parameters ldap_search_path: 'CN=Users, DC=example,DC=com' ldap_timeout: 2.0 ldap_credentials_path: /etc/samba-dc-exporter/cred # RPC parameters rpc_connect_transport: "ncacn_ip_tcp:127.0.0.1" # KDC parameters krb5_keytab_path: '/etc/krb5.keytab' # NTP parameters ntp_config: "/etc/chrony/chrony.conf" # ntp_config: "/etc/ntpd.conf" # DNS parameters dns_timeout: 2.0 dns_log_path: "/var/log/syslog"
Для применения изменений в конфигурационном файле перезапустите службу samba-dc-exporter.service.
Метрики для мониторинга работы процессов и служб
Модуль inno-samba-dc-exporter предоставляет метрики для мониторинга работы следующих основных процессов и служб на контроллере домена Samba:
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
Проверка существования процесса 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
Проверка существования подкаталога с именем домена в каталоге 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
Проверка существования процесса, отвечающего за взаимодействие по протоколу 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
Проверка работоспособности поиска в LDAP.
В рамках проверки выполняется простой поисковый запрос в LDAP.
При проверке используются значения параметров, заданные в файле /etc/samba-dc-exporter/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
Проверка существования процесса службы 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
Проверка работоспособности службы DNS.
В рамках проверки выполняется запрос SRV-записей (A, AAAA, MX и т. д.) для службы ldap по протоколу TCP.
При проверке используются значения параметров, заданные в файле /etc/samba-dc-exporter/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
Проверка существования процесса 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
Проверка работоспособности служб RPC.
В рамках проверки выполняется попытка установки соединения с сервером RPC заданным в конфигурации способом.
При проверке используется значение параметра rpc_connect_transport, заданное в файле /etc/samba-dc-exporter/config.yaml (см. описание в разделе «Настройка сбора метрик»).
Тип метрики: gauge.
Тип данных: Int.
Возможные значения:
-
0— получен echo-ответ на RPC через интерфейс echo.idl; -
1— ответ не получен.
Формат:
# HELP samba_rpc_echo_request Health of RPC # TYPE samba_rpc_echo_request gauge samba_rpc_echo_request 0.0
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
Проверка статуса входящей репликации.
Тип метрики: 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
Проверка статуса исходящей репликации.
Тип метрики: 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
Проверка существования процесса 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
Проверка работоспособности NetBIOS.
В рамках проверки выполняется запрос имени NetBIOS.
Тип метрики: gauge.
Тип данных: Int.
Возможные значения:
-
0— ответ на запрос получен; -
1— ответ на запрос не получен.
Формат:
# HELP samba_nmbd_response Health of NetBios # TYPE samba_nmbd_response gauge samba_nmbd_response 0.0
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
Проверка работоспособности 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
Проверка существования процесса 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
Проверка работоспособности KDC.
В рамках проверки создается keytab-файл (если он не существует по указанному в параметре krb5_keytab_path конфигурации пути), в который помещается пароль указанного в параметре ldap_user_pw конфигурации пользователя LDAP. После этого выполняется запрос к KDC для получения пароля.
При проверке используются значения параметров, заданные в файле /etc/samba-dc-exporter/config.yaml (см. описание в разделе «Настройка сбора метрик»):
-
krb5_keytab_path; -
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
Проверка существования процесса 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
Проверка существования процесса 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
Проверка существования процесса 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
Проверка работоспособности 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
Проверка корректности конфигурации ntp_signd.
В рамках проверки проверяется корректность задания в ключе ntpsigndsocket в конфигурации NTP пути к каталогу сокета, через который NTP взаимодействует с Samba при подписании пакетов. Для этого сравниваются значение ntpsigndsocket из конфигурационного файла NTP, заданного в параметре ntp_config в конфигурации модуля inno-samba-dc-exporter, и значение, полученное от NTP-сервера.
При проверке используется значение параметра ntp_config, заданное в файле /etc/samba-dc-exporter/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
Проверка существования процесса 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
Проверка работоспособности dnsupdate.
В рамках проверки каждые 10 минут:
-
В файл private/dns_update_list добавляется A-запись для
dc-exporter.domain_name. -
Через 10 минут выполняется обращение к службе DNS с запросом A-записи для
dc-exporter.domain_name. -
Запись удаляется.
Тип метрики: 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
Проверка существования процесса 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
Проверка работоспособности KCC.
В рамках проверки выполняется поиск в LDAP объекта nTDSConnection, задающего путь для репликации с одного контроллера домена на другой.
При проверке используются значения параметров, заданные в файле /etc/samba-dc-exporter/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.
Проверка корректности задания 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
Проверка корректности задания зон на 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
Проверка подписания зон при помощи 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
Проверка возможности выполнения рекурсивного 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
Проверка корректности настройки ротации лог-файлов DNS-сервера.
В рамках проверки запрашивается размер лог-файла по заданному пути.
При проверке используется значение параметра dns_log_path, заданное в файле /etc/samba-dc-exporter/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