Логирование Эллес
Эллес позволяет гибко настраивать логирование для выявления и фиксации возможных проблем в работе службы каталогов.
Основным способом управления логированием является задание соответствующих настроек в конфигурационном файле smb.conf (полный путь к файлу — /app/inno-samba/etc/smb.conf).
Настройка способов логирования
Одновременно на сервере Эллес может вестись логирование несколькими способами. При этом для каждого из них может быть задан свой уровень логирования.
Для этого служит параметр logging, который задается в разделе [global] файла smb.conf на сервере Эллес в следующем формате:
logging = backend1[:option][@loglevel] backendN[:option][@loglevel]
В приведенной строке с параметром logging:
-
backend— один из доступных способов; может быть указано несколько значений, разделенных пробелом; возможные значения:-
syslog— запись в системный журнал; -
file— запись в файл, указанный в параметреlog file, либо в стандартные лог-файлы Эллес в каталоге /app/inno-samba/var/; -
systemd— запись в журнал (journal)systemd; -
lttng— трассировка с использованием инструментов фреймворка с открытым исходным кодом LTTng; -
gpfs— аудит файлов в файловой системе GPFS; -
ringbuf— запись в кольцевой буфер (ring buffer); для задания размера буфера (по умолчанию — 1 МБ) может использоваться опцияsizeв формате:logging = ringbuf:size=NBYTES;Данный вариант логирования может быть полезен при анализе ошибок, которые связаны с временными эффектами и не могут быть воспроизведены при записи логов в файлы с указанием высоких уровней отладки.
-
-
[:option]— дополнительные опции, специфичные для указанного способа; -
[@loglevel]— уровень логирования.Данный параметр является необязательным. Если он не установлен для указанного способа логирования, в соответствующий ему канал отправляются все сообщения.
Уровень логирования, установленный для определенного способа логирования, переопределяет общий уровень логирования, заданный с помощью параметра
log level.
Если задан параметр logging, его значение переопределяет значения параметров syslog и syslog only, которые являются устаревшими и не должны использоваться для настройки логирования.
Значение по умолчанию :
logging =
Пример задания параметра:
logging = syslog@1 file
Настройка места размещения, имени и максимального размера лог-файлов
По умолчанию после установки пакета inno-samba логи сохраняются в каталог /app/inno-samba/var/. Общий лог ведется в файле /app/inno-samba/var/samba.log.
Для получения текущего пути к логам, например, используйте команду samba -b | grep LOGFILEBASE или testparm -sv | grep 'log file'.
|
Для изменения места размещения логов и имени файлов необходимо создать требуемый каталог и указать его в качестве значения параметра log file в разделе [global] файла smb.conf.
Например:
log file = /app/log/inno-samba/inno-samba.log
Также может быть указан отдельный лог-файл для каждого класса отладки (см. «Настройка уровня логирования»).
Для ограничения максимального размера лог-файлов Эллес может использоваться параметр max log size в разделе [global]. Значение параметра задается в килобайтах. При превышении заданного лимита к имени текущего лог-файла добавляется постфикс .old и создается новый файл.
| В процессе ротации Samba перезаписывает архивированный ранее лог-файл. Рекомендуется настроить ротацию лог-файлов с помощью доступных в системе инструментов (см. «Пример настройки ротации лог-файлов»). |
Например, чтобы ограничить максимальный размер лог-файла значением 10 МБ, необходимо задать параметр следующим образом:
max log size = 10000
Настройка уровня логирования
Для задания уровня логирования (уровня отладки) служит параметр log level в разделе [global] файла smb.conf.
Уровень задается в виде целого числа в диапазоне от 0 до 10, где 0 соответствует отключению вывода отладочной информации, а 10 — обеспечивает вывод максимального объема информации об ошибках и проблемах, которые могут возникать в процессе работы Эллес. Оптимальным для получения отладочной информации является уровень 3. Уровни выше 3 предназначены преимущественно для выявления внутренних ошибок Эллес. Их использование может привести к существенному снижению производительности сервера.
Также параметр log level позволяет задавать различные уровни логирования для отдельных классов отладки. При необходимости наряду с уровнем логирования может быть указан файла, в который должна вести запись отладочной информации. Для этого к имени класса отладки добавляется часть @PATH.
В текущей реализации доступны следующие классы отладки: all, tdb, printdrivers, lanman, smb, rpc_parse, rpc_srv, rpc_cli, passdb, sam, auth, winbind, vfs, idmap, quota, acls, locking, msdfs, dmapi, registry, scavenger, dns, ldb, tevent, auth_audit, auth_json_audit, kerberos, drs_repl, smb2, smb2_credits, dsdb_audit, dsdb_json_audit, dsdb_password_audit, dsdb_password_json_audit, dsdb_transaction_audit, dsdb_transaction_json_audit, dsdb_group_audit, dsdb_group_json_audit.
Некоторые модули при первом использовании регистрируют динамические классы отладки. Например: catia, dfs_samba4, extd_audit, fileid, fruit, full_audit, media_harmony, preopen, recycle, shadow_copy, unityed_media, virusfilter.
Примеры использования параметра для настройки уровня логирования:
-
установка единого уровня логирования
3для всех классов отладки:log level = 3
-
установка общего уровня логирования
1, а для классовauthиwinbind—5:log level = 1 auth:5 winbind:5
-
установка общего уровня логирования
1и различных уровней логирования для классов отладки с указанием отдельных файлов для ведения записи:log level = 1 \ kerberos:3@/app/log/inno-samba/kerberos.log \ drs_repl:3@/app/log/inno-samba/drs_repl.log \ rpc_srv:3@/app/log/inno-samba/rpc_srv.log \ dns:0
При выполнении команд с помощью утилит, поставляемых с Эллес, используется уровень логирования, установленный параметром log level в smb.conf. Он может быть переопределен с помощью опции -d. Например:
samba-tool drs showrepl -d 3
Пример настройки ротации лог-файлов
Для ротации лог-файлов, формируемых сервисами Эллес, может использоваться системная утилита logrotate.
Пример файла /etc/logrotate.d/inno-samba с конфигурацией ротации:
/app/log/inno-samba/*log {
weekly
compress
dateext
rotate 10
notifempty
olddir /app/log/inno-samba/old
missingok
copytruncate
postrotate
systemctl reload inno-samba.service || true
endscript
}
Описание директив в примере:
-
/app/log/inno-samba/*log— путь к каталогу с лог-файлами (если отличается от пути по умолчанию, задается в параметреlog fileв файле smb.conf); -
weekly— еженедельная ротация лог-файлов;Возможные значения:
-
hourly— каждый час; -
daily— каждый день; -
weekly(по умолчанию) — каждую неделю; -
monthly— каждый месяц; -
yearly`— каждый год.
Также с помощью параметра
sizeможет быть настроена ротация файла по достижении им определенного размера. -
-
compress— сжатие лог-файлов; -
dateext— добавление к расширению файла даты ротации;Для задания формата могут использоваться параметры
dateformatиdateyesterday. -
rotate— количество ротацией до удаления или отправки на адрес, указанный в директивеmail; если0, прежние версии удаляются без ротации; -
notifempty— отключение ротации пустых файлов; -
olddir— каталог для перемещения файлов при ротации; если не указан абсолютный путь, значение интерпретируется относительно каталога с лог-файлами; -
missingok— если файл отсутствует, перейти к следующему без сообщения об ошибке; -
copytruncate— обрезать исходный файл до нулевого размера после создания копии вместо переименования и создания нового; -
блок между
postrotateиendscript— команды, которые необходимо выполнить после ротации.
Для принудительного запуска ротации используйте стандартную команду:
sudo -E logrotate -vf /etc/logrotate.d/inno-samba
Примеры настройки обработки лог-файлов с использованием rsyslog и syslog-ng
Для дополнительной обработки лог-файлов с целью отбора информации по определенным правилам или с применением определенных фильтров могут использоваться утилиты rsyslog и syslog-ng.
Например, с помощью этих инструментов на основе общего лога процесса репликации может вестись отдельный лог-файл, содержащий только сообщений со статусами. Такой лог может использоваться для настройки оповещений при появлении в нем определенных статусов.
Для настройки формирования отдельного лога для мониторинга статусов репликации:
-
Создайте каталог для размещения файлов.
Например:
mdkir -pv /app/log/inno-samba
-
Добавьте класс отладки для процесса репликации с указанием пути в значение параметра
log levelв файле /app/inno-samba/etc/smb.conf.Например:
log level = 1 \ drs_repl:4@/app/log/inno-samba/drs_repl.log [...] -
При использовании
rsyslog:-
убедитесь, что соответствующий сервис активен и работает в системе:
sudo systemctl status rsyslog.service
-
создайте файл с конфигурацией для
rsyslog, например — /etc/rsyslog.d/repl_events.conf; -
добавьте в файл параметры обработки логов репликации; в данном примере с интервалом в 10 секунд из исходного лога репликации будут помещаться в отдельный файл сообщения, содержащие события
WERR_:module(load="imfile" PollingInterval="10") input(type="imfile" File="/app/log/inno-samba/drs_repl.log" Tag="samba_auth" Severity="info" Facility="auth") if ($syslogtag == "samba_auth" and ($msg contains 'WERR_')) then { action(type="omfile" dirCreateMode="0700" FileCreateMode="0644" File="/app/log/inno-samba/repl_events.log") } -
если требуется отправлять события на другой сервер:
-
на контроллере домена создайте файл с конфигурацией для
rsyslog, например — /etc/rsyslog.d/send_repl_events.conf:module(load="imfile" PollingInterval="10") input(type="imfile" File="/app/log/inno-samba/drs_repl.log" Tag="samba_auth" Severity="info" Facility="auth") if ($syslogtag == "samba_auth" and ($msg contains 'WERR_')) then { action(type="omfwd" target="10.0.18.132" port="514" protocol="tcp" action.resumeRetryCount="100" queue.type="linkedList" queue.size="10000") } -
на принимающем сервере создайте файл с конфигурацией для
rsyslog, например — /etc/rsyslog.d/receive_repl_events.conf:$ModLoad imptcp $InputTCPServerRun 514 if ($syslogtag == "samba_auth") then /logs/inno-samba/repl_events.log
-
-
перезапустите сервис
rsyslog:sudo systemctl restart rsyslog.service
-
-
При использовании
syslog-ng:-
убедитесь, что соответствующий сервис активен и работает в системе:
sudo systemctl status syslog-ng.service
-
создайте файл с конфигурацией для
syslog-ng, например — /etc/syslog-ng/conf.d/repl_events.conf; -
добавьте в созданный файл информацию об исходном и целевых лог-файлах, а также задайте фильтр для отбора сообщений по наличию подстроки "WERR_*":
source s_file { file("/app/log/inno-samba/drs_repl.log"); }; destination d_s_repl { file("/app/inno-samba/repl_events.log"); }; filter f_s_repl { match("WERR_*"); }; log { source(s_file); filter(f_s_repl); destination(d_s_repl); }; -
перезапустите сервис
syslog-ng:sudo systemctl restart syslog-ng
-
При анализе сформированного лог-файла с событиями процесса репликации могут формирования оповещения, например, при появлении в нем событий, отличных от "WERR_OK". Один из возможных вариантов поиска таких событий:
sudo tail /app/log/inno-samba/repl_events.log -n -5 | grep -v 'WERR_OK'