Как включить, настроить и выгрузить технологический журнал в 1С для анализа?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При возникновении проблем с производительностью, аварийных завершений процессов или ошибок блокировок разработчики и администраторы сталкиваются с необходимостью собрать диагностические данные. В платформе «1С:Предприятие» для этого предусмотрен специальный низкоуровневый инструмент — технологический журнал (ТЖ). Разберем по шагам, как правильно активировать сбор логов, настроить фильтрацию событий под конкретного пользователя и избежать распространенных ошибок.

Чем технологический журнал отличается от журнала регистрации

В процессе обсуждения часто возникает путаница между двумя совершенно разными механизмами платформы: технологическим журналом (ТЖ) и журналом регистрации (ЖР). Выясним принципиальную разницу между ними:

  1. Журнал регистрации (ЖР) — это высокоуровневый прикладной механизм, встроенный в каждую информационную базу. Он фиксирует действия пользователей (вход, изменение документов, регламентные задания) и доступен для чтения прямо из режима «1С:Предприятие» или программно через метод ВыгрузитьЖурналРегистрации().
  2. Технологический журнал (ТЖ) — это системный инструмент уровня платформы. Он отслеживает работу серверных и клиентских процессов на уровне операционной системы (сетевые вызовы, тяжелые запросы к СУБД, управляемые блокировки, аварийные дампы памяти). ТЖ по умолчанию выключен, пишется в виде текстовых файлов на диск и не доступен через стандартные встроенные объекты конфигурации.

Если ваша задача состоит в получении прикладных событий из стандартного журнала регистрации программным путем, то для этого используется следующий типовой код:


Колонки = "Дата,ИмяПользователя,ПредставлениеСобытия,ПредставлениеДанных,Комментарий";
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Дата");
ТЗ.Колонки.Добавить("ИмяПользователя");
ТЗ.Колонки.Добавить("ПредставлениеСобытия");
ТЗ.Колонки.Добавить("ПредставлениеДанных");
ТЗ.Колонки.Добавить("Комментарий");

Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", НачалоДня(ТекущаяДата()));
Отбор.Вставить("Пользователь", "ИвановИИ");

ВыгрузитьЖурналРегистрации(ТЗ, Отбор, Колонки, , 100);

Для Каждого Стр Из ТЗ Цикл
    Сообщить(Стр.Дата + ", " + Стр.ИмяПользователя + ", " + Стр.ПредставлениеСобытия);
КонецЦикла;

Однако если требуется расследовать системные сбои, взаимоблокировки или зависания вызовов, перейдем к настройке полноценного технологического журнала.

Включение и базовая настройка технологического журнала

Поскольку ТЖ отключен по умолчанию, для его активации требуется создать файл конфигурации с именем logcfg.xml. Платформа опрашивает наличие и изменение этого файла с интервалом около одной минуты, поэтому перезапуск служб кластера серверов или клиентских приложений не требуется.

Рассмотрим, где должен располагаться файл logcfg.xml:

  1. В операционной системе Windows: в общем каталоге конфигурации C:\Program Files\1cv8\conf (или в каталоге конкретной версии платформы, например C:\Program Files\1cv8\8.3.24.1667\conf). При одновременном наличии файлов приоритет имеет файл в каталоге конкретной версии.
  2. В операционной системе Linux: в каталоге /opt/1cv8/conf либо в каталоге версии /opt/1cv8/x86_64/8.3.24.1667/conf.

Важное требование безопасности: учетная запись операционной системы, от имени которой запущена служба сервера «1С:Предприятия» (например, usr1cv8), должна обладать полными правами на чтение файла logcfg.xml, а также правами на запись и создание подкаталогов в целевой папке, куда будут сохраняться логи.

Пример конфигурации logcfg.xml с отбором по пользователю

Проанализируем типовую конфигурацию. Предположим, нам необходимо отследить все исключительные ситуации (событие EXCP) и длительные серверные вызовы (событие CALL), выполненные конкретным пользователем информационной базы. Для этого создадим файл logcfg.xml в кодировке UTF-8 со следующим содержимым:


