Найти в Дзене

Полное руководство: Настройка сбора и анализа технологического журнала (ТЖ) 1С:Предприятие

Это руководство позволяет настроить полный сбор всех событий сервера 1С в заданную папку для последующего анализа производительности, отладки ошибок и аудита. Процесс состоит из трех ключевых этапов: настройка, сбор и анализ. Цель: Создать и активировать конфигурационный файл для сбора логов. xml <?xml version="1.0" encoding="UTF-8"?>
<log>
<!-- Отключение создания дампов для экономии места -->
<dump create="false"/>
<!-- Основное правило логирования: ВСЕ события в указанную папку -->
<rule name="FullLog">
<!-- Путь к каталогу логов. Замените на свой! -->
<file path="D:\log\28-08-23\%Y%m%d%H.log"/>
<!-- Хранить файлы логов 5 дней -->
<history dir="D:\log\28-08-23\" length="5d"/>
<!-- Фильтр: событие без имени == ВСЕ события -->
<event>
<neq property="name" value=""/>
</event>
</rule>
</log> Ключевые параметры: После активации конфигурации логи пишутся автоматически. Убедитесь, что сервер "видит
Оглавление

Это руководство позволяет настроить полный сбор всех событий сервера 1С в заданную папку для последующего анализа производительности, отладки ошибок и аудита. Процесс состоит из трех ключевых этапов: настройка, сбор и анализ.

Этап 1: Подготовка и настройка (конфигурационный файл logcfg.xml)

Цель: Создать и активировать конфигурационный файл для сбора логов.

1.1. Создание файла конфигурации

  1. Перейдите в каталог конфигурации сервера 1С (обычно %PROGRAMFILES%\1cv8\conf или /opt/1cv8/conf для Linux).
  2. Создайте файл logcfg.xml.
  3. Скопируйте в него содержимое ниже. Внимание! Измените путь D:\log\28-08-23 на актуальный для вашей системы.

xml

<?xml version="1.0" encoding="UTF-8"?>
<log>
<!-- Отключение создания дампов для экономии места -->
<dump create="false"/>

<!-- Основное правило логирования: ВСЕ события в указанную папку -->
<rule name="FullLog">
<!-- Путь к каталогу логов. Замените на свой! -->
<file path="D:\log\28-08-23\%Y%m%d%H.log"/>
<!-- Хранить файлы логов 5 дней -->
<history dir="D:\log\28-08-23\" length="5d"/>
<!-- Фильтр: событие без имени == ВСЕ события -->
<event>
<neq property="name" value=""/>
</event>
</rule>
</log>

Ключевые параметры:

  • file path: Шаблон имени файла. %Y%m%d%H создаст файл для каждого часа (напр., 2024011514.log).
  • history length="5d": Автоматическое удаление логов старше 5 дней.
  • <neq property="name" value=""/>: Логировать любое событие, у которого есть имя. Это захватывает все.

1.2. Активация конфигурации и проверка прав

  1. Перезапустите сервер 1С (все рабочие процессы или весь кластер). Без этого конфигурация не применится.
  2. Проверьте права доступа: Учетная запись, от которой работает служба сервера 1С (usr1cv8 и т.п.), должна иметь полные права на запись в целевую папку (D:\log\28-08-23\).
  3. Проверка успешности: После перезапуска в указанной папке должны начать появляться файлы логов (например, 2024011514.log).

-2

Этап 2: Сбор и управление логами

После активации конфигурации логи пишутся автоматически.

2.1. Проверка состояния через rac (консоль управления)

Убедитесь, что сервер "видит" вашу конфигурацию:

bash

# Перейдите в каталог утилиты rac (напр., %PROGRAMFILES%\1cv8\8.3.xx.xxxx\bin)
rac logcfg list --cluster=<адрес_вашего_кластера>:<порт> --cluster-user=<admin> --cluster-pwd=<пароль>

В выводе должно отобразиться ваше правило FullLog.

2.2. Рекомендации по эксплуатации

  • Ротация логов: Используйте параметр history в конфиге или настройте внешнюю очистку (например, задача Windows/Linux). Не храните логи вечно.
  • Дисковое пространство: Полный лог может быть очень объемным. Мониторьте размер папки. Для постоянного мониторинга используйте выборочные правила (как в п.1.3).

