Содержание:
- Зачем нужен технологический журнал при работе в системе 1С
- Архитектура технологического журнала в 1С
- Основные события для мониторинга в программе 1C:Предприятие
- Рекомендации по настройке
- Инструменты для анализа логов ТЖ
Технологический журнал (ТЖ) 1С:Предприятие – это мощный механизм логирования событий, происходящих на различных уровнях системы: от взаимодействия с СУБД до выполнения кода на встроенном языке и ошибок платформы. Правильная настройка и анализ данных ТЖ позволяют разработчикам и администраторам оперативно выявлять причины проблем, узкие места в производительности, отслеживать действия пользователей и глубоко понимать внутренние процессы работы 1С.
Зачем нужен технологический журнал при работе в системе 1С
ТЖ является бесценным источником информации для:
1. Диагностики ошибок:
- Выявление причин сбоев и аварийных завершений работы клиента или сервера 1С.
- Анализ ошибок при выполнении запросов к СУБД (SQL).
- Отслеживание ошибок в коде на встроенном языке (исключений).
- Диагностика проблем с COM-объектами, внешними компонентами.
2. Анализа производительности:
- Идентификация “тяжелых” запросов к базе данных.
- Анализ длительности выполнения серверных вызовов.
- Определение узких мест в бизнес-логике конфигурации.
- Оценка времени выполнения фоновых и регламентных заданий.
3. Отладки и разработки:
- Детальное логирование выполнения участков кода (с помощью события CALL).
- Отслеживание значений переменных и параметров функций.
4. Аудита и безопасности (ограниченно):
- Логирование подключений/отключений пользователей (событие CONN).
- В некоторых случаях – анализ выполняемых операций, хотя для полноценного аудита действий пользователей лучше использовать журнал регистрации 1С.
5. Анализа блокировок:
- Выявление транзакционных блокировок СУБД (события TLOCK, TDEADLOCK, TIMEOUT).
- Определение объектов и сеансов, участвующих в конфликтах блокировок.
Архитектура технологического журнала в 1С
ТЖ собирает информацию о событиях, происходящих в различных процессах системы 1C:Предприятие:
- Клиентские приложения: Толстый клиент, тонкий клиент, веб-клиент (частично, через сервер).
- Сервер 1С:Предприятия: Рабочие процессы (rphost), менеджер кластера (rmngr), агент сервера (ragent).
- COM-соединения: Внешние приложения, подключающиеся к 1С через COM.
Сбор логов управляется конфигурационным файлом logcfg.xml, который определяет, какие события, для каких процессов и с какими параметрами будут записываться. Логи сохраняются в виде текстовых файлов (обычно с расширением .log) в указанном каталоге.
Ключевые элементы файла logcfg.xml:
Файл logcfg.xml имеет следующую структуру:
<config xmlns=”http://v8.1c.ru/v8/tech-log”>
<!– Каталог для логов и время хранения файлов (в часах) –>
<log location=”C:\Путь\К\Папке\Логами\ТЖ” history=”24″>
<!– Событие, интересующее производительность MS SQL –>
<event>
<eq property=”name” value=”DBMSQL”/> <!– Интересующее событие (в данном случае, взаимодействие с MS SQL) –>
<eq property=”sql” value=”% deadlock %”/> <!– Фильтр по свойству события (содержащие ” deadlock ” в тексте SQL) –>
<gt property=”duration” value=”500000″/> <!– Фильтр: длительность более 500 мс (500000 микросекунд) –>
</event>
<!– Событие, интересующее исключения –>
<event>
<eq property=”name” value=”EXCP”/> <!– Событие “Исключение” –>
<!– Фильтр по тексту исключения –>
<eq property=”descr” value=”%Объект не найден%”/>
</event>
<!– Записывать все свойства для отфильтрованных событий –>
<property name=”all”>
<eq property=”value” value=”true”/>
</property>
<!– Можно указать конкретные процессы для логирования –>
<process name=”rphost”/>
<process name=”ragent”/>
<!– <process name=”1cv8.exe”/> для толстого клиента –>
</log>
<!– Могут быть и другие секции <log> для разных настроек –>
</config>
Основные теги и их назначение:
- <config>: Корневой элемент файла.
- <log location=”…” history=”…”>: Определяет каталог для сохранения логов (location) и глубину хранения файлов в часах (history). По истечении этого времени старые файлы логов будут автоматически удаляться.
- <event>: Определяет, какие события нужно логировать. Внутри могут быть:
- <eq property=”name” value=”ИМЯ_СОБЫТИЯ“/>: Равно. Логировать событие с указанным именем (например, DBMSSQL, EXCP, CALL, SDBL).
- <ne property=”name” value=”ИМЯ_СОБЫТИЯ”/>: Не равно.
- <like property=”ИМЯ_СВОЙСТВА” value=”ШАБЛОН”/>: Фильтр по значению свойства события с использованием масок (% – любая последовательность символов, _ – любой одиночный символ).
- <gt property=”ИМЯ_СВОЙСТВА” value=”ЗНАЧЕНИЕ”/>: Больше (например, для duration – длительности).
- <lt property=”ИМЯ_СВОЙСТВА” value=”ЗНАЧЕНИЕ”/>: Меньше.
- <property name=”all”> <eq property=”value” value=”true”/> </property>: Указывает, что для событий, прошедших фильтр, нужно записывать все их свойства. Можно указать и конкретные свойства.
- <process name=”ИМЯ_ПРОЦЕССА”/>: Ограничивает сбор логов только указанными процессами (например, rphost, ragent, 1cv8.exe, 1cv8c.exe). Если не указано, логируются события от всех процессов.
Расположение файла logcfg.xml:
Местоположение файла logcfg.xml зависит от того, для каких процессов настраивается логирование:
- Для сервера 1С:Предприятия (rphost, rmngr, ragent): В каталоге конфигурационных файлов кластера серверов. Обычно это подкаталог вида C:\Program Files\1cv8\srvinfo\reg_XXXX\YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY\, где XXXX – порт агента сервера, а YYYY… – GUID кластера. Наиболее частый и рекомендуемый способ – разместить logcfg.xml в каталоге conf сервера 1С: C:\Program Files\1cv8\conf\ (или C:\Program Files (x86)\1cv8\conf\ для 32-битного сервера). Этот файл будет применяться ко всем кластерам на данном сервере.
- Для клиентских приложений (1cv8.exe, 1cv8c.exe): В каталоге conf установки соответствующего клиента, например: C:\Program Files (x86)\1cv8\common\conf\ или C:\Users\<ИмяПользователя>\AppData\Local\1C\1cv8\conf\ (путь может немного варьироваться в зависимости от версии платформы и способа установки).
- Для COM-соединения: Зависит от того, в каком процессе выполняется COM-объект 1С.
Важно: После изменения файла logcfg.xml для сервера 1С обычно требуется перезапуск агента сервера 1С:Предприятия, чтобы новые настройки вступили в силу. Для клиентских приложений – перезапуск самого приложения.
Основные события для мониторинга в программе 1C:Предприятие
- DBMSSQL, DBPOSTGRS, DBORACLE, DB2, DBMYSQL: Взаимодействие с соответствующей СУБД. Позволяют видеть тексты SQL-запросов, их длительность, ошибки. Очень полезны для анализа производительности.
- Свойства: Sql (текст запроса), Rows (количество строк), Duration (длительность в микросекундах).
- SDBL (Server DataBase Layer): Взаимодействие слоя данных сервера 1С с СУБД. Дает более высокоуровневое представление запросов, чем DBMSSQL, иногда позволяет увидеть контекст вызова из кода 1С.
- EXCP: Исключения платформы и конфигурации. Обязательно к мониторингу для отлова ошибок.
- Свойства: Descr (текст ошибки), Context (стек вызовов).
- EXCPCNTX: Дополнительный контекст для исключений (значения переменных на момент ошибки). Включается отдельно и может сильно увеличивать объем логов.
- CALL: Вызовы серверных процедур и функций. Полезно для трассировки выполнения кода и анализа длительности серверных вызовов.
- Свойства: Method (имя метода), Args (аргументы), RetVal (возвращаемое значение).
- TLOCK: Конфликты транзакционных блокировок.
- TDEADLOCK: Взаимные блокировки (deadlocks).
- TIMEOUT: Ожидания на блокировках, завершившиеся по таймауту.
- CONN: Подключения и отключения к информационной базе.
- ATTN: События внимания, ошибки уровня СУБД, не являющиеся исключениями в 1С.
- PROC: Создание и завершение процессов сервера.
- MEM: События, связанные с управлением памятью.
Рекомендации по настройке
- Не включайте всё и сразу: Полное логирование всех событий генерирует огромный объем данных, что затрудняет анализ и создает нагрузку на дисковую подсистему.
- Настраивайте точечно под задачу:
- Для поиска проблем с производительностью – DBMSSQL/SDBL с фильтром по duration, CALL.
- Для отлова ошибок – EXCP, EXCPCNTX.
- Для анализа блокировок – TLOCK, TDEADLOCK, TIMEOUT.
3. Используйте фильтры:
- Фильтр по длительности (duration) для отсева быстрых запросов.
- Фильтр по Context или sql для поиска конкретных проблемных участков.
- Фильтр по пользователю (Usr) или приложению (AppID), если проблема локализована.
4. Управляйте каталогом логов и history: Выбирайте диск с достаточным свободным местом. Параметр history помогает не замусоривать диск старыми логами.
5. Структурируйте logcfg.xml: Можно использовать несколько секций <log> для разных наборов событий или разных каталогов вывода, что упрощает анализ.
6. Проверяйте синтаксис logcfg.xml: Ошибка в синтаксисе приведет к тому, что ТЖ не будет работать.
7. Отключайте ТЖ после решения проблемы: Если ТЖ не нужен постоянно, отключайте его или минимизируйте настройки, чтобы не создавать лишнюю нагрузку. Можно просто переименовать logcfg.xml (например, в logcfg.xml.off).
Инструменты для анализа логов ТЖ
Просматривать логи ТЖ можно обычным текстовым редактором, но для больших объемов это неудобно. Существуют специализированные инструменты:
- 1C:Enterprise Development Tools (EDT): Включает в себя анализатор технологического журнала.
- Независимые разработки: Множество платных и бесплатных утилит от сообщества 1С, предоставляющих фильтрацию, группировку, подсветку синтаксиса и другие удобства (например, ” Анализатор технологических журналов”, “Классический просмотрщик логов ТЖ 1С” и др.).
Пример logcfg.xml для отладки медленных запросов и ошибок:
<config xmlns=”http://v8.1c.ru/v8/tech-log”>
<log location=”D:\1C_Logs\TechJournal_SlowAndErrors” history=”48″> <!– Логируем долгие запросы к MS SQL (более 1 секунды) –>
<event>
<eq property=”name” value=”DBMSQL”/>
<gt property=”duration” value=”1000000″/> <!– 1 000 000 микросекунд = 1 секунда –>
<!– Логируем все исключения –>
<event>
<eq property=”name” value=”EXCP”/>
</event>
<!– Логируем контекст исключений –>
<event>
<eq property=”name” value=”EXCPCNTХ”/>
</event>
<!– Логируем серверные вызовы дольше 500 мс –>
<event>
<eq property=”name” value=”CALL”/>
<gt property=”duration” value=”500000″/>
</event>
<!– Логируем конфликты блокировок и дедлоки –>
<event>
<eq property=”name” value=”TLOCK”/>
</event>
<event>
<eq property=”name” value=”TDEADLOCK”/>
</event>
<event>
<eq property=”name” value=”TIMEOUT”/>
</event>
<!– Записывать все свойства для отобранных событий –>
<property name=”all”>
<eq property=”value” value=”true”/>
</property>
<!– Только для серверных процессов –>
<process name=”rphost”/>
<process name=”rmngr”/>
<process name=”ragent”/>
</log>
</config>
Технологический журнал – это неотъемлемый атрибут профессиональной работы с системой 1С:Предприятие. Освоение его настройки и анализа данных открывает перед специалистом широкие возможности для диагностики проблем, оптимизации производительности и глубокого понимания функционирования системы. Хотя первоначальная настройка может показаться сложной, преимущества от использования ТЖ многократно окупают затраченные усилия.
Специалист компании ООО “Кодерлайн”,
Радченко Степан
Добавить комментарий