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

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. Исправление минорных дефектов

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

См. также

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

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

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

1 стартмани

15.11.2023    854    4    AlexSTAL    0    

8

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

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

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

1 стартмани

13.11.2023    3195    4    AlexSTAL    0    

42

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

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

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

21.09.2023    5957    Andreynikus    14    

80

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

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

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

5 стартмани

18.09.2023    3557    huxuxuya    3    

23

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

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

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

16.05.2023    3487    capitan    0    

23

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

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

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

1 стартмани

24.11.2022    2915    3    VKislitsin    1    

17
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 229 13.12.22 10:40 Сейчас в теме
(1) не совсем понял вопрос. Вектор на выходе даёт записи в таблицах Clickhouse.

(2) да, можно. Даже статья на инфостарте есть на эту тему, поищите.
Чуть позже, добавлю сюда разбор и до тоже, чтобы все было в одном месте
xKEEPERx; +1 Ответить
4. John_d 5416 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 229 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 229 13.12.22 15:12 Сейчас в теме
(9)видимо зависит от среды запуска. Проверю
11. aple313 2 19.12.22 12:12 Сейчас в теме
Не понял из статьи Live режим реализован или пока в планах?
12. Segate 229 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 229 18.01.23 18:10 Сейчас в теме
(14) судя по логу, у вас кликхаус не доступен
16. Habist1 18.01.23 19:48 Сейчас в теме
клик с этого сервера точно доступен, ЖР туда выгружаем, а для вектора может какие еще настройки нужны?
(15)
17. Segate 229 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 229 18.04.23 11:39 Сейчас в теме
(19) Спасибо! Скрипты, если что лежать на гитхабе в открытом доступе )
21. ComboBoy 15 18.04.23 11:43 Сейчас в теме
(20) Ну вообще огнище! поставил звезду, склонировал реп
22. AlexSTAL 118 26.04.23 16:24 Сейчас в теме
(0) Егор, а можете мне в личку написать, а то стартмани нет на счету
23. Segate 229 26.04.23 16:29 Сейчас в теме
(22) в статье есть ссылка на репозиторий, он абсолютно свободен для всех.
24. AlexSTAL 118 26.04.23 17:00 Сейчас в теме
(23) не, мне стартани не для скачивания не хватает, а что бы личное сообщение отправить )
25. alexji 22.06.23 21:04 Сейчас в теме
26. Segate 229 22.06.23 21:56 Сейчас в теме
(25) да, вполне, какие-то пожелания?
Оставьте свое сообщение