Подсистема журналирования
Описание подсистемы журналирования
Подсистема журналирования Comindware Platform использует библиотеку NLog (с открытым исходным кодом), которая записывает данные в файлы журналов.
Полная документация по настройке NLog для журналирования в файлы представлена по адресу: https://github.com/NLog/NLog/wiki/File-target
ПО позволяет настроить уровень журналирования, правила формирования событий в журналах, место хранения журналов, порядок и набор параметров именования файлов журналов, а также ограничения по размеру и предельному количеству файлов журналов, с помощью конфигурационных файлов:
- Linux
/var/www/<instanceName>/logs.config— конфигурация всех журналов экземпляра ПО, включая журналы встроенных адаптеров;/var/www/<instanceName>/data/Plugins/Agent/logs.config— конфигурация журналов пользовательских адаптеров.
- Windows
C:\ProgramData\Comindware\Instances\<instanceName>\Config\logs.config— конфигурация всех журналов экземпляра ПО, включая журналы встроенных адаптеров;C:\ProgramData\Comindware\Instances\<instanceName>\Config\data\Plugins\Agent\logs.config— конфигурация журналов пользовательских адаптеров.
Здесь и далее <instanceName> — имя экземпляра ПО.
Подробное описание структуры конфигурационного файла см. в документации NLog по адресу: https://github.com/NLog/NLog/wiki/Tutorial
По умолчанию файлы журналов хранятся на сервере с экземпляром ПО в следующей директории:
- Linux
/var/log/comindware/<instanceName>/Logs
- Windows
C:\ProgramData\comindware\Instances\<instanceName>\Logs
Сведения о фактическом расположении файлов см. в статье «Пути и содержимое папок экземпляра ПО».
Файловые журналы
ПО поддерживает следующие файловые журналы:
- Адаптеры
- Аудит
- Интеграция
- Интеграция — сырые данные
- Исправность ПО
- Обновление
- Ошибки
- Процессы
- Системный журнал
- Резервное копирование
- Трансфер — в составе журнала ошибок
Каждый из перечисленных журналов представляет собой структурированный текстовый файл с пробелами в качестве разделителей.
В качестве инструментов чтения и анализа файлов журналов можно использовать любой инструмент, представленный на рынке. Например, есть мощный инструмент Kibana https://www.elastic.co/products/kibana, который обладает широким спектром функций по сбору журналов с различных ресурсов и их глубокому анализу с различными визуальными представлениями, в том числе в виде графиков.
Правила формирования файлов журналов
Для каждого журнала ежедневно формируется один файл.
По умолчанию ПО сохраняет в директории Logs все файлы журналов за последние 100 дней. Файлы журналов старше 100 дней удаляются.
Лимит файлов журналов каждого типа задаётся директивой archiveFilesCount в файле logs.config. См. «Описание подсистемы журналирования».
Типы событий в журналах
В журналах предусмотрены следующие типы событий:
Fatal— критическая ошибка в работе ПО;Error— ошибка в работе ПО;Warn— некорректное поведение, но ПО продолжает свою работу;Info— обычное событие, например отправка письма, обновление данных аккаунта;Debug— выполнение запросов, аутентификация пользователей;Trace— запуск методов, завершение методов.
Журнал аудита
Журнал аудита содержит перечисленные ниже события:
- Неуспешные попытки входа в Систему.
- Успешный вход в Систему.
- Выход из Системы.
- Веб-запросы клиента, отправляемые пользователями на сервер (запрос данных или сохранение данных).
- Изменения системных ролей и ролей в приложениях.
- Попытки несанкционированного доступа для просмотра, создания, редактирования и удаления данных в следующих разделах:
- API
- Записи, экземпляры процессов, аккаунты
- Прикреплённые к записям файлы
- Страницы:
- Администрирование системы
- Темы
- Дизайн страницы входа и регистрации
- Приложения
- Разделы навигации
- Шаблоны
- Функции
- Пути передачи данных
- Аккаунты
- Группы
- Системные роли
- Аудит разрешений аккаунтов
- Замещение
- Регистрация и вход
- Мониторинг
- Журналы событий
- Лицензирование
- Резервное копирование
- Управление системными службами
- Подключения
- Производительность
- Конфигурация журналирования
- Глобальная конфигурация
- Администрирование приложения
- Шаблоны
- Роли
- Разделы навигации
- Функции
- Переменные
- Сценарии
- Интернет-магазин
- Интеграции
- Пути передачи данных
- Active Directory
- Аудит разрешений аккаунтов
- Активность компонентов
- Управление версиями
- Администрирование системы
Стандартное имя файла журнала аудита: audit_ГГГГ-ММ-ДД.log
Журнал сообщений аудита содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- ID сеанса;
- имя аккаунта, инициировавшего событие;
- IP-адрес клиента;
- адрес сервера;
- статус обработки запроса;
- длительность обработки запроса;
- запрос или текст сообщения;
- сведения об изменении роли.

