Магия преобразований Vector, часть 2: технологический журнал

15.11.23

База данных - Технологический журнал

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пример файла конфигурации для технологического журнала 1С
.yaml 5,76Kb
8
8 Скачать (1 SM) Купить за 1 850 руб.

Продолжение статьи Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

Посвящена тонкостям универсального разбора технологического журнала и пример отправки его напрямую в ClickHouse. В конце статьи Инструменты экспорта журнала регистрации 1С в ClickHouse/ElasticSearch найдёте интересную табличку сравнения.

 

Практическая часть

На входе в конвейер Vector имеет многострочный текст одной строки технологического журнала (для наглядности скриншота добавил дополнительные переносы строк):

 

 

Первичная внутренняя картина на входе блока Sources типа File (отладочный вывод в формате JSON; правая часть строк message обрезана на скриншоте, она полностью содержит многострочную строку):

 

 

Первым шагом в блоке трансформации с типом remap с помощью регулярного выражения

(?P<DateTime>\d{2}:\d{2}.\d{6})-(?P<Duration>\d+),(?P<Event>[a-zA-Z]+),(?P<Level>\d{1}),(?P<Content>(?s).*[^\n|\r$])

разложим message на DateTime, Duration, Event, Level и Content. Так же на основе имени файла получим недостающую информацию о дате и времени. Из части имени каталога получим pid-процесса. На основе Duration для удобства дальнейшего использования вычислим дату-время начала события DateTimeStart:

 

 

С помощью регулярного выражения

[^,]*=\'[^\']*\'

вырежем из Content все конструкции ='...', обработаем их отдельно и добавим к результату (Headers и URI):

 

 

При необходимости можно пойти и глубже - вторично разложить свойства на составляющие (на все или выборочно), пример для Headers:

 

 

Завершающим этапом оставшуюся строку Content раскладываем на части по разделителю ',', профит:

 

 

Дополнение

Так же при необходимости можно сразу добавить, к примеру, блок нормализации текстов SQL-запросов:

'%#tt[0-9]%' -> '#tt'

 

Экспорт в ClickHouse

С помощью завершающего блока конвейера вида Sinks и типа clickhouse отправляем распарсенные данные в ClickHouse (база данных и таблица должны быть созданы заранее):

  clickhouse:
    type: clickhouse
    inputs:
      - ParseTechJournal
    endpoint: 'http://[ip]:8124'
    auth:
      strategy: basic
      user: default
      password: '12345678'
    database: log_storage
    table: logs_app
    skip_unknown_fields: false
    encoding:
      timestamp_format: rfc3339
    batch:
      max_events: 100
      timeout_secs: 5

Примечание 1. Параметр skip_unknown_fields у меня почему-то игнорируется - отсутствующие в схеме БД поля всегда игнорируются. Если кто подскажет в комментариях, что не так - буду благодарен.

Примечание 2. Для поддержки расширенных форматов импорта данных (в нашем случае поддержка миллисекунд и часового пояса) в конфигурационный файл пользователя ClickHouse (по умолчанию /etc/clickhouse-server/users.xml) необходимо добавить:

<clickhouse>
    <profiles>
        <default>
            <date_time_input_format>best_effort</date_time_input_format>
            <date_time_output_format>iso</date_time_output_format>
        </default>

Примечание 3. Если вы хотите отправлять данные в разные таблицы БД, в зависимости от Event, то необходимо до добавить блок трансформации с типом Route или поместить имя таблицы в отдельное поле и ссылаться на неё как на переменную. Для фильтрации событий используйте блок трансформации с типом Filter.

 

Анонс

Следующая часть самая сложная - журнал регистрации 1С.

технологический журнал Vector

См. также

HighLoad оптимизация Рефакторинг и качество кода Технологический журнал Программист Платформа 1С v8.3 Россия Бесплатно (free)

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

19.03.2025    2173    EFSOL_oblako    2    

5

Мониторинг Системный администратор Программист Платформа 1С v8.3 Абонемент ($m)

Конфигурация для мониторинга и контроля над состоянием свободного дискового пространства на серверах.

3 стартмани

10.03.2025    490    2    slavik27    11    

3

Мониторинг Перенос данных 1C Системный администратор Программист Платформа 1С v8.1 1С:Розница 2 Россия Абонемент ($m)

Когда у вас много магазинов и хочется быстро понять, что происходит в РИБ с обменами, то все минимально необходимые данные можно увидеть на одной форме.

1 стартмани

06.03.2025    273    0    Nigl    0    

0

Технологический журнал Механизмы платформы 1С Запросы Программист Запросы Бесплатно (free)

Существуют различные методики и инструменты просмотра запроса 1С в PostgreSQL. В этой статье мы разберём подробнее метод анализа запроса 1С на стороне PostgreSQL с помощью технологического журнала платформы 1С и команд в терминале Ubuntu.

04.03.2025    926    user593895_gurov-boris-spb    5    

4

Перенос данных 1C Мониторинг Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Абонемент ($m)

Собирает в одном месте информацию о состоянии обменов данными между разными решениями на 1С.

3 стартмани

24.02.2025    2525    7    natz78    14    

4

Мониторинг Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Данная статья посвящена разработке интеграции 1С и Sentry, что позволяет сделать удобнее анализ ошибок. Также имеется возможность выгрузки замеров времени из 1С для расчета Apdex с целью анализа удовлетворенности пользователей скоростью работы информационной системы. В статье разобраны основные важные моменты при разработке представленной интеграции.

1 стартмани

24.01.2025    961    MC4RT    0    

4

Поиск данных Мониторинг Программист Платформа 1C v8.2 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 Россия Абонемент ($m)

Внешняя обработка ищет файлы и каталоги в выбранном каталоге, определяет их размер, сортирует по убывающей и заполняет таблицу.

1 стартмани

16.12.2024    442    0    ludmila777    8    

4
Оставьте свое сообщение