Indeed Log Server
Indeed Log Server (Log Server) — это веб-приложение, работающее на базе HTTP-сервера Kestrel. Данный модуль отвечает за централизованный сбор и аудит событий системы. События записываются в базы данных.
Настройка Log Server с разным типом хранилища данных
В этом разделе описаны параметры конфигурационных файлов для каждого типа хранилища. Не изменяйте значения без необходимости. Неправильная конфигурация может привести к неработоспособности компонента.
Чтобы зашифровать или расшифровать чувствительные данные в конфигурационных файлах, используйте утилиту protector.sh. Подробнее — в разделе Шифрование конфигурационных файлов.
Доступные типы хранилища данных:
- базы данных Microsoft SQL или PostgreSQL
- хранилище в Syslog
- резервное хранилище
Microsoft SQL
Microsoft SQL
Конфигурационный файл am/ls/targets/DbTarget_0.config (название по умолчанию)
Пример ConnectionString в DbTarget_0.config
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>Data Source=192.168.1.22,57974;Initial Catalog=IndeedAM9log;User ID=IndeedAMservice;Password=Q12345qq;TrustServerCertificate=true;</ConnectionString>
</Settings>
Параметры строки ConnectionString | Описание |
|---|---|
Data Source | DNS/IP-адрес сервера с базой данных |
Initial Catalog | Имя базы данных |
User ID | Имя пользователя, который имеет полные права для базы данных |
Password | Пароль пользователя |
TrustServerCertificate | Доверие серверному сертификату. Значение True — подключение Microsoft SQL к серверу |
Порт подключения в строке ConnectionString не прописан, но задан по умолчанию — 1433.
Конфигурационный файл сервера am/ls/clientApps.config
Пример блока Application в clientApps.config
<Application Id="ea" SchemaId="eaSchema">
<ReadTargetId>DbTarget_0</ReadTargetId>
<WriteTargets>
<TargetId>DbTarget_0</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2a" Rights="Write" />
</AccessControl>
</Application>
Параметры Application Id="ea" SchemaId="eaSchema" | Описание |
|---|---|
ReadTargetId | Идентификатор хранилища, откуда будет осуществляться чтение событий. Значение DbTarget_0 — это название конфигурационного файла в каталоге am/ls/targets. |
WriteTargets:TargetId | Идентификатор хранилища, куда будет осуществляться запись событий. Значение DbTarget_0 — это название конфигурационного файла в каталоге am/ls/targets.Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в каталоге am/ls/targets/ с соответствующим именем. |
CertificateAccessControl:CertificateThumbprint | Отпечаток клиентского сертификата Core Server. Указывается при использовании собственного клиентского сертификата. |
Настройка дополнительного хранилища (секция Targets)
При необходимости использовать дополнительное хранилище данных откройте конфигурационный файл сервера am/ls/clientApps.config и раскомментируйте необходимые значения в секции Targets.
Пример секции Targets в clientApps.config
<Targets>
<!-- <Target Id="DbTarget_0" Type="pgsql" /> -->
<Target Id="DbTarget_0" Type="mssql" />
<!-- <Target Id="DbTargetSqlIndeedKey" Type="pgsql" /> -->
<!-- <Target Id="DbTargetMssqlIndeedKey" Type="mssql" /> -->
<Target Id="TargetSyslog" Type="syslog" />
</Targets>
PostgreSQL
PostgreSQL
Конфигурационный файл am/ls/targets/DbTarget_0.config (название по умолчанию)
Пример DbTarget_0.config
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>server=192.168.80.30;port=5432;user id=amservice;password=Q1w2e3r4;database=am_deb_db;SSL Mode=Require;Server Compatibility Mode=Redshift</ConnectionString>
<Options>
<Option Name="EnableShortStringEqualsSearch" Value="True" />
</Options>
</Settings>
Параметры строки ConnectionString | Описание |
|---|---|
Server | DNS/IP-адрес сервера с базой данных PostgreSQL |
Database | Имя базы данных |
User ID | Имя пользователя, который имеет полные права для базы данных |
Password | Пароль пользователя |
SSL Mode | Режим подключения с использованием SSL. Если после добавления параметра возникает ошибка 08P01: unsupported startup parameter: ssl_renegotiation_limit, добавьте параметр Server Compatibility Mode=Redshift |
Параметры блока Options | Описание |
|---|---|
EnableShortStringEqualsSearch | Ускоряет поиск в больших базах данных. По умолчанию настройка включена — значение True |
Конфигурационный файл сервера am/ls/clientApps.config
Пример блока Application в clientApps.config
<Application Id="ea" SchemaId="eaSchema">
<ReadTargetId>DbTarget_0</ReadTargetId>
<WriteTargets>
<TargetId>DbTarget_0</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2a" Rights="Write" />
</AccessControl>
</Application>
Параметры Application Id="ea" SchemaId="eaSchema" | Описание |
|---|---|
ReadTargetId | Идентификатор хранилища, откуда будет осуществляться чтение событий. Значение DbTarget_0 — это название конфигурационного файла в каталоге am/ls/targets. |
WriteTargets:TargetId | Идентификатор хранилища, куда будет осуществляться запись событий. Значение DbTarget_0 — это название конфигурационного файла в каталоге am/ls/targets.Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в каталоге am/ls/targets/ с соответствующим именем. |
CertificateAccessControl:CertificateThumbprint | Отпечаток клиентского сертификата Core Server. Указывается при использовании собственного клиентского сертификата. |
Настройка дополнительного хранилища (секция Targets)
При необходимости использовать дополнительное хранилище данных откройте конфигурационный файл сервера am/ls/clientApps.config и раскомментируйте необходимые значения в секции Targets.
Пример секции Targets в clientApps.config
<Targets>
<Target Id="DbTarget_0" Type="pgsql" />
<!-- <Target Id="DbTarget_0" Type="mssql" /> -->
<!-- <Target Id="DbTargetSqlIndeedKey" Type="pgsql" /> -->
<!-- <Target Id="DbTargetMssqlIndeedKey" Type="mssql" /> -->
<Target Id="TargetSyslog" Type="syslog" />
</Targets>
Хранилище в Syslog
Хранилище в Syslog
Log Server поддерживает формат syslog. Вы можете использовать любой сервер, работающий с этим форматом (например, Syslog Watcher).
Пример настройки Syslog Watcher описан в разделе Настройка окружения.
Конфигурационный файл am/ls/TargetSyslog_0.config (название по умолчанию)
Пример ConnectionString в TargetSyslog_0.config
<Settings HostName="localhost" Port="514" Protocol="UDP" Format="Plain" />
Параметры строки ConnectionString | Описание |
|---|---|
HostName | Имя или IP-адрес Syslog-сервера |
Port | Порт Syslog-сервера. Значение по умолчанию — 514 |
Protocol | Тип подключения к Syslog-серверу: UDP, TCP, TCPoverTLS |
Format | Опциональный параметр. Определяет формат логов: Plain (по умолчанию), CEF, LEEF |
SyslogVersion | Опциональный параметр. Спецификация протокола: RFC3164, RFC5424 |
Конфигурационный файл сервера am/ls/clientApps.config
Пример блока Application в clientApps.config
<Application Id="ea" SchemaId="eaSchema">
<ReadTargetId> </ReadTargetId>
<WriteTargets>
<TargetId>TargetSyslog_0</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="001122...AA11" Rights="Read" />
</AccessControl>
</Application>
Параметры блока Application Id="ea" | Описание |
|---|---|
ReadTargetId | Идентификатор хранилища для чтения событий. Пустое значение — чтение выполняется сторонней программой (например, Syslog Watcher). |
WriteTargets:TargetId | Идентификатор хранилища для записи событий. Значение TargetSyslog_0 — это название конфигурационного файла.Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в каталоге am/ls/targets/ с соответствующим именем. |
CertificateAccessControl:CertificateThumbprint | Отпечаток клиентского сертификата Core Server. Указывается при использовании собственного клиентского сертификата. |
Резервное хранилище
Резервное хранилище
Log Server поддерживает одновременную запись событий в основное и резервное хранилище. Чтение событий осуществляется только из основного хранилища (DbTarget_0.config). Запись происходит одновременно в основное (DbTarget_0.config) и резервное (DbTarget_1.config).
Конфигурационный файл сервера am/ls/clientApps.config
В секции Targets содержатся идентификаторы всех хранилищ. Для резервного хранилища добавляется тег Target с произвольным Id (например, DbTarget_1).
Пример секции Targets в clientApps.config
<Targets>
<Target Id="DbTarget_0" Type="pgsql"/>
<Target Id="DbTarget_1" Type="pgsql"/>
<Target Id="TargetSyslog_0" Type="syslog"/>
</Targets>
В блоке Application Id="ea" указываются идентификаторы основного и резервного хранилища.
Пример блока Application в clientApps.config
<Application Id="ea" SchemaId="eaSchema">
<ReadTargetId>DbTarget_0</ReadTargetId>
<WriteTargets>
<TargetId>DbTarget_0</TargetId>
<TargetId>DbTarget_1</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="001122...AA11" Rights="Read" />
</AccessControl>
</Application>
Параметры блока Application Id="ea" | Описание |
|---|---|
ReadTargetId | Идентификатор хранилища для чтения событий. Содержит идентификатор основного хранилища (DbTarget_0). |
WriteTargets:TargetId | Идентификаторы хранилищ для записи событий. При использовании резервного хранилища содержит все идентификаторы: основное (DbTarget_0) и резервное (DbTarget_1).Идентификаторы заданы в теге Targets, конфигурационные файлы для каждого типа находятся в каталоге am/ls/targets/ с соответствующим именем. |
CertificateAccessControl:CertificateThumbprint | Отпечаток клиентского сертификата Core Server. Указывается при использовании собственного клиентского сертификата. |
Конфигурационный файл резервного хранилища am/ls/targets/DbTarget_1.config
Для резервного хранилища создается конфигурационный файл в каталоге am/ls/targets/. Имя файла должно совпадать со значением Id из секции Targets. Формат файла аналогичен основному хранилищу DbTarget_0.config.
Пример DbTarget_1.config
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>Server=Server;Database=Name;User ID=User;Password=Password</ConnectionString>
</Settings>
Параметры строки ConnectionString | Описание |
|---|---|
Server | DNS/IP-адрес сервера с резервной базой данных |
Database | Имя резервной базы данных |
User ID | Имя пользователя, который имеет полные права для базы данных |
Password | Пароль пользователя |
Автоматическая очистка событий
Очистка работает для хранилищ в базах данных Microsoft SQL и PostgreSQL.
Чтобы включить очистку событий и указать срок хранения данных, используйте мастер конфигурации — шаг Базы данных.
Остальные параметры очистки мастер добавляет в конфигурационный файл am/ls/clientApps.config со значениями по умолчанию после включения очистки.
Не изменяйте значения параметров без необходимости. Неправильная конфигурация может привести к неработоспособности компонента.
Log Server удаляет события частями. Количество событий, которые удаляются за раз, задает параметр BatchSize (по умолчанию 1000). Удаление повторяется, пока не будут удалены все события с истекшим сроком хранения. Весь цикл ограничен количеством удаленных событий (MaxDeletedRecords) и длительностью (MaxDuration, по умолчанию 1 час).
| Параметр | Формат | Описание |
|---|---|---|
TargetId | string | Заполняется мастером конфигурации. Идентификатор хранилища, в котором выполняется очистка. Обязательный параметр. Возможные значения: идентификатор существующего хранилища. |
RetentionPeriod | TimeSpan | Заполняется мастером конфигурации. Срок хранения события с момента его создания (TimeCreated).Значение не может быть ниже Cleanup:MinRetentionPeriod*. Если значение ниже, запись игнорируется, а в лог записывается предупреждение.Значение по умолчанию: 90.00:00:00 (90 дней).Возможные значения: от Cleanup:MinRetentionPeriod, без верхней границы. |
Enabled | boolean | Заполняется мастером конфигурации. Включение периодической очистки для хранилища. При значении false периодическая очистка не выполняется, но очистку по-прежнему можно запустить вручную через API.Значение по умолчанию: true. |
Schedule | cron-выражение | Расписание запуска периодической очистки. Значение по умолчанию: 0 0 * * * (раз в сутки в полночь UTC). |
BatchSize | integer | Количество событий, которые Log Server удаляет за один раз. Значение по умолчанию: 1000.Возможные значения: от 1 до 2 147 483 647. |
DelayBetweenBatches | TimeSpan | Пауза перед удалением следующих событий в рамках одного запуска очистки. Например, значение 00:00:02 задает паузу в 2 секунды.Значение по умолчанию: 00:00:00 (без паузы).Возможные значения: от 00:00:00, без верхней границы. |
MaxDeletedRecords | integer | Максимальное количество событий, удаляемых за один запуск очистки. Значение по умолчанию: не задано (без ограничения). Возможные значения: от 1 до 2 147 483 647. |
MaxRetryAttempts | integer | Количество повторных попыток удаления при ошибке базы данных. Когда попытки заканчиваются, запуск очистки прерывается. Значение по умолчанию: 5.Возможные значения: от 0 до 2 147 483 647. |
DelayBetweenRetryAttempts | TimeSpan | Пауза перед повторной попыткой удаления при ошибке базы данных. Значение по умолчанию: 00:00:02 (2 секунды).Возможные значения: от 00:00:00, без верхней границы. |
MaxDuration | TimeSpan | Максимальная суммарная длительность одного запуска очистки. Пустое значение — без ограничения. Значение по умолчанию: 01:00:00 (1 час).Возможные значения: больше 00:00:00, без верхней границы. |
* Cleanup:MinRetentionPeriod — минимально допустимое значение RetentionPeriod. Ограничение действует и для параметров очистки, и для ручного запуска, чтобы не допустить удаления всех событий в случае ошибки в сроке хранения. Задается в секции Cleanup файла app-settings.json, значение по умолчанию — 1 сутки. Измененное значение применяется после перезапуска Log Server.
Ручной запуск очистки
Очистку можно запустить вручную, не дожидаясь очередного запуска по расписанию. Значение параметра Enabled на ручной запуск не влияет, поэтому очистить можно и хранилище с выключенной периодической очисткой.
Ответ приходит сразу, до завершения очистки, и не содержит результат очистки. Количество удаленных событий или текст ошибки записываются в логе Log Server.
Для одного хранилища одновременно выполняется только один ручной запуск. Пока очистка не завершилась, повторный запрос отклоняется с кодом 409. Периодическая очистка при этом может выполняться параллельно с ручной.
POST api/Cleanup/Trigger
{
"targetId": "sampleDb",
"retentionPeriod": "1.00:00:00",
"maxDuration": "02:00:00"
}
В объекте запроса:
targetId— обязательный параметр. Идентификатор хранилища, в котором выполняется очистка.retentionPeriod,maxDeletedRecords,maxDuration,batchSize,delayBetweenBatches,maxRetryAttempts,delayBetweenRetryAttempts— необязательные параметры. Переопределяют одноименные параметры конфигурационного файла только для этого запуска. ЗначениеretentionPeriodне может быть меньшеCleanup:MinRetentionPeriod.
Параметры, не указанные в запросе, берутся из конфигурационного файла.
curl -X POST https://<log-server-host>/api/Cleanup/Trigger \
--cert client.crt --key client.key \
-H "Content-Type: application/json" \
-d '{"targetId": "sampleDb"}'
{
"code": 0,
"errorMessage": ""
}
Возможные ошибки:
| Код | Причина |
|---|---|
| 400 | Не указан targetId или тело запроса не является корректным JSON.Значение retentionPeriod отрицательно или ниже Cleanup:MinRetentionPeriod.Значения maxDeletedRecords, maxDuration или batchSize не положительны.Значения delayBetweenBatches, maxRetryAttempts или delayBetweenRetryAttempts отрицательны.Клиентский сертификат не авторизован для этого хранилища. |
| 404 | Указан неизвестный targetId. |
| 409 | Для этого хранилища уже выполняется ручная очистка. Дождитесь ее завершения и повторите запрос. |
Настройка кеширования событий
Если Log Server недоступен, события кешируются в локальный каталог am/ls/EventCash.
Информация о недоступности Log Server отображается в событиях Windows во вкладке Приложение.
Код события — 500.
Текст — Log server client fluentSchedulerBackgroundLoaderTask. Iteration WEB exception: Время ожидания операции истекло.
Чтобы изменить параметры хранения событий:
- Откройте конфигурационный файл
app-settings.jsonсерверного компонента (Core Server, Management Console, User Console). - Внесите следующие изменения:
Чтобы задать путь к каталогу для хранения событий, измените значение параметра
locationв тегеlogServer. Значение по умолчанию —./EventCache.Чтобы изменить время отправки логов после возобновления работы LogServer, измените значение параметра
FlushIntervalв тегеlogServer. Значение по умолчанию — 10 минут.Не рекомендуется устанавливать значение для параметра
EventCacheSendingIntervalSecменее 30 секунд.
Локализация
В данный момент в схеме есть локализация событий ru-Ru и en-En. Когда с сервера поступает запрос на ru-Ru события, будут выбраны имеющиеся события с локализацией ru-Ru.
Если с сервера поступает запрос с неизвестной локализацией, то будут выбраны события с локализацией, заданной по умолчанию.
Чтобы настроить локализацию:
Откройте конфигурационный файл
am/ls/eaSchema.config.Измените значение параметра
DefaultLanguage.
Пример локализации событий en-En
<Languages DefaultLanguage="en-En">
Пример локализации событий ru-RU
<Languages DefaultLanguage="ru-RU">
- Сохраните изменения.
Сбор логов
Информация по включению логирования и сбору логов компонента Log Server находится в разделе Сбор логов серверных компонентов.