Журнал интеграции
Журнал интеграции содержит информационные сообщения по событиям, возникающим в ходе работы интеграционных сервисов ПО (таких, как подключения и адаптеры).
Стандартное имя файла журнала ошибок: integration_ГГГГ-ММ-ДД.log
Журнал интеграции содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- ID сеанса;
- имя аккаунта, инициировавшего событие;
- имя сервера;
- порт сервера
- IP-адрес клиента;
- идентификатор интеграции;
- идентификатор подключения;
- текст сообщения.

Журнал интеграции с сырыми данными
Журнал интеграции с сырыми данными содержит те же сведения, что журнал интеграции, но с полным содержимым сообщений от внешних систем.
Стандартное имя файла журнала с сырыми данными: integration_raw_ГГГГ-ММ-ДД.log
По умолчанию для файла журнала интеграции с сырыми данными установлено ограничение на размер в 100 МБ. В случае превышения заданного размера, имя файла меняется на имяжурнала_ГГГГ-ММ-ДД.<порядковый номер файла>.log, а в каталоге журналов создаётся новый файл журнала со стандартным именем.
Журнал интеграции с сырыми данными содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- ID сеанса;
- имя аккаунта, инициировавшего событие;
- адрес сервера;
- порт сервера;
- IP-адрес клиента;
- текст сообщения.

Журнал исправности
Журнал исправности содержит сведения о состоянии экземпляра ПО: дисковом пространстве, использовании подключений, работе сервиса OpenSearch (Elasticsearch), работе подсистем, выполнении экземпляров процессов.
Стандартное имя файла журнала исправности: heartbeat_ГГГГ-ММ-ДД.log
Журнал исправности ПО содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- ID сеанса;
- имя аккаунта, инициировавшего событие;
- адрес сервера;
- порт сервера;
- IP-адрес клиента;
- текст сообщения.

Журнал обновления
Журнал обновления содержит сведения о результатах обновления версий ПО.
Журнал обновления разделён на два файла:
UpgradeOntology.log— информация об обновлении структуры данных;update_ГГГГ-ММ-ДД.log— информация о ходе процесса обновления.
Журнал обновления содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- ID сеанса;
- имя аккаунта, инициировавшего событие;
- адрес сервера;
- порт сервера;
- IP-адрес клиента;
- текст сообщения.

Журнал ошибок
Журнал ошибок содержит данные обо всех ошибках, возникающих в ходе работы экземпляра ПО, а также об импорте и экспорте версий приложений.
Стандартное имя файла журнала ошибок: error_ГГГГ-ММ-ДД.log
Журнал ошибок содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- ID сеанса;
- имя аккаунта, инициировавшего событие;
- имя сервера;
- порт сервера;
- IP-адрес клиента;
- идентификатор события;
- имя подсистемы, в которой произошло событие;
- длительность обработки запроса;
- версия ПО;
- идентификатор интеграции;
- идентификатор подключения;
- сообщение об ошибке.

Журнал процессов
Журнал процессов содержит сведения о движении токенов по элементам экземпляров процессов.
Стандартное имя файла журнала процессов: process_ГГГГ-ММ-ДД.log
Журнал процессов содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- идентификатор экземпляра процесса;
- идентификатор токена;
- идентификатор элемента экземпляра процесса;
- текст сообщения;
- длительность выполнения.

Рекомендации по чтению журнала процессов
- В журнале процессов отражается факт создания экземпляра процесса с указанием его идентификатора.
- Чтобы журнал процессов содержал более наглядные сведения, при настройке диаграммы процесса давайте элементам понятные системные имена.
- Для элемента диаграммы процесса указываются сведения о трёх событиях:
- создание токена или вход токена в элемент — строка с идентификатором элемента вида
Enter(psa.XXX) by Flow:psf.XXX(при создании токена не указывается идентификатор потока); - выполнение элемента — строка с идентификатором элемента вида
ExecuteилиContinueExecute; - выход токена из элемента — строка с идентификатором потока вида
Exit by Flow:psf.XXX.
- создание токена или вход токена в элемент — строка с идентификатором элемента вида
- В строке события могут быть указаны следующие сведения:
- идентификатор экземпляра процесса вида
PID:XXX; - идентификатор токена вида
TID:ptkn.XX; - системное имя и идентификатор элемента вида
(elementSystemName)psa.XXX; - системное имя и идентификатор потока вида
psf.XXX; - идентификатор потока с идентификатором потока вида
Flow:psf.XXX; - перечень последующих элементов, начинающийся с ключевого слова
NextActions.
- идентификатор экземпляра процесса вида
Журнал резервного копирования
Журнал резервного копирования содержит информационные сообщения по результатам резервного копирования экземпляра ПО.
Стандартное имя файла журнала резервного копирования: backup_ГГГГ-ММ-ДД.log
Журнал резервного копирования содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- ID сеанса;
- имя аккаунта, инициировавшего событие;
- адрес сервера;
- порт сервера;
- IP-адрес клиента;
- текст сообщения.

