Логирование Эллес
Эллес поддерживает логирование различных событий с целью аудита и расследования инцидентов.
Основным способом управления логированием является настройка конфигурационных параметров в файле 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/, а также в файлы, указанные в параметреlog levelдля различных классов логирования; -
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/log.samba.
Для получения текущего пути к логам, например, используйте команду samba -b | grep LOGFILEBASE или testparm -sv | grep 'log file'.
|
Для изменения места размещения логов и имени файлов необходимо создать требуемый каталог и указать его в качестве значения параметра log file в разделе [global] файла smb.conf.
Например:
log file = /var/log/elles/common.log
Также может быть указан отдельный лог-файл для каждого класса логирования (см. «Настройка уровня логирования»).
Для ограничения максимального размера лог-файлов Эллес может использоваться параметр max log size в разделе [global]. Значение параметра задается в килобайтах. При превышении заданного лимита к имени текущего лог-файла добавляется постфикс .old и создается новый файл.
| В процессе ротации Эллес перезаписывает архивированный ранее лог-файл. Рекомендуется настроить ротацию лог-файлов с помощью доступных в системе инструментов (см. «Пример настройки ротации лог-файлов»). |
Например, чтобы ограничить максимальный размер лог-файла значением 10 МБ, необходимо задать параметр следующим образом:
max log size = 10000
Настройка уровня логирования
Для задания уровня логирования (уровня отладки) служит параметр log level в разделе [global] файла smb.conf.
Уровень задается в виде целого числа в диапазоне от 0 до 10.
В общем случае уровни логирования соответствуют следующим типам сообщений:
-
0— только критические ошибки; -
1— менее критические ошибки; -
2— предупреждения; -
3— информационные сообщения; -
4и выше — различные уровни трассировки.
Также параметр log level поддерживает установку различных уровней для отдельных классов логирования. При необходимости наряду с уровнем логирования для класса может быть указан файл, в который будет вести запись отладочной информации. Для этого к имени класса логирования добавляется часть @PATH.
Это позволяет агрегировать логи по их специфике и увеличивать уровень логирования только для тех сообщений, которые могут быть полезны при расследовании конкретной проблемы.
При этом уровень, устанавливаемый для отдельного класса, может быть как больше, так и меньше глобального уровня.
Примеры использования параметра для настройки уровня логирования:
-
установка единого уровня логирования
3для всех классов отладки:log level = 3
-
установка общего уровня логирования
1, а для классовauthиwinbind—3:log level = 1 auth:3 winbind:3
-
установка общего уровня логирования
3и различных уровней логирования для классов отладки с указанием отдельных файлов для ведения записи:log level = 3 \ kerberos:5@/var/log/elles/kerberos.log \ drs_repl:4@/var/log/elles/drs_repl.log \ rpc_srv:4@/var/log/elles/rpc_srv.log \ dns:0
При выполнении команд с помощью утилит, поставляемых с Эллес, используется уровень логирования, установленный параметром log level в smb.conf. Он может быть переопределен с помощью опции -d. Например:
samba-tool drs showrepl -d 3
Классы логирования
В Эллес доступны следующие статические классы логирования: 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, ldapsrv, metrics.
Некоторые модули при первом использовании регистрируют динамические классы логирования. Например: catia, dfs_samba4, extd_audit, fileid, fruit, full_audit, media_harmony, preopen, recycle, shadow_copy, unityed_media, virusfilter.
Далее приводятся описания некоторых классов логирования с примерами сообщений.
acls
Класс acls предназначен для логирования проверки и изменения прав доступа на основе списков управления доступом (Access Control Lists).
Пример записи
descriptor_prepare_commit: changes: num_processed=0 [2024/08/23 12:09:31.456167, 3, pid=990, effective(0, 0), real(0, 0), class=acls] ../../source4/dsdb/samdb/ldb_modules/descriptor.c:2153
auth_audit, auth_json_audit
Классы auth_audit и auth_json_audit предназначены для логирования информации об аутентификации и авторизации учетных записей, успешных и неуспешных попытках входа в систему, изменениях паролей и изменениях статусов учетных записей.
Записи содержат имя пользователя, IP-адрес клиента, время и результат попытки входа.
Могут использоваться, например, для отслеживания попыток несанкционированного входа.
Пример записи в текстовом формате
[2024/08/23 12:33:52.304398, 3, pid=992, effective(0, 0), real(0, 0), class=auth_audit] ../../auth/auth_log.c:876(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[elles-dc$@DOMAIN.NAME] at [Fri, 23 Aug 2024 12:33:52.304383 MSK] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_OK] workstation [(null)] remote host [ipv4:10.29.1.25:53774] became [DOMAIN]\[elles-dc$] [S-1-5-21-3831146672-3998268472-1207887917-1600]. local host [NULL]
Пример записи в JSON
{
"timestamp": "2024-08-22T19:18:55.053337+0300", "type": "Authentication", "Authentication": {
"version": {
"major": 1, "minor": 3
}
, "eventId": 4625, "logonId": "924c0b0e405b8a28", "logonType": 3, "status": "NT_STATUS_PROTOCOL_UNREACHABLE", "localAddress": null, "remoteAddress": "ipv4:10.29.0.124:54145", "serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication", "clientDomain": null, "clientAccount": "ELLES-SMB$@DOMAIN.NAME", "workstation": null, "becameAccount": "ELLES-SMB$", "becameDomain": "DOMAIN", "becameSid": "S-1-5-21-3831146672-3998268472-1207887917-1000", "mappedAccount": "ELLES-SMB$", "mappedDomain": "DOMAIN", "netlogonComputer": null, "netlogonTrustAccount": null, "netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null, "passwordType": "aes256-cts-hmac-sha1-96", "clientPolicyAccessCheck": null, "serverPolicyAccessCheck": null, "duration": 16954
}
}
dns
Класс dns предназначен для логирования запросов на поиск и изменение записей DNS.
Пример записи
[2024/08/23 12:24:28.373948, 10, pid=1009, effective(0, 0), real(0, 0), class=dns] ../../source4/dns_server/dns_server.c:566(dns_udp_call_loop)
Received DNS UDP packet of length 75 from ipv4:10.29.0.124:32912
[2024/08/23 12:24:28.373975, 8, pid=1009, effective(0, 0), real(0, 0), class=dns] ../../lib/util/util.c:596(dump_data_dbgc)
[0000] 26 1F 01 00 00 01 00 00 00 00 00 00 24 34 63 30 &....... ....$4c0
[0010] 36 38 64 64 33 2D 39 63 61 38 2D 34 64 65 33 2D 68dd3-9c a8-4de3-
[0020] 38 37 64 63 2D 31 30 37 36 32 32 38 38 66 63 31 87dc-107 62288fc1
[0030] 30 06 5F 6D 73 64 63 73 07 61 64 6F 6D 61 69 6E 0._msdcs .domain
[0040] 05 6C 6F 63 61 6C 00 00 1C 00 01 .local.. ...
[2024/08/23 12:24:28.374046, 10, pid=1009, effective(0, 0), real(0, 0), class=dns] ../../librpc/ndr/ndr.c:414(ndr_print_debugc)
&state->in_packet: struct dns_name_packet
id : 0x261f (9759)
operation : 0x0100 (256)
0x00: DNS_RCODE (0)
0: DNS_FLAG_RECURSION_AVAIL
1: DNS_FLAG_RECURSION_DESIRED
0: DNS_FLAG_TRUNCATION
0: DNS_FLAG_AUTHORITATIVE
0x00: DNS_OPCODE (0)
0: DNS_FLAG_REPLY
qdcount : 0x0001 (1)
ancount : 0x0000 (0)
nscount : 0x0000 (0)
arcount : 0x0000 (0)
questions: ARRAY(1)
questions: struct dns_name_question
name : '4c078dd3-9ca8-4de3-98dc-10762288fc10._msdcs.domain.name'
question_type : DNS_QTYPE_AAAA (0x1C)
question_class : DNS_QCLASS_IN (0x1)
answers: ARRAY(0)
nsrecs: ARRAY(0)
additional: ARRAY(0)
drs_repl
Класс логирования drs_repl предназначен для логирования событий входящей и исходящей репликации на контроллере домена.
Пример записи
2024/08/22 19:19:05.149640, 4, pid=3690, effective(0, 0), real(0, 0), class=drs_repl] ../../source4/dsdb/samdb/ldb_modules/repl_meta_data.c:7453(replmd_replicated_uptodate_modify) DRS replication up-to-date modify message: dn: CN=Schema,CN=Configuration,DC=domain,DC=name changetype: modify replace: replUpToDateVector replUpToDateVector:: AgAAAAAAAAABAAAAAAAAACBzNQfwqUtOto8mhP3tviqMGgAAAAAAAACAP tXesZ0B - replace: repsFrom repsFrom:: AQAAAAAAAAAOAQAAAAAAAPn11xwDAAAA+fXXHAMAAAAAAAAA0AAAAD4AAABkAAAAERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERAAAAAH0aAAAAAAAAAAAAAAAAAAB9GgAAAAAAANONBkyon ONNh9wQdiKI/BAgczUH8KlLTraPJoT97b4qAAAAAAAAAAAAAAAAAAAAADoAAAA0YzA2OGRkMy05Y2 E4LTRkZTMtODdkYy0xMDc2MjI4OGZjMTAuX21zZGNzLmFkb21haW4ubG9jYWwA - [2024/08/22 19:19:05.153636, 2, pid=3690, effective(0, 0), real(0, 0), class=drs_repl] ../../source4/dsdb/repl/replicated_objects.c:1092(dsdb_replicated_objects_commit) Replicated 0 objects (0 added, 0 merged) (0 linked attributes) for CN=Schema,CN=Configuration,DC=domain,DC=name
dsdb_audit, dsdb_json_audit
Классы dsdb_audit и dsdb_json_audit предназначены для логирования изменений в базе данных sam.ldb (изменения пользователей, групп, разрешений, структуры каталога и т. д.).
Пример записи в текстовом формате
[2024/08/22 19:18:55.184718, 5, pid=3690, effective(0, 0), real(0, 0), class=dsdb_audit] ../../lib/audit_logging/audit_logging.c:97(audit_log_human_text)
DSDB Change [Modify] at [Thu, 22 Aug 2024 19:18:55.184685 MSK] status [Success] remote host [Unknown] SID [S-1-5-18] DN [CN=Schema,CN=Configuration,DC=domain,DC=name] attributes [replace: repsTo {AQAAAAAAAAAOAQAAAAAAAO/11xwDAAAA7/XXHAMAAAAAAAAA0AAAAD4AAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANONBkyonONNh9wQdiKI/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA0YzA2OGRkMy05Y2E4LTRkZTMtODdkYy0xMDc2MjI4OGZjMTAuX21zZGNzLmFkb21haW4ubG9jYWwA}]
Пример записи в JSON
{
"timestamp": "2024-08-22T19:18:55.045255+0300",
"type": "dsdbChange",
"dsdbChange": {
"version": {
"major": 1,
"minor": 0
},
"statusCode": 0,
"status": "Success",
"operation": "Modify",
"remoteAddress": null,
"performedAsSystem": false,
"userSid": "S-1-5-18",
"dn": "CN=ELLES-SMB,OU=Domain Controllers,DC=domain,DC=name",
"transactionId": "b93bfe29-1b68-4729-b876-282631cb8076",
"sessionId": "870df198-9ccc-4e53-9a15-44f74265238a",
"attributes": {
"lastLogon": {
"actions": [{
"action": "replace",
"values": [{
"value": "133688171350437640"
}]
}]
},
"logonCount": {
"actions": [{
"action": "replace",
"values": [{
"value": "51"
}]
}]
}
}
}
}
dsdb_transaction_audit, dsdb_transaction_json_audit
Классы dsdb_transaction_audit и dsdb_transaction_json_audit предназначены для логирования транзакций (фиксация, откат) в базе данных каталога.
Могут использоваться для контроля целостности данных.
Пример записи в текстовом формате
DSDB Transaction [commit] at [Fri, 23 Aug 2024 12:08:21.400722 MSK] duration [22097] [2024/08/23 12:08:21.419767, 10, pid=990, effective(0, 0), real(0, 0), class=dsdb_transaction_audit] ../../lib/audit_logging/audit_logging.c:97(audit_log_human_text)
Пример записи в JSON
{
"timestamp": "2024-08-22T19:18:55.181492+0300",
"type": "dsdbTransaction",
"dsdbTransaction": {
"version": { "major": 1, "minor": 0 },
"action": "commit",
"transactionId": "4d892f2b-9845-4baa-81a7-d8fccab5ae79",
"duration": 3977
}
}
idmap
Класс idmap предназначен для логирования событий установки соответствия между SID и группами в Linux (Identity Mapping).
Позволяет отслеживать интеграцию учетных записей Windows и Linux, управление которыми осуществляется средствами Эллес.
Пример записи
[2024/08/23 12:07:01.284284, 10, pid=1007, effective(0, 0), real(0, 0), class=idmap, traceid=1] ../../source3/winbindd/idmap.c:124(lp_scan_idmap_found_domain) lp_scan_idmap_found_domain: Found idmap domain "*"
kerberos
Класс Kerberos предназначен для логирования событий взаимодействия по протоколу Kerberos.
Пример записи
[2024/08/22 19:18:55.075855, 3, pid=3705, effective(0, 0), real(0, 0), class=kerberos] ../../source4/auth/kerberos/krb5_init_context.c:90(smb_krb5_debug_wrapper) Kerberos: AS-REQ SUCCESS ipv4:10.29.0.124:38618 ELLES-SMB$@DOMAIN.NAME krbtgt/DOMAIN.NAME@DOMAIN.NAME pa=ENC-TS etype=18/18 canon_client_name=ELLES-SMB$@DOMAIN.NAME pac_attributes=2 pa-etype=18 client-pa=ENC-TS,REQ-ENC-PA-REP end=1724379535 auth=1724343535 etypes=18,17,20,19,16,23 pa-succeeded-kvno=1 elapsed=0.018523 flags=canonicalize,forwardable [2024/08/22 19:18:55.092705, 10, pid=3705, effective(0, 0), real(0, 0), class=kerberos] ../../source4/kdc/kdc-server.c:288(kdc_tcp_call_loop) kdc_tcp_call_loop: Received krb5 TCP packet of length 1995 from ipv4:10.29.0.124:38622
ldb
Класс ldb предназначен для логирования подключений к базе данных LDAP.
Пример записи
[2024/08/23 15:18:52.017469, 3, pid=3687, effective(0, 0), real(0, 0), class=ldb] ../../lib/ldb-samba/ldb_wrap.c:348(ldb_wrap_connect) ldb_wrap open of privilege.ldb [2024/08/23 16:03:51.934150, 3, pid=3689, effective(0, 0), real(0, 0), class=ldb] ../../lib/ldb-samba/ldb_wrap.c:348(ldb_wrap_connect) ldb_wrap open of secrets.ldb
locking
Класс locking предназначен для логирования блокировок файлов базы данных каталога и конкретных записей при одновременном доступе к ним разных клиентов.
Пример записи
[2024/08/23 12:43:37.099163, 3, pid=3285, effective(0, 0), real(0, 0), class=locking] ../../source3/smbd/smb2_oplock.c:1350(init_oplocks) init_oplocks: initializing messages.
passdb
Класс passdb предназначен для логирования доступа к хранилищу данных паролей.
Пример записи
[2024/08/23 14:53:32.070728, 5, pid=3660, effective(0, 0), real(0, 0), class=passdb, traceid=1] ../../source3/passdb/pdb_interface.c:190(make_pdb_method_name) pdb backend samba_dsdb has a valid init [2024/08/23 14:53:32.083756, 5, pid=3681, effective(0, 0), real(0, 0), class=passdb, traceid=1] ../../source3/passdb/pdb_interface.c:157(make_pdb_method_name) Attempting to find a passdb backend to match samba_dsdb (samba_dsdb) [2024/08/23 14:53:32.083786, 5, pid=3681, effective(0, 0), real(0, 0), class=passdb, traceid=1] ../../source3/passdb/pdb_interface.c:178(make_pdb_method_name) Found pdb backend samba_dsdb
registry
Класс registry предназначен для логирования взаимодействия с данными реестра Windows, которые используются в службе каталогов.
Пример записи
[2024/08/22 19:18:50.624677, 10, pid=3673, effective(0, 0), real(0, 0), class=registry] ../../source3/registry/reg_backend_db.c:1953(regdb_fetch_values_internal) regdb_fetch_values: Looking for values of key [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports]
rpc_parse
Класс rpc_parse предназначен для логирования информации об обработке RPC-сообщений.
Может использоваться при анализе репликации.
Пример записи
[2024/08/22 19:18:55.199865, 10, pid=3690, effective(0, 0), real(0, 0), class=rpc_parse] ../..
/librpc/rpc/dcerpc_util.c:404(dcerpc_pull_auth_trailer)
dcerpc_pull_auth_trailer: auth_pad_length 12
[2024/08/22 19:18:55.205454, 10, pid=3690, effective(0, 0), real(0, 0), class=rpc_parse] ../..
/librpc/ndr/ndr.c:501(ndr_print_function_debug)
drsuapi_DsReplicaSync: struct drsuapi_DsReplicaSync
in: struct drsuapi_DsReplicaSync
bind_handle : *
bind_handle: struct policy_handle
handle_type : 0x00000000 (0)
uuid : fd05a97f-56d3-4fcc-ac6a-2ae05b513887
level : 0x00000001 (1)
req : *
req : union drsuapi_DsReplicaSyncRequest(case 1)
req1: struct drsuapi_DsReplicaSyncRequest1
naming_context : *
naming_context: struct drsuapi_DsReplicaObjectIdentifier
__ndr_size : 0x00000060 (96)
__ndr_size_sid : 0x00000018 (24)
guid : 6960ab23-b51a-430c-8d35-367b885d9292
sid : S-1-5-21-3831146672-3998268472-120788
7917
__ndr_size_dn : 0x00000013 (19)
dn : 'DC=domain,DC=name'
source_dsa_guid : f0f28bc3-a711-47f7-a62c-d1f8117ba912
source_dsa_dns : NULL
options : 0x00080013 (524307)
rpc_srv
Класс rpc_srv предназначен для логирования информации о регистрации конечных точек RPC.
Пример записи
[2024/08/23 14:53:31.289223, 5, pid=3630, effective(0, 0), real(0, 0), class=rpc_srv] ../../librpc/rpc/dcesrv_core.c:555(dcesrv_interface_register_b) dcesrv_interface_register_b: Interface 'dnsserver' registered on endpoint 'ncacn_ip_tcp:' (single process required) [2024/08/23 14:53:31.289259, 5, pid=3630, effective(0, 0), real(0, 0), class=rpc_srv] ../../librpc/rpc/dcesrv_core.c:555(dcesrv_interface_register_b) dcesrv_interface_register_b: Interface 'dnsserver' registered on endpoint 'ncacn_np:[\pipe\dnsserver]' (single process required) [2024/08/23 14:53:32.080222, 3, pid=3660, effective(0, 0), real(0, 0), class=rpc_srv, traceid=1, depth=1] ../../librpc/rpc/dcesrv_core.c:2827(dcerpc_register_ep_server) DCERPC endpoint server 'winbind' registered
smb2
Класс smb2 предназначен для логирования вызовов по протоколу SMB.
Пример записи
[2024/08/23 17:10:08.709336, 10, pid=4168, effective(0, 100), real(0, 0), class=smb2] ../../source3/smbd/smb2_server.c:5086(smbd_smb2_advance_incoming) smbd_smb2_request idx[1] of 5 vectors [2024/08/23 17:10:08.709386, 10, pid=4168, effective(0, 100), real(0, 0), class=smb2] ../../source3/smbd/smb2_server.c:3067(smbd_smb2_request_dispatch) smbd_smb2_request_dispatch: opcode[SMB2_OP_TDIS] mid = 7 [2024/08/23 17:10:08.710092, 10, pid=4168, effective(0, 0), real(0, 0), class=smb2] ../../source3/smbd/smb2_server.c:3931(smbd_smb2_request_done_ex) smbd_smb2_request_done_ex: mid [7] idx[1] status[NT_STATUS_OK] body[4] dyn[no:0] at ../../source3/smbd/smb2_tcon.c:650 [2024/08/23 17:10:08.710392, 10, pid=4168, effective(0, 0), real(0, 0), class=smb2] ../../source3/smbd/smb2_server.c:1770(smbd_server_connection_terminate_ex) smbd_server_connection_terminate_ex: conn[PID=4168,CLIENT=4513816e-4afb-4e5f-97f4-b55674371649,channel=1,remote=ipv4:10.29.1.25:36806,local=ipv4:10.29.0.124:445] num_ok[0] reason[NT_STATUS_CONNECTION_RESET] at ../../source3/smbd/smb2_server.c:5245
smb2_credits
Класс smb2_credits предназначен для логирования передачи данных по протоколу SMB. Записи содержат информацию о количестве переданных запросов и количестве запросов, которые осталось выполнить для завершения передачи файлов.
Пример записи
smb2_set_operation_credit: smb2_set_operation_credit: requested 1, charge 1, granted 0, current possible/max 0/8192, total granted/max/low/range 8192/8192/5/8192 [2024/08/23 17:08:28.521906, 10, pid=4069, effective(0, 100), real(0, 0), class=smb2_credits] ../../source3/smbd/smb2_server.c:803(smb2_validate_sequence_number) smb2_validate_sequence_number: smb2_validate_sequence_number: clearing id 5 (position 5) from bitmap [2024/08/23 17:08:28.521995, 10, pid=4069, effective(0, 100), real(0, 0), class=smb2_credits] ../../source3/smbd/smb2_server.c:2735(smbd_smb2_request_verify_creditcharge) smbd_smb2_request_verify_creditcharge: mid 5, CreditCharge: 1, NeededCharge: 1 [2024/08/23 17:08:28.523147, 10, pid=4069, effective(0, 100), real(0, 0), class=smb2_credits] ../../source3/smbd/smb2_server.c:1068(smb2_set_operation_credit)
vfs
Виртуальная файловая система (Virtual File System, VFS) представляет собой абстракцию над различными источниками данных (файловая система, сетевые и облачные хранилища).
Класс vfs предназначен для логирования проблем с правами доступа и некорректным поведением бэкенда, абстрагируемого VFS.
Пример записи
[2024/08/23 17:10:07.604357, 2, pid=4168, effective(0, 0), real(0, 0), class=vfs] ../../source3/modules/vfs_acl_xattr.c:209(connect_acl_xattr) connect_acl_xattr: setting 'inherit acls = true' 'dos filemode = true' and 'force unknown acl user = true' for service IPC$ [2024/08/23 17:10:07.609500, 4, pid=4168, effective(0, 100), real(0, 0), class=vfs] ../../source3/smbd/vfs.c:938(vfs_ChDir) vfs_ChDir to /tmp [2024/08/23 17:10:07.609530, 5, pid=4168, effective(0, 100), real(0, 0), class=vfs] ../../source3/smbd/vfs.c:1000(vfs_ChDir) vfs_ChDir: vfs_ChDir got /tmp [2024/08/23 17:10:08.160221, 4, pid=4168, effective(0, 100), real(0, 0), class=vfs] ../../source3/smbd/vfs.c:938(vfs_ChDir) vfs_ChDir to /tmp
winbind
Класс winbind предназначен для логирования сообщений при присоединении клиентов к Эллес для проведения различных операций.
Позволяет анализировать работу сервиса Winbind, отвечающего за взаимодействие между Unix-системами и службой каталогов, в том числе Эллес и Active Directory.
Пример записи
winbindd_dual_ndrcmd: Running command wbint_LookupName (domain 'DOMAIN') [2024/08/23 17:09:58.123278, 10, pid=4157, effective(0, 0), real(0, 0), class=winbind, traceid=1] ../../source3/winbindd/winbindd_cache.c:3639(get_global_winbindd_state_offline) get_global_winbindd_state_offline: Offline state not set. [2024/08/23 17:09:58.123593, 10, pid=4157, effective(0, 0), real(0, 0), class=winbind, traceid=1] ../../source3/winbindd/winbindd_cache.c:1802(wcache_name_to_sid) wcache_name_to_sid: cache entry not found [2024/08/23 17:09:58.123618, 10, pid=4157, effective(0, 0), real(0, 0), class=winbind, traceid=1] ../../source3/winbindd/winbindd_cache.c:1833(wb_cache_name_to_sid) wb_cache_name_to_sid: name_to_sid: [Cached] - doing backend query for name for domain DOMAIN [2024/08/23 17:09:58.123646, 3, pid=4157, effective(0, 0), real(0, 0), class=winbind, traceid=1] ../../source3/winbindd/winbindd_samr.c:680(sam_name_to_sid) sam_name_to_sid: DOMAIN\ [2024/08/23 17:09:58.123867, 4, pid=4157, effective(0, 0), real(0, 0), class=winbind, traceid=1] ../../source3/winbindd/winbindd_dual.c:1660(child_handler) Finished processing child request 55 [2024/08/23 17:09:58.123889, 10, pid=4157, effective(0, 0), real(0, 0), class=winbind, traceid=1] ../../source3/winbindd/winbindd_dual.c:160(child_write_response) Writing 4040 bytes to parent [2024/08/23 17:09:58.124030, 5, pid=4141, effective(0, 0), real(0, 0), class=winbind, traceid=1] ../../source3/winbindd/wb_lookupname.c:121(wb_lookupname_recv) WB command lookupname end. Found SID S-1-5-21-3821346672-3998268472-1207887917 with SID type 3.
ldapsrv
Класс ldapsrv предназначен для логирования запросов к серверу LDAP.
Пример записи
[2024/08/23 17:48:51.946711, 5, pid=4161, effective(0, 0), real(0, 0), class=ldapsrv] ../../source4/ldap_server/ldap_backend.c:1080(ldapsrv_SearchRequest) ldapsrv_SearchRequest: LDAP Query: Duration was 0.00s, SearchRequest by S-1-5-21-3831146672-3998268472-1207887917-1600 from ipv4:10.29.1.25:57252 filter: [(&(&(objectCategory=sudoRole)(uSNChanged>=7232))(|(&(!(sudoHost=*))(cn=defaults))(sudoHost=ALL)(sudoHost=elles-dc)(sudoHost=elles-dc)(sudoHost=10.29.1.25)(sudoHost=10.29.0.0/16)(sudoHost=fe80::d20d:1aff:fe5a:654c)(sudoHost=fe80::/64)(sudoHost=+*)))] basedn: [DC=domain,DC=name] scope: [SUB] result: Success
metrics
Класс metrics предназначен для логирования сообщений, формируемых сервисом metrics_manager в составе Эллес. В том числе он используется для периодической фиксации значений метрик (интервал опроса по умолчанию — 60 секунд).
Пример записи
[2024/10/10 15:18:01.079930, 3] ../../source4/metrics_manager/metrics_manager_service.c:1201(metrics_manager_periodic_run) metrics_manager_periodic_run: Metrics dump: Section SAMDOM: TreeDepth: 3 BranchPages: 7 LeafPages: 245 OverflowPages: 652 DataEntries: 3437 PageSize: 4096 UsedPages: 906 MaxPages: 2097152 LastTransactionID: 196224 MaxReaders: 100000 UsedReaders: 6 MaxDbSize: 8589934592 UsedDbSize: 3710976 Section DOMAINDNSZONES: TreeDepth: 2 BranchPages: 1 LeafPages: 23 OverflowPages: 64 DataEntries: 310 PageSize: 4096 UsedPages: 90 MaxPages: 2097152 LastTransactionID: 135802 MaxReaders: 100000 UsedReaders: 6 MaxDbSize: 8589934592 UsedDbSize: 368640 Section CONFIGURATION: TreeDepth: 3 BranchPages: 26 LeafPages: 1264 OverflowPages: 643 DataEntries: 8120 PageSize: 4096 UsedPages: 1935 MaxPages: 2097152 LastTransactionID: 166479 MaxReaders: 100000 UsedReaders: 5 MaxDbSize: 8589934592 UsedDbSize: 7925760 Section samba_dnsupdate: RunCount: 14 RunCountDuration: 276664 LastRunDuration: 9.458168 LastRunExitCode: 0 Section FORESTDNSZONES: TreeDepth: 2 BranchPages: 1 LeafPages: 11 OverflowPages: 31 DataEntries: 145 PageSize: 4096 UsedPages: 45 MaxPages: 2097152 LastTransactionID: 140874 MaxReaders: 100000 UsedReaders: 6 MaxDbSize: 8589934592 UsedDbSize: 184320 Section SCHEMA: TreeDepth: 3 BranchPages: 14 LeafPages: 715 OverflowPages: 1820 DataEntries: 12407 PageSize: 4096 UsedPages: 2551 MaxPages: 2097152 LastTransactionID: 53037 MaxReaders: 100000 UsedReaders: 5 MaxDbSize: 8589934592 UsedDbSize: 10448896 Section DNSOperations: Queries: 6 QueriesDuration: 549 Section LDAPOperations: Bind: 4 BindDuration: 658 BindError: 0 BindErrorDuration: 0 Search: 8 SearchDuration: 222 SearchError: 0 SearchErrorDuration: 0 Modify: 0 ModifyDuration: 0 ModifyError: 0 ModifyErrorDuration: 0 Section HealthCheck: kdc(1)[2252]: 1 smbd-notifyd[2267]: 1 nbt[2222]: 1 wrepl[2224]: 1 kdc(2)[2256]: 1 dnsupdate[2255]: 1 ntp_signd[2247]: 1 s3fs[2216]: 1 wb[2271]: 1 ldap(2)[2284]: 1 smbd-cleanupd[2268]: 1 rpc(2)[2236]: 1 cldap[2232]: 1 ldap[2228]: 1 kcc[2251]: 1 ldap(3)[2286]: 1 wb[2269]: 1 rpc(3)[2240]: 1 smbd[2221]: 1 samba[2212]: 1 kdc(3)[2258]: 1 kdc[2235]: 1 rpc[2219]: 1 ldap(0)[2276]: 1 winbindd[2250]: 1 kdc(0)[2245]: 1 winbindd[2242]: 1 ldap(1)[2278]: 1 drepl[2239]: 1 rpc(0)[2227]: 1 rpc(1)[2231]: 1 Section REPLOperations: Replicate: 44 ReplicateDuration: 4104 Section KCC: InboundSuccess: 10 InboundFailure: 0 OutboundSuccess: 10 OutboundFailure: 0 Section KDCOperations: AS_REQ: 6 AS_REQDuration: 3239 TGS_REQ: 23 TGS_REQDuration: 13747 ProxyReq: 0 ProxyReqDuration: 0 Section DNS: ZoneCount: 3
lacheck
Класс lacheck предназначен для логирования сообщений, формируемых процедурой обработки связанных атрибутов (linked attributes).
Пример записи
[2024/11/13 12:52:21.869192, 1] ../../source4/dsdb/link_attr_check/link_attr_check_service.c:130(lacheck_periodic_schedule) lacheck_periodic_schedule: lacheck:periodic_interval is too small. Resetting to 20 minutes [2024/11/13 12:52:21.869326, 3] ../../source4/dsdb/link_attr_check/link_attr_check_service.c:155(lacheck_periodic_schedule) lacheck_periodic_schedule: lacheck__periodc_schedule(20) scheduled for: Wed Nov 13 12:52:22 2024 MSK [2024/11/13 12:52:21.955397, 5] ../../source4/dsdb/link_attr_check/link_attr_check_service.c:97(lacheck_periodic_run) lacheck_periodic_run: found partitions to process: DC=ForestDnsZones,DC=elles,DC=inno,DC=tech DC=DomainDnsZones,DC=elles,DC=inno,DC=tech CN=Configuration,DC=elles,DC=inno,DC=tech CN=Schema,CN=Configuration,DC=elles,DC=inno,DC=tech DC=elles,DC=inno,DC=tech [2024/11/13 12:52:27.993297, 5] ../../source4/dsdb/link_attr_check/link_attr_check_service.c:111(lacheck_periodic_run) lacheck_periodic_run: finished processing partitions
Рекомендации по настройке параметров логирования
При настройке параметров логирования должны учитываться следующие факторы:
-
среда, в которой работает контроллер домена: промышленная среда, тестовая среда;
-
режим эксплуатации контроллера домена: начало работы в промышленной среде, обычная эксплуатация в промышленной среде, поиск проблем в промышленной или тестовой среде;
-
требования к сроку хранения данных: период, необходимый для выяснения причин ошибок; период аудита в рамках требований законодательства (сроки исковой давности и другие применимые требования) и т. д.
Настройка параметров логирования в условиях штатной эксплуатации в промышленной среде
Для обеспечения стабильной работы в режиме штатной эксплуатации в промышленной среде рекомендуется использовать следующие настройки логирования на всех контроллерах домена:
-
единый приемник логирования (файл, syslog и т. д.);
-
общий уровень логирования:
log level = 1(фиксируются критические и менее критические ошибки); -
максимальный размер лог-файла:
max log size = 10000(10 МБ); -
ротация и перенаправление лог-файлов для обеспечения срока хранения, необходимого для выяснения причин ошибок и аудита в рамках требований законодательства.
Пример конфигурации логирования в файле smb.conf:
[global]
...
max log size = 10000
log file = /var/log/elles/common.log
log level = 1
...
Для целей аудита или иных целей могут устанавливаться более высокие уровни логирования для отдельных классов с сохранением записей в общий файл или отдельные файлы.
Пример конфигурации логирования с повышением уровня для целей аудита в файле smb.conf:
[global]
...
max log size = 10000
log file = /var/log/elles/common.log
log level = 1 \
auth:3@/var/log/elles/auth.log \
auth_audit3:@/var/log/elles/auth.log
...
Настройка параметров логирования при начале эксплуатации в промышленной среде
При начале эксплуатации Эллес в промышленной среде, при интеграции значимых обновлений, а также в тестовых средах рекомендуется на избранных или, если это необходимо, на всех контроллерах устанавливать уровень логирования 3.
Пример конфигурации логирования в файле smb.conf:
[global]
...
max log size = 10000
log file = /var/log/elles/common.log
log level = 3
...
Если есть основания подозревать нестабильность работы отдельной подсистемы Эллес, например вследствие недавно выпущенных обновлений, для классов отладки, связанных с данной подсистемой, может устанавливаться более высокий уровень логирования. При этом для упрощения анализа рекомендуется направлять такие сообщения в отдельный файл.
Например, после выпуска обновлений, влияющих на работу KDC, имеет смысл временно на избранных контроллерах установить уровень логирования 5 для класса kerberos. В этом случае в файле smb.conf может использоваться следующая конфигурация логирования:
[global]
...
max log size = 10000
log file = /var/log/elles/common.log
log level = 3 \
kerberos:5@/var/log/elles/kerberos.log
...
При переходе к штатной эксплуатации следует отредактировать файлы smb.conf на контроллерах домена в соответствии с рекомендациями в подразделе «Настройка параметров логирования в условиях штатной эксплуатации в промышленной среде».
Настройка параметров логирования при поиске проблем
В случае возникновения ошибок сохраненных логов должно быть достаточно, чтобы идентифицировать проблему или, по крайней мере, определить дальнейшие действия по ее воспроизведению с увеличением уровня логирования для классов отладки, относящихся к затронутым проблемой подсистемам Эллес.
Для целей выявления проблем и аудита рекомендуется:
-
вести отдельные лог-файлы для разных классов логирования;
-
установить достаточно большой размер лог-файлов для удобства управления ими и анализа.
В случае подозрения на наличие проблем в промышленной среде рекомендуется установить уровень логирования 3 для избранных классов логирования и избранных контроллеров домена.
Если выводимой в лог-файлы информации недостаточно, для избранных классов уровень логирования может быть повышен до 5.
Для анализа проблем в тестовой среде рекомендуется уровеь логирования 5.
Пример конфигурации логирования в файле smb.conf:
[global]
...
max log size = 10000
log file = /var/log/elles/common.log
log level = 1 \
auth_audit:3@/var/log/elles/auth_audit.log \
drs_repl:3@/var/log/elles/drs_repl.log
...
При переходе к штатной эксплуатации после устранения проблемы следует отредактировать файлы smb.conf на контроллерах домена в соответствии с рекомендациями в подразделе «Настройка параметров логирования в условиях штатной эксплуатации в промышленной среде».
Рекомендации по оценке размера дискового пространства для хранения лог-файлов
В таблице Табл. 1 приводится оценка размера лога за один рабочий день для некоторых классов логирования.
Оценка основана на следующих допущениях:
-
количество пользователей — 100 000;
-
распределение пользователей по контроллерам домена — 2 000 пользователей на 1 контроллер;
-
ограничение максимального размера лог-файла — 10 МБ;
-
уровень логирования — 3;
Уровень 3 должен включаться избирательно для определенных классов логирования на отдельных контроллерах домена на непродолжительные периоды времени, достаточные для разрешения имеющихся проблем. -
учитываемые операции:
-
вход пользователя с доменной учетной записью: 3 операции аутентификации в день на одного пользователя;
-
смена пароля учетной записи: период ротации пароля составляет 90 дней;
-
изменение данных пользователя: данные одного пользователя изменяются один раз в год;
-
доступ к сервисам:
-
время жизни сервисного билета Kerberos — 10 часов;
-
пользователь использует 5 разных сервисов в день с 1 аутентификацией и 10 валидациями билета Kerberos.
-
-
| Необходимо учитывать, что рабочий день может состоять из нескольких смен и в нерабочее время возможен небольшой прирост размера лог-файлов. Указанные в таблице значения являются минимальными. В условиях реальной эксплуатации они могут быть немного больше. |
| Класс | Операция | Размер в рабочий день на 1 контроллер, КБ | Примечание | Оценка размера лог-файла за рабочий день, МБ | Оценка количества лог-файлов, шт. |
|---|---|---|---|---|---|
|
Вход пользователя |
2.5*<кол-во пользователей>*3/<кол-во контроллеров> |
— |
95 |
10 |
Доступ к сервисам |
1.9*<кол-во пользователей>*20/<кол-во контроллеров> |
||||
|
Вход пользователя |
1.8*<кол-во пользователей>*3/<кол-во контроллеров> |
— |
93 |
10 |
Смена пароля |
1*<кол-во пользователей>/(90*<приведенное кол-во контроллеров>) |
Приведенное кол-во контроллеров* — 1.5 |
|||
Изменение пользователя |
3*<кол-во пользователей>/(365*<приведенное количество контроллеров>) |
||||
Доступ к сервисам |
2*<кол-во пользователей>*20/<кол-во контроллеров> |
— |
|||
|
Доступ к сервисам |
2.3*<кол-во пользователей>*20/<кол-во контроллеров> |
— |
92 |
10 |
|
Смена пароля |
2.7*<кол-во пользователей>/(90*<приведенное кол-во контроллеров>) |
Приведенное количество контроллеров* — 12 |
1 |
1 |
Изменение пользователя |
7.4*<кол-во пользователей>/(90*<приведенное кол-во контроллеров>) |
||||
|
Вход пользователя |
38.2*<кол-во пользователей>*3/<кол-во контроллеров> |
— |
320 |
4 |
Доступ к сервисам |
23*<кол-во пользователей>*20/<кол-во контроллеров> |
— |
|||
|
Доступ к сервисам |
0.5*<кол-во пользователей>*20/<кол-во контроллеров> |
— |
20 |
2 |
|
Доступ к сервисам |
0.1*<кол-во пользователей>*20/<кол-во контроллеров> |
— |
4 |
1 |
|
Доступ к сервисам |
0.1*<кол-во пользователей>*2/<кол-во контроллеров> |
Только сервисы SMB; допущение — это 1/10 доля от всех сервисов |
0.4 |
1 |
|
Доступ к сервисам |
0.7*<кол-во пользователей>*2/<кол-во контроллеров> |
2.8 |
1 |
|
|
Доступ к сервисам |
0.9*<кол-во пользователей>*20/<кол-во контроллеров> |
— |
36 |
4 |
* Приведенное количество контроллеров соответствует примерной оценке числа контроллеров, вовлеченных в конкретное действие. Необходимость использования такой примерной оценки обусловлена тем, что некоторые действия, приводящие к формированию записей в логах, выполняются несколькими контроллерами одновременно. Например, смена пароля происходит на одном контроллере, но через репликацию остальные контроллеры также принимают участие в этом действии и фиксируют в логах полученные изменения.
Исходя из данных в таблице в день на одном контроллере домена может потребоваться около 700 МБ дискового пространства для логов при включенном уровне 3 для всех указанных классов логирования.
| Условия эксплуатации конкретного экземпляра Эллес в промышленной среде могут расходиться с принятыми допущениями. В этом случае коэффициенты в Табл. 1 должны быть скорректированы соответствующим образом. |
Примеры конфигурации логирования
Пример базовой конфигурации логирования в файле smb.conf с указанием пути к общему лог-файлу, ограничением размера лог-файла значением 10 МБ и установкой общего уровня логирования 1 для фиксации критических и некритических ошибок:
[global]
...
log file = /var/log/elles/common.log
max log size = 10000
log level = 1
...
Пример конфигурации логирования в файле smb.conf c повышением уровня логирования для определенных классов отладки с указанием отдельных файлов:
[global]
...
log file = /var/log/elles/common.log
max log size = 10000
log level = 1 \
kerberos:3@/var/log/elles/kerberos.log \
drs_repl:3@/var/log/elles/drs_repl.log \
rpc_srv:3@/var/log/elles/rpc_srv.log \
ldapsrv:3@/var/log/elles/ldapsrv.log \
metrics:3@/var/log/elles/metrics.log \
dns:3@/var/log/elles/dns.log
...
Пример настройки ротации лог-файлов
Для ротации лог-файлов, формируемых сервисами Эллес, может использоваться системная утилита logrotate.
|
См. инструкции по настройке |
Пример файла /etc/logrotate.d/inno-samba с минимальной конфигурацией ротации:
/var/log/elles/*log {
size 10M
compress
dateext
dateformat -%Y-%m-%d-%s
rotate 100
missingok
}
Описание директив в примере:
-
/var/log/elles/*log— путь к каталогу с лог-файлами (если отличается от пути по умолчанию, задается в параметреlog fileв файле smb.conf); -
size— максимальный размер лог-файла, по достижении которого должна происходить ротация; -
compress— сжатие лог-файлов; -
dateext— добавление к расширению файла даты ротации;Для задания формата могут использоваться параметры
dateformatиdateyesterday. В примере используетсяdateformat. -
rotate— количество ротаций до удаления или отправки на адрес, указанный в директивеmail; если0, прежние версии удаляются без ротации; -
missingok— если файл отсутствует, перейти к следующему без сообщения об ошибке.
Для принудительного запуска ротации используйте стандартную команду:
sudo -E logrotate -vf /etc/logrotate.d/inno-samba
Примеры настройки обработки лог-файлов с использованием rsyslog и syslog-ng
Для дополнительной обработки лог-файлов с целью отбора информации по определенным правилам или с применением определенных фильтров могут использоваться утилиты rsyslog и syslog-ng.
Например, с помощью этих инструментов на основе общего лога процесса репликации может вестись отдельный лог-файл, содержащий только сообщения со статусами. Такой лог может использоваться для настройки оповещений при появлении в нем определенных статусов.
Для настройки формирования отдельного лога для мониторинга статусов репликации:
-
Создайте каталог для размещения файлов.
Например:
mdkir -pv /var/log/elles
-
Добавьте класс логирования для процесса репликации с указанием пути в значение параметра
log levelв файле /app/inno-samba/etc/smb.conf.Например:
log level = 1 \ drs_repl:4@/var/log/elles/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="/var/log/elles/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="/var/log/elles/repl_events.log") } -
если требуется отправлять события на другой сервер:
-
на контроллере домена создайте файл с конфигурацией для
rsyslog, например — /etc/rsyslog.d/send_repl_events.conf:module(load="imfile" PollingInterval="10") input(type="imfile" File="/var/log/elles/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 /var/log/elles/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("/var/log/elles/drs_repl.log"); }; destination d_s_repl { file("/var/log/elles/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 /var/log/elles/repl_events.log -n -5 | grep -v 'WERR_OK'