Разбор технологического журнала без боли и страданий

12.12.22

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

Технологический журнал - мощный инструмент логирования, используемый для анализа проблем производительности 1С. Но он обладает одним огромным недостатком, в "сыром виде" он почти не поддается адекватному анализу из-за своей структуры. Существует довольно много способов "разобрать" технологический журнал, но все опробованные способы обладают теми или иными недостатками. Предлагаю вам мой вариант "велосипеда" для разбора ТЖ и хранения разобранного в различных форматах.

Скачать исходный код

Наименование Файл Версия Размер
Разбор технологического журнала_docker
.zip 15,43Kb
12
.zip 15,43Kb 12 Скачать
Разбор технологического журнала_версия для windows
.zip 15,15Kb
27
.zip 15,15Kb 27 Скачать

Критерии выбора

Когда я подошел к задаче разбора технологического журнала, я выделил для себя рад критериев:

  • Масштабируемость
    Количество логов растет с ростом базы, а значит должен быть довольно гибкий механизм масштабирования разбора логов

  • Отказоустойчивость

  • Гибкость
    Хочется иметь возможность без боли и страданий добавлять или изменять текущие механизмы экспорта журнала.

  • Скорость работы
    В ситуации, когда объем генерируемых логов в час со всеми ограничениями достигает десятков гигабайт - скорость обработки этих логов становится критичным фактором.

 

Проблемы существующих решений

Дак что же использовать для решения подобных проблем? На самом деле - решений на ИС масса. и Bash-скрипты, и экспортеры всех мастей на всех возможных языках, и тд и тп. Зачем нужен свой велосипед?

  • Почти ни одно из этих решений не позволяло использовать в качестве хранилища разобранного Clickhouse
    Экономия места, а так же скорость его работы - делают его практически незаменимым в задаче хранения логов.
  • Те же, что давали такую возможность не подходили для дальнейшего развития т.к. там использовался совсем "не мой" стек технологий.

 

Vector

В итоге в качестве экспортера был выбран Vector Это продукт с открытым исходным кодом и большим зоопарком возможностей для обработки логов. в чем плюсы этого решения:

  • Скорость
    Написанный на Rust вектор перемалывает логи в невероятных объемах
  • Стабильность.
  • Гибкость настройки
    ТЖ - мягко скажем не самая удобная для разбора конструкция... Вектор позволяет аккуратно работать с ним фильтруя ложные срабатывания
  • Масштабируемость
    При необходимости обработка ТЖ может вестись в несколько потоков
  • Удобство настройки и использования
    Экспортер может легко работать как в Windows, так и в linux средах, а так же очень удобно и комфортно разворачивается в Docker-контейнере
  • Количество вариантов хранилища для логов
    Вектор имеет уже описанные коннекторы с Clickhouse, Elasticserch, а так же еще с 3мя десятками популярных хранилищ.

 

Инструкция по установке

Проще всего использовать решение в Docker-контейнере

  1. Скачиваем архив
  2. Создаем таблицы в Clickhouse при помощи скриптов из папки sql-scripts
  3. Переименовываем файлы Docker-compose.yaml.example и TechJournal.env.examle убирая ".example"
  4. Заполняем настройки подключения к базе и фильтр событий в файле techJournal.env
  5. В файле docker-compose указываете путь к папке с логами
  6. и все. docker-compose up -d и вы собираете логи ТЖ в базу clickhouse

 

Инструкция для работы в windows

  1. Установите Vector c официального сайта.
  2. Скачиваем архив для Windows
  3. Создаем таблицы в Clickhouse при помощи скриптов из папки sql-scripts
  4. В файле executor.cmd задаем настройки сборщика
  5. запускаем executor.cmd

 

Структура проекта

Все довольно просто:

  •  Весь конфиг находится в папке ./config
  • В папке transforms хранятся отдельные обработчики для каждого из событий, они так и называются
  • Для того чтобы изменить процедуру анализа события, достаточно отредактировать файл с соответствующей трансформацией.
  • Для того чтобы добавить событие к обработке необходимо изменить конфигурационный файл добавив туда область с обработкой конкретного события, а так же создать обработчик в папке transforms

 

Что работает из коробки

  • Анализ исключительных ситуаций EXCP, QERR и EXCPCNTX
  • Анализ ожиданий на управляемых блокировках
  • Анализ событий SDBL и DBMSSQL

 

Что в планах на ближайшее будущее

  • Уже сейчас тестируется разбор Call и Scall
  • Далее в планах обработка событий реструктуризации базы данных(Restructuring, workflow, analysis)
  • Далее Утечки памяти.
  • Остальные события будут добавляться по требованию(потребности)
  • Создание механизмов мониторинга и анализа ТЖ(дашборды, графики предсоставленные запросы)
  • Реализация расширения для 1с, с традиционным анализом ТЖ, но с использованием в качестве источника данных clickhouse
  • Проработка механизма устаревания данных в базе clickhouse

 

В заключении

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

Тестировалось на платформе 8.3.20.2180

Проект доступен на github
Буду рад помощи и указанию на неточности обработки

 

 

UPDATE 16.12

  1. Добавилась обработка и сбор событий call и Scall, теперь можно вытаскивать самые долгие вызовы.
  2. Исправление минорных дефектов

Технологический журнал Логи Анализ

См. также

Примеры настроек технологического журнала

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

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

27.04.2024    3118    kuzyara    5    

97

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

Технологический журнал Мониторинг Абонемент ($m)

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

1 стартмани

15.11.2023    923    5    AlexSTAL    0    

8

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

Мониторинг Журнал регистрации Технологический журнал Абонемент ($m)

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

1 стартмани

13.11.2023    3383    7    AlexSTAL    0    

46

«Монитор» – простой анализ производительности

Администрирование СУБД Технологический журнал Бесплатно (free)

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

21.09.2023    6069    Andreynikus    14    

81

Экспорт технологического журнала 1С в Elastic с помощью Logstash

Технологический журнал Платформа 1С v8.3 Абонемент ($m)

Целью данного решения является организация хранения и анализа данных из технологического журнала 1С с использованием стека Elasticsearch + Logstash + Kibana.

5 стартмани

18.09.2023    3689    huxuxuya    3    

24

Мобильный помощник эксперта 1С (приложение android, позволяющее строить отчеты на СКД по логам технологического журнала и не только)

Технологический журнал Мониторинг Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

16.05.2023    3576    capitan    0    

24

Выполняем в СУБД запрос из ТЖ

Технологический журнал Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

24.11.2022    2947    4    VKislitsin    1    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. maXon777 129 13.12.22 10:35 Сейчас в теме
Спасибо за то что делитесь опытом! А можно пару скринов для того, чтобы понять, что дает на выходе Вектор?
itoptimum; John_d; +2 Ответить
2. xKEEPERx 3 13.12.22 10:38 Сейчас в теме
А Журнал регистрации можно таким же образом настроить?
GutaGroup; +1 Ответить
5. JohnyDeath 301 13.12.22 12:39 Сейчас в теме
8. xKEEPERx 3 13.12.22 13:08 Сейчас в теме
(5) Я к сожалению пока не понял, как это запустить)))
Буду пробовать)
3. Segate 231 13.12.22 10:40 Сейчас в теме
(1) не совсем понял вопрос. Вектор на выходе даёт записи в таблицах Clickhouse.

(2) да, можно. Даже статья на инфостарте есть на эту тему, поищите.
Чуть позже, добавлю сюда разбор и до тоже, чтобы все было в одном месте
xKEEPERx; +1 Ответить
4. John_d 5433 13.12.22 11:26 Сейчас в теме
(3) Интересно увидеть скриншоты результата разбора в таблицах Clickhouse
maXon777; itoptimum; +2 Ответить
6. JohnyDeath 301 13.12.22 12:41 Сейчас в теме
13. akpaevj 203 12.01.23 14:06 Сейчас в теме
(6) Оно нерабочее и скоро уйдет в архив. На подходе инструмент, который работает из коробки без кучи конфигурационных файлов и кода со стороны пользователя
JohnyDeath; +1 Ответить
7. Segate 231 13.12.22 12:42 Сейчас в теме
(6) Смотрел, но как я и говорил, стек .net - совсем не мой. А работать "из коробки" я это приложение заставить не смог
so-quest; +1 Ответить
9. user1858942 13.12.22 15:09 Сейчас в теме
Вот такую ошибку получал.
contains(EXCP,EXCPCNTX,TLOCK,TTIMEOUT,SDBL,QERR, to_string!(.Event))
^^^^

undefined variable
did you mean "null"?

В vector.toml поправил condition = '''contains("${EVENT_LIST}", to_string!(.Event))''' заработало.
Докер запускается на windows. Что-то делал не так или ошибка?
10. Segate 231 13.12.22 15:12 Сейчас в теме
(9)видимо зависит от среды запуска. Проверю
11. aple313 2 19.12.22 12:12 Сейчас в теме
Не понял из статьи Live режим реализован или пока в планах?
12. Segate 231 19.12.22 14:23 Сейчас в теме
(11) сбор осуществляется в режиме реального времени, но ТК это происходит не из памяти, а из файлов минимальная задержка(пара минут) все таки есть
14. Habist1 18.01.23 17:32 Сейчас в теме
запускаю версию для windows:

C:\Windows\system32>"C:\Program Files\Vector\bin\vector" --config "C:\Program Files\Vector\config\vector.toml"
2023-01-18T14:31:16.169033Z INFO vector::app: Internal log rate limit configured. internal_log_rate_secs=10
2023-01-18T14:31:16.169326Z INFO vector::app: Log level is enabled. level="vector=info,codec=info,vrl=info,file_source=info,tower_limit=trace,rdkafka=info,buffers=info,lapin=info,kube=info"
2023-01-18T14:31:16.169861Z INFO vector::app: Loading configs. paths=["C:\\Program Files\\Vector\\config\\vector.toml"]
2023-01-18T14:31:17.094496Z INFO vector::topology::running: Running healthchecks.
2023-01-18T14:31:17.095785Z INFO source{component_kind="source" component_id=input_logs component_type=file component_name=input_logs}: vector::sources::file: Starting file server. include=["J:\\1C_logs\\clickhouse\\\\**\\\\*.log"] exclude=[]
2023-01-18T14:31:17.096063Z INFO vector: Vector has started. debug="false" version="0.26.0" arch="x86_64" revision="c6b5bc2 2022-12-05"
2023-01-18T14:31:17.096175Z INFO vector::app: API is disabled, enable by setting `api.enabled` to `true` and use commands like `vector top`.
2023-01-18T14:31:17.097439Z INFO source{component_kind="source" component_id=input_logs component_type=file component_name=input_logs}:file_server: file_source::checkpointer: Loaded checkpoint data.
2023-01-18T14:31:17.110726Z WARN http: vector::internal_events::http_client: HTTP error. error=connection closed before message completed error_type="request_failed" stage="processing" internal_log_rate_limit=true
2023-01-18T14:31:17.110899Z ERROR vector::topology::builder: msg="Healthcheck: Failed Reason." error=Failed to make HTTP(S) request: connection closed before message completed component_kind="sink" component_type="clickhouse" component_id=cl_QERR component_name=cl_QERR
15. Segate 231 18.01.23 18:10 Сейчас в теме
(14) судя по логу, у вас кликхаус не доступен
16. Habist1 18.01.23 19:48 Сейчас в теме
клик с этого сервера точно доступен, ЖР туда выгружаем, а для вектора может какие еще настройки нужны?
(15)
17. Segate 231 19.01.23 15:11 Сейчас в теме
(16) Казалось бы никаких, но лог говорит о невозможности достучаться из процесса вектора в кликхаус. Проверьте все параметры подключения...
18. Habist1 19.01.23 15:48 Сейчас в теме
(17) все по сто раз проверил, вместо имени сервера ip пробовал, не помогает...
19. ComboBoy 15 18.04.23 11:38 Сейчас в теме
Спецом скачал чтобы взять скрипты вектора на разбор ТЖ. Ты отлично постарался - снимаю шляпу, мое почтение!
20. Segate 231 18.04.23 11:39 Сейчас в теме
(19) Спасибо! Скрипты, если что лежать на гитхабе в открытом доступе )
21. ComboBoy 15 18.04.23 11:43 Сейчас в теме
(20) Ну вообще огнище! поставил звезду, склонировал реп
22. AlexSTAL 123 26.04.23 16:24 Сейчас в теме
(0) Егор, а можете мне в личку написать, а то стартмани нет на счету
23. Segate 231 26.04.23 16:29 Сейчас в теме
(22) в статье есть ссылка на репозиторий, он абсолютно свободен для всех.
24. AlexSTAL 123 26.04.23 17:00 Сейчас в теме
(23) не, мне стартани не для скачивания не хватает, а что бы личное сообщение отправить )
25. alexji 22.06.23 21:04 Сейчас в теме
26. Segate 231 22.06.23 21:56 Сейчас в теме
(25) да, вполне, какие-то пожелания?
Оставьте свое сообщение