Журнал сценариев
Журнал сценариев содержит сведения о ходе выполнения сценариев.
Стандартное имя файла журнала сценариев: trigger_ГГГГ-ММ-ДД.log
Журнал сценариев содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- инициатор вызова сценария;
- идентификатор сценария;
- тип события, запустившего сценарий;
- идентификатор шаблона записи;
- идентификатор записи;
- длительность выполнения;
- сведения о действиях, исполненных в ходе сценария:
- идентификатор действия сценария;
- тип действия;
- идентификатор шаблона записи;
- идентификатор записи;
- длительность выполнения.

Системный журнал
Системный журнал содержит данные о событиях системного уровня в экземпляре ПО.
Стандартное имя файла системного журнала: system_ГГГГ-ММ-ДД.log
Системный журнал содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- ID сеанса;
- имя аккаунта, инициировавшего событие;
- адрес сервера;
- порт сервера;
- IP-адрес клиента;
- текст сообщения.

Журналы адаптеров
Журналы адаптеров содержат данные о событиях подключений и путей передачи данных, относящихся к адаптерам в экземпляре ПО.
Имена файлов журналов адаптеров формируются следующим образом:
- сервис встроенных адаптеров:
adapter_internal_ГГГГ-ММ-ДД.log - сервис пользовательских адаптеров:
adapter_external_system_ГГГГ-ММ-ДД.log - подключение встроенного адаптера:
adapter_internal_<имя_подключения>_ГГГГ-ММ-ДД.log - подключение заказного адаптера:
adapter_external_<имя_подключения>_ГГГГ-ММ-ДД.log - исправность заказного адаптера:
adapter_external_heartbeat_ГГГГ-ММ-ДД.log - подключение заказного адаптера к брокеру сообщений:
adapter_external_kafkaClient_ГГГГ-ММ-ДД.log
Журнал адаптера содержит следующие сведения:
- дата события;
- время события;
- тип сообщения;
- описание события;
- контекст события;
- описание исключения (необязательно);
- текст сообщения (необязательно).

Перенаправление сообщений из файлов журналов в журнал событий Windows
Библиотека NLog позволяет записывать журналы помимо файлов в другие хранилища, например в службу «Журнал событий Windows» (EventLog), который можно просмотреть с помощью приложения Просмотр событий.
Полная документация по настройке журналирования в журнал событий Windows представлена по адресу:
https://github.com/NLog/NLog/wiki/EventLog-target
В данном разделе представлены инструкции по перенаправлению сообщений из файла журнала ошибок экземпляра ПО в журнал событий Windows.
- Создайте в журнале событий Windows новый источник событий (
EventSource), если его ещё нет. -
Создайте скрипт по приведённому ниже образцу на языке VisualBasic и сохраните его в файл с расширением .VBS (например,
CreateEventSource.vbs):Set Args = WScript.ArgumentsIf Args.Count < 1 then WScript.Echo "USAGE: CreateEventSource.vbs <EventSourceName>"WScript.QuitEnd IfEventSourceName = Args(0)Set WshShell = WScript.CreateObject("WScript.Shell")'Create event sourceKeyName = "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog\Application\" & EventSourceName & "\EventMessageFile"'Change path to .NET Framework version usedWshShell.RegWrite KeyName,"%windir%\Microsoft.NET\Framework64\v2.0.50727\EventLogMessages.dll", "REG_EXPAND_SZ" -
Запустите скрипт, который создаст источник событий (
EventSource) в журнале событий Windows.В качестве параметра передайте название источника событий, которое будет отображаться в разделе «Журналы Windows / Приложение» (Windows Logs / Application) приложения приложении «Просмотр событий».
Пример команды запуска скрипта:
CreateEventSource.vbs "CBAP" -
Создайте в файле
logs.configв подразделеnlog.targets(с конфигурацией файловых журналов) подразделtargetс параметрами записи данных в журнал событий Windows:<target xsi:type="EventLogCBAPErrors" name="eventlog" layout="${message}"log="Application" source="CBAP"/> -
Создайте в файле
logs.configправило (подразделloggerв разделеnlog.rules), которое будет определять сообщения, подлежащие записи в журнал событий Windows:<logger name="*" minlevel="Warn" maxlevel="Fatal"writeTo="errorsFile,EventLogCBAPErrors"/> -
Перезагрузите экземпляр ПО, чтобы изменения вступили в силу.
Эта статья была полезна 2 чел.