Этап 3: Парсинг и анализ логов в 1С

Для анализа создайте внешнюю обработку (.epf) или используйте стандартную из ИТС.

3.1. Чтение файлов логов

bsl

// Укажите путь к каталогу с логами
КаталогЛогов = "D:\log\28-08-23";

// Находим все файлы .log
МассивФайлов = НайтиФайлы(КаталогЛогов, "*.log", Ложь);

Для Каждого ФайлЛога Из МассивФайлов Цикл
ЧтениеТекста = Новый ЧтениеТекста(ФайлЛога.ПолноеИмя, КодировкаТекста.UTF8);
Пока Не ЧтениеТекста.КонецПотока() Цикл
СтрокаЛога = ЧтениеТекста.ПрочитатьСтроку();
// ... Анализ строки ...
КонецЦикла;
КонецЦикла;

3.2. Разбор строки лога и анализ

Каждая строка — это событие с параметрами в формате Key=Value;.

bsl

// Пример строки: txn=1;DBMSSQL;Duration=1563;Sql=SELECT ...
Функция РазобратьСтрокулога(СтрокаЛога)

МассивПараметров = СтрРазделить(СтрокаЛога, ";", Ложь);
СтруктураСобытия = Новый Структура;

Для Каждого Пар Из МассивПараметров Цикл
Разделитель = Найти(Пар, "=");
Если Разделитель > 0 Тогда
Ключ = Лев(Пар, Разделитель - 1);
Значение = Сред(Пар, Разделитель + 1);
СтруктураСобытия.Вставить(Ключ, Значение);
КонецЕсли;
КонецЦикла;

Возврат СтруктураСобытия;

КонецФункции

3.3. Практические примеры анализа

Добавьте в обработку таблицу значений (ТВ_Результат) с колонками: Время, ИмяСобытия, Длительность, Контекст, Sql и т.д.

bsl

// ... внутри цикла чтения файла ...
Событие = РазобратьСтрокулога(СтрокаЛога);

// Пример 1: Сбор всех медленных SQL-запросов (> 1 сек)
Если Событие.Свойство("Name") И Событие.Name = "DBMSSQL" Тогда
Длительность = Число(Событие.Duration);
Если Длительность > 1000 Тогда
НоваяСтрока = ТВ_Результат.Добавить();
НоваяСтрока.ИмяСобытия = Событие.Name;
НоваяСтрока.Длительность = Длительность;
НоваяСтрока.Sql = Событие.Sql;
КонецЕсли;
КонецЕсли;

// Пример 2: Сбор всех исключений (ошибок)
Если Событие.Свойство("Name") И Событие.Name = "EXCP" Тогда
НоваяСтрока = ТВ_Результат.Добавить();
НоваяСтрока.ИмяСобытия = "ОШИБКА";
НоваяСтрока.Контекст = Событие.Context; // Здесь часто есть текст ошибки
КонецЕсли;

3.4. Визуализация и экспорт результатов

  1. Вывод в табличный документ: Отсортируйте ТВ_Результат по Длительность (убывание) и выведите топ-10.
  2. Группировка: Сгруппируйте данные по ИмяСобытия или Контекст для анализа частоты.
  3. Экспорт в Excel:bslОтчет = Новый ТабличныйДокумент;
    // ... заполнение отчета из ТВ_Результат ...
    Отчет.Записать("D:\Отчеты\Топ_Медленных_Запросов.xlsx", ТипФайлаТабличногоДокумента.XLSX);

Важные рекомендации и предупреждения

  1. Тестирование на тестовом контуре: Всегда проверяйте конфигурацию и анализ на тестовом сервере, чтобы не перегрузить диск рабочей системы.
  2. Селективный сбор для продакшена: Полный лог (<neq property="name" value=""/>) используйте только для кратковременной детальной диагностики. Для постоянного мониторинга настройте целевые правила (см. п.1.3).
  3. Мониторинг места: Настройте алерты на заполнение диска, где хранятся логи.
  4. Автоматизация анализа: Рассмотрите использование скриптов (PowerShell, Python) для ежедневного парсинга логов, отправки отчетов по email или интеграции с системами мониторинга (Zabbix, Prometheus).

Этот подход обеспечивает полный контроль над журналированием и позволяет эффективно диагностировать проблемы производительности и стабильности в 1С:Предприятие.