<config xmlns="http://v8.1c.ru/v8/tech-log">
    <log location="C:\1C_Logs\UserAnalysis" history="24">
        <event>
            <eq property="name" value="EXCP"/>
            <eq property="Usr" value="Иванов Иван Иванович"/>
        </event>
        <event>
            <eq property="name" value="CALL"/>
            <eq property="Usr" value="Иванов Иван Иванович"/>
            <ge property="duration" value="5000000"/>
        </event>
        <property name="all"/>
    </log>
</config>

Разберем подробнее ключевые параметры этой настройки:

  1. location — директория, в которую платформа будет записывать логи. Платформа создаст внутри отдельные папки под каждый процесс (rphost, rmngr, ragent) и будет складывать туда текстовые файлы с именами вида ГГММДДЧЧ.log.
  2. history — глубина хранения файлов в часах. По истечении указанного срока (в примере — 24 часа) старые файлы автоматически удаляются.
  3. Usr — системное свойство технологического журнала, хранящее имя пользователя информационной базы. Для точного совпадения используется оператор <eq>, а для нестрогого поиска по маске можно применить <like property="Usr" value="%Иванов%"/>.
  4. duration — длительность выполнения операции. Обратите внимание: время в ТЖ всегда задается в микросекундах (1 секунда = 1 000 000 мкс). В примере отбираются серверные вызовы длительностью более 5 секунд.
  5. property name="all" — указывает на необходимость выгрузки всех доступных свойств выбранных событий.

Особенность свойства Usr: на начальном этапе установки соединения или авторизации имя пользователя еще не определено в контексте процесса. В таких случаях свойство Usr может оставаться пустым. Для сквозного анализа сеанса обратите внимание на сопутствующие свойства: SessionID (номер сеанса) и t:clientID (идентификатор клиента).

Ограничение влияния на производительность

Запись технологического журнала создает существенную нагрузку на дисковую подсистему сервера. Чтобы сбор логов не привел к падению производительности или остановке рабочих баз, соблюдайте следующие правила:

  1. Не включайте сбор всех событий без условий. Настройка <event><like property="name" value=".*"/></event> за считанные минуты способна заполнить сотни гигабайт дискового пространства и парализовать работу сервера.
  2. Изолируйте диск для логов. Располагайте каталог, указанный в параметре location, на отдельном физическом накопителе, вдали от каталогов баз данных СУБД, журналов транзакций и каталога srvinfo.
  3. Используйте фильтр по длительности. Для событий тяжелых запросов к СУБД (DBMSSQL, DBPOSTGRS) и блокировок (TLOCK) всегда устанавливайте минимальный порог duration.
  4. Своевременно отключайте сбор логов. Когда расследование завершено, удалите файл logcfg.xml или очистите его содержимое до пустого тега <config xmlns="http://v8.1c.ru/v8/tech-log"/>. Через минуту сбор данных автоматически прекратится без перезагрузки системы.

Методы чтения и анализа полученных логов

Файлы ТЖ представляют собой обычный текст в кодировке UTF-8, разбитый по каталогам процессов. Чтение больших объемов таких файлов стандартным «Блокнотом» неэффективно. Рассмотрим основные инструменты для работы с полученным журналом:

  1. Утилиты командной строки:

    В среде Windows быстрый поиск по файлам журнала выполняется командлетом PowerShell:

    
    Get-ChildItem -Path "C:\1C_Logs\UserAnalysis" -Recurse -Filter "*.log" | 
        Select-String -Pattern "Usr=Иванов.*EXCP"
    

    В Linux аналогичный результат дает связка утилит grep и awk.

  2. Специализированные внешние анализаторы: применение парсеров логов, конфигураций автоматизированного тестирования и контроля производительности либо выгрузка журналов с помощью легковесных сборщиков (например, Vector или Fluent Bit) в аналитические хранилища (ClickHouse, Elasticsearch) с последующим визуальным анализом на графиках.
← На главную