Анализ и логирование сетевых пакетов обмена в Технологический журнал 1С
При траблшутинге сложных интеграций возникают задачи:
- Необходимость перехвата реального XML/JSON тела входящего или исходящего HTTP-запроса без изменения конфигурации.
- Поиск причин зависаний и сетевых таймаутов на уровне операционной системы и сокетов.
- Диагностика ошибок аутентификации Web-сервисов на уровне веб-сервера (Apache/IIS).
- Замер точного времени исполнения внешних сетевых вызовов платформы.
1. Назначение событий Технологического Журнала (ТЖ) для интеграций
Для анализа сетевого обмена используются следующие события ТЖ:
CALL / CALLOUT: Вызовы между процессами кластера и внешними COM-компонентами.VRSREQUEST / VRSRESPONSE: Входящие вызовы Web- и HTTP-сервисов, опубликованных на веб-сервере.WEBSERVICE / HTTPREQUEST: Исходящие сетевые запросы, инициированные кодом 1С.EXCP / EXCPCNTX: Все исключительные ситуации и аварийные дампы ядра 1С.
2. Конфигурация logcfg.xml для перехвата HTTP-трафика и ошибок
Создайте файл logcfg.xml в каталоге настроек платформы (/opt/1cv8/conf/ для Linux или C:\Program Files\1cv8\conf\ для Windows):
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<!-- Логирование входящих и исходящих веб-сервисов -->
<log location="/var/log/1c/techlog/network" history="48">
<event>
<eq property="name" value="VRSREQUEST"/>
</event>
<event>
<eq property="name" value="VRSRESPONSE"/>
</event>
<event>
<eq property="name" value="HTTPREQUEST"/>
</event>
<event>
<eq property="name" value="EXCP"/>
<eq property="Module" value="ОбщийМодуль.Интеграции"/>
</event>
<property name="all"/>
</log>
</config>3. Анализ полученных логов ТЖ с помощью grep/awk
# Поиск ошибок сетевых вызовов в каталоге логов:
grep -rn "EXCP" /var/log/1c/techlog/network/
# Фильтрация длительных запросов (> 5000000 мкс / 5 секунд):
awk -F, '$2 > 5000000 {print $0}' /var/log/1c/techlog/network/rphost_*/*.log4. Пример расшифровки записи лога ТЖ
52:14.123000-12500,VRSREQUEST,3,process=rphost,p:processName=TradeBase,t:clientID=42,URL=http://server/trade/hs/api/orders,Method=POST
52:14.250000-127000,VRSRESPONSE,3,process=rphost,Status=200,ResponseSize=1024 Частые вопросы (FAQ)
Как применить изменения в файле logcfg.xml без перезапуска сервера 1С?
Процессы 1С (rphost, ragent) перечитывают файл logcfg.xml автоматически каждые 60 секунд. Перезапуск служб не требуется.
Почему логи ТЖ не создаются после правки logcfg.xml?
У пользователя ОС, под которым запущен сервер 1С (usr1cv8), отсутствуют права на запись в целевую директорию, указанную в атрибуте location.
Не переполнит ли технологический журнал диск сервера?
Параметр history='48' указывает платформе автоматически удалять логи старше 48 часов. Всегда фильтруйте события по свойствам и не включайте <property name='all'/> без отборов на продакшене.
В каких единицах измеряется длительность событий в ТЖ?
Длительность событий (первое число после метки времени через дефис) измеряется в микросекундах (1 секунда = 1 000 000 мкс).