Экспорт технологического журнала. Набор инструментов (приложения + исходный код)

Публикация № 1438585 09.05.21

Администрирование - Производительность и оптимизация (HighLoad) - Технологический журнал

технологический журнал экспорт ClickHouse логи ТЖ

Набор инструментов для экспорта данных технологического журнала во внешнее хранилище на базе ClickHouse для Windows и Linux. Готовое приложение и исходный код.

Что в коробке

В прошлой статье "Описание почти всех событий технологического журнала" были рассмотрены все основные события технологического журнала платформы 1С, а также общее описание каждого из них в части назначения использования. Сегодня мы рассмотрим другой вопрос по работе с этими логами.

Сейчас общепринятый подход по работе с текстовыми логами технологического журнала - это использование регулярных выражений. Об этом подробнее Вы можете прочитать на сайте ИТС. Также здесь, на Инфостарт, коллеги делятся опытом использования этого подхода. Например, об этом есть статьи у Николая Васильева. Этот метод работает быстро и может быть использован для решения текущих проблем.

Однако, у этого подхода есть и ряд минусов:

  • Нет возможности делать ретроспективный анализ данных. Например, собирая логи с десятка серверов за длительный период, анализируя изменения нужных показателей. Конечно, можно собирать текстовые файлы логов длительное время и потом обрабатывать их регулярными выражениями. Но на сколько это будет рабочим вариантом, если файлов много и как-то еще надо их компоновать. А если с разных баз и серверов?
  • Нет возможности использовать эти данные в системах мониторинга, например в Zabbix или для простой визуализации в Grafana. Конечно, тут тоже есть варианты реализовать подобное на текстовых файлах, но сложностей будет много в части производительности и сопровождения.
  • Нетривиальное написание запросов к исходным данным с помощью регулярных выражений. Да, на сколько бы Вы не были мастером регулярных выражений, но возвращаясь через некоторое время к написанным регуляркам через длительное время сможете ли Вы понять что и для чего это все создавалось.

Чтобы эти проблемы решить, нужно перенести логи технологического журнала в удобное хранилище, где можно писать произвольные аналитические запросы к ним в каком-либо удобном и привычном способе. Желательно в виде SQL-синтаксиса.

Именно для этих целей были созданы свободные .NET-библиотеки:

  • YY.TechJournalReaderAssistant - библиотека для чтения файлов технологического журнала платформы 1С:Предприятие 8.x.
  • YY.TechJournalExportAssistant - библиотека для экспорта данных технологического журнала платформы 1С:Предприятие 8.x.

Исходный код обоих библиотек открыт. Также их можно использовать в своих приложениях, установив соответствующий Nuget-пакет.

В тех же случаях, когда свое приложение Вы не разрабатываете или хотите поддержать проект (а это очень важно!), то в этой публикации найдете архив с консольным приложением и архив с исходным кодом этого приложения, которое может быть использовано в качестве шаблона для своего решения.

Поехали дальше!

Требования и немного информации

Для работы приложений требуется установленный .NET Core 3.1. Работа библиотек тестировалась с файлами логов технологического журнала платформы 8.2 и 8.3. Под Windows и Linux (в основном Ubuntu последний версий и CentOS).

Почему в качестве хранилища выбран именно ClickHouse? Все дело в том, что большие объемы логов в нем хранятся в очень сжатом виде, а запросы на выборку данных выполняются во многих случаях практически мгновенно. Вот, например, загружены логи в количестве 27.5 млн. событий. Их размер всего лишь 470 МБ.

И не удивительно, это же колоночная СУБД!

В будущем планирую добавить поддержку других хранилищ (PostgreSQL, ElasticSearch, SQL Server), т.к. для некоторых ситуаций выгодней использовать альтернативные варианты. Но это совсем другая история. Сейчас приоритет отдан для ClickHouse.

Если появится вопрос почему не использовать ElasticSearch, то и ответ простой: это поистине мощный комбайн, который нужно обслуживать и выделять на него значительные ресурсы, если объем логов большой. Используя ClickHouse можно хранить огромные объемы логов и обрабатывать их с минимальными затратами. Но, конечно, нужно смотреть по ситуации.

Сценарий использования

Рассмотрим пошаговый пример настройки и использования приложения.

Конфигурация приложения

Все начинается с файла конфигурации "appsettings.json".

{
  "ConnectionStrings": {
    "TechJournalDatabase": "Host=<АдресСервераClickHouse>;Port=8123;Username=<ИмяПользователя>;password=<Пароль>;Database=<ИмяБазыДанных>;"
  },
  "Serilog": {
    "MinimumLevel": {
      "Default": "Error",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning",
        "IdentityServer4": "Information"
      }
    }
  },
  "WatchMode": {
    "Use": true,
    "Periodicity": 10000
  },
  "Export": {
    "Buffer": {
      "MaxItemCountSize": 500000,
      "MaxSaveDurationMs": 60000,
      "MaxBufferSizeItemsCount": 1000000
    }
  },
  "LogSources": [
    {
      "Name": "TJ Errors",
      "Description": "Технологический журнал. Ошибки.",
      "SourcePath": "Q:\\TJ\\Errors",
      "Portion": 10000,
      "TimeZone": ""
    },
    {
        "Name": "TJ Locks",
        "Description": "Технологический журнал. Управляемые блокировки.",
        "SourcePath": "Q:\\TJ\\ManagedLocks",
        "Portion": 10000,
        "TimeZone": ""
      }
  ]
}

Секция "ConnectionStrings" содержит строку подключения "TechJournalDatabase" к базе данных для экспорта. База будет создана автоматически при первом запуске приложения. Также можно создать ее вручную, главное, чтобы структура была соответствующей. Имя строки подключения "TechJournalDatabase" - это значение по умолчанию. Контекст приложения будет использовать ее автоматически, если это не переопределено разработчиком явно.

Секция "WatchMode" содержит настройки режима "наблюдения", в котором библиотеки будут отслеживать появление новых записей в файлах логов. Параметр "Use" включает или отключает этот режим работы, а "Periodicity" указываем в миллисекундах периодичность, с которой выполняется проверка появления новых данных.

Секция "Export.Buffer" содержит настройки работы буфера: * MaxBufferSizeItemsCount - максимальное количество записей в буфере. По достижению этого размера запись в буфер останавливается. * MaxItemCountSize - количество записей, по достижению которого выполняется экспорт данных из буфера и очистка буфера от ранее выгруженных данных. * MaxSaveDurationMs - количество миллисекунд хранения записей в буфере. По истечению этого времени записи из буфера будут отправлены в хранилище в любом случае, независимо от количества записей в буфере.

Секция "LogSources" содержит список параметров обработки технологических журналов, для каждого из которых указываются параметры:

* **Name** - имя источника логов.
* **Description** - описание источника логов.
* **SourcePath** - путь к каталогу с файлами технологического журнала. Необходимо указывать каталог аналогично тому, как он был указан в файле настройки технологического журнала (т.е. в нем должны быть каталоги по процессам и т.д.).
* **Portion** - количество записей, передаваемых в одной порции в хранилище.
* **TimeZone** - часовой пояс логов для корректной обработки дат.

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

Файл конфигурации в самом простом случае должен находиться в каталоге приложения. Но это поведение можно переопределить с помощью параметра приложения "config":

E:\YY.TechJournalManager\YY.TechJournalManager.ConsoleApplication.exe --config "C:\Configs\appsettings-buh3.json"

Теперь мы готову к запуску приложения.

Запуск приложения

На этом этапе все просто - запускаем приложение с указанием файла конфигурации (или без указания, если файл appsettings.json в каталоге приложения). Мы увидим примерно следующее.

При этом в каталоге "Logs", находящемся в каталоге приложения, будут сохраняться логи приложения. По умолчанию установлен уровень записываемых событий "Errors", т.е. только ошибки. Но если поставить в файле конфигурации "Debug" или "Information", то будет сохраняться больше информации. Также каталог для сохранения логов приложения может быть переопределен с помощью параметра "logDirectoryPath".

E:\YY.TechJournalManager\YY.TechJournalManager.ConsoleApplication.exe --logDirectoryPath "C:\Logs"

Запускаем приложение и дожидаемся загрузки. После можем посмотреть результат.

Смотрим результат

Ранее мы уже видели примерный размер логов. Сама база данных содержит в себе две таблицы.

В таблице "EventData" хранятся данные событий, а в "LogFiles" - информация о состоянии загрузки данных из файлов логов. Таблицы сами не чистятся от старых записей, об этом Вам придется позаботиться самостоятельно.

Для теста выполним простой запрос, чтобы посмотреть какие события и в каком количестве сохранены в таблице.

SELECT
	EventName,
	COUNT(*)
FROM EventData ed 
GROUP BY EventName

Результат такой:

В таблицу "EventData" сохраняется вся информация о событии, даже если это какие-то новые произвольные свойства. Под спойлером можно увидеть весь список полей этой таблицы.

 
 Поля таблицы EventData

Если какие-то свойства события не предусмотрены для сохранения в поля таблицы, то в виде JSON они сохраняются в колонке "CustomEventData".

Таким образом, с помощью почти привычного SQL-синтаксиса (почти, потому что он отличается от классических реляционных СУБД) можно делать любые запросы к данным технологического журнала и извлекать любую интересующую информацию.

Крик души

Работая с содержимым технологического журнала не редко приходит чувство нескончаемого легаси, потому что встречается очень странное его поведение:

  • У события может быть несколько одинаковых свойств и даже с разными значениями! Например, бывало, когда у события свойств "t:ClientId" 2 или даже 3. Причем значения в них не всегда совпадают.
  • Формат записи данных в лог очень специфичный. Не пора ли перейти в более удобный формат в виде JSON или что-то подобное.
  • Случаи, когда фильтруешь события для вывода, а в файлах логов все равно проскакивают события которые тебе не нужны.
  • И много всего еще.

В этом все логирование "желтой" платформы. Да, наверняка на каждый пункт можно найти объяснение, пусть будет так :).

Это еще не конец

Мы рассмотрели основные задачи, которые решает это приложение, а также его настройку, запуск и какой общий результат нужно ждать. Подробный пример использования собранных логов, а также какие логи, с какими настройками и когда собирать мы не касаемся, т.к. это уже отдельная тема.

Ранее подобный инструмент для журнала регистрации демонстрировался в публикации "Экспорт журнала регистрации. Набор инструментов (приложения + исходный код)".

Возможно, мы рассмотрим примеры настройки и обработки логов ТЖ в следующих статьях, а сейчас пора заканчивать.

P.S. Вы можете поддержать проект плюсом на Инфостарт / плюсом на GitHub / загрузкой файлов за Стармани из публикациидонатом через спонсорскую кнопку на GitHub. Только благодаря этим действиям open source проекты будут продолжать развиваться, а также будут появляться новые полезные приложения и библиотеки.

P.P.S. Подписывайтесь на канал, ставьте лайки Linux, оставляйте комментарии issues и пишите на почту или в личку.

 
 Будьте в курсе!

Для Вас интересны темы по разработке на платформе 1С и связанные темы по разработке, администрированию? Присоединяйтесь в Telegram-канал, где будет появляться информация о моих новых статьях и разработках на Инфостарт, выходу обновлений, а также некоторые материалы по не1Сной тематике (СУБД, мониторинг, C# и кое-что другое).

Часть материалов, не подходящих сюда по темам, будут выходить на сайте. Там же можно ознакомиться с полным списком разработок для 1С. Думаю, что будет интересно.

Другие ссылки

Авторские разработки (все разработки на одной странице)

 
 Другие разработки (бесплатные и за $m)

Скачать файлы

Наименование Файл Версия Размер
Исходный код приложения (проект Visual Studio 2019)

.zip 59,94Kb
3
.zip 1.0.1.5 59,94Kb 3 Скачать
Консольное приложение для экспорта технологического журнала в ClickHouse (Windows и Linux)

.zip 1,13Mb
6
.zip 1.0.1.5 1,13Mb 6 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. buganov 178 09.05.21 15:46 Сейчас в теме
За разработку однозначно плюс. Только у меня возник вопрос. У Вас на скрине три события - SDBL, DBMSSQL и Context. Я правильно понимаю, что событие контекст оторвано в данном случае от родительского события и в родительском событии контекста не будет?

У события может быть несколько одинаковых свойств и даже с разными значениями!

Я тоже, когда встречался с таким поведением матерился долго. Косяк не критичный, но пришлось костыль вставлять.

Кстати, для себя после того, как попробовал эластик, понял, что для хранения и анализа таких вещей, как ЖР, ТЖ и прочие гораздо быстрее работают именно NoSQL. Думал на питоне сделать парсер ТЖ и выгрузку в эластик, но передумал, т.к. история не нужна, а здесь и сейчас логи обработаются за несколько минут скриптом. В итоге не стал, но, может, не поленюсь и сделаю, чтобы в сообществе было как можно больше различных решений одной задачи
2. YPermitin 11042 09.05.21 15:53 Сейчас в теме
(1) Приветствую, коллега!

>> Я правильно понимаю, что событие контекст оторвано в данном случае от родительского события и в родительском событии контекста не будет?

В данном случае да, но это не связано именно с парсингом и загрузкой событий. Это стандартное поведение самого ТЖ при работе в некоторых режимах работы сервера 1С и клиентский приложений. Например, часто можно увидеть при работе обычных форм. Но с помощью запросов к событию DBMSSQL можно сопоставить контекст из связанных событий по идентификатору соединения и ID события (в ТЖ они обычно идут друг за другом, но есть нюансы конечно).

Неудобно, но это не единственная проблема....

>> Кстати, для себя после того, как попробовал эластик, понял, что для хранения и анализа таких вещей, как ЖР, ТЖ и прочие гораздо быстрее работают именно NoSQL

Я пробовал разные варианты еще при работе с ЖР (PostgreSQL, SQL Server (даже с колоночными индексами), ElasticSearch и еще некоторые. По скорости обработки с ClickHouse еще ничто не сравнилось. Эта СУБД не совсем классический SQL, там аналитические запросы очень быстро отрабатывают, но сам синтаксис имеет ограничения. Но все можно решить.

ELK стэк тоже хорош, но на постоянной основе слишком дорого там хранить ТЖ и ЖР. У меня была идея в ELK сохранять только информацию об ошибках, а другие логи (упр. блокировки, запросы уже в Клик. Дешево и сердито. Но руки пока все не доходят сделать.

>> в сообществе было как можно больше различных решений одной задачи
Тут однозначно только ЗА. Пожал бы руку за стремления :)
12. Darklight 27 13.05.21 09:49 Сейчас в теме
(2)
В данном случае да, но это не связано именно с парсингом и загрузкой событий.

Это не удобно и создаёт лишнюю нагрузку на СУБД при анализе.
На Инфостарте уже давно есть решения, соединяющие исходное событие и его контекст в одну запись в СУБД (правда не для ClickHouse)

По скорости обработки с ClickHouse еще ничто не сравнилось.

Да, отличная СУБД для хранения логов (как и еластик - специально под это дело тюнинговалась вендором для решения личных задач). По-моему ещё никто до Вас не представил тут решение для загрузки тех лога в ClickHouse. Я - пару лет назад начал такой проект (загрузка тех логов 1С в ClickHouse и Elasticsearch) - но так и не доделал....
Для анализа логов синтаксиса запросов ClickHouse вполне достаточно.
Про загрузку тех логов в эластик на Инфостар уже были статьи, правда, вроде бы без готового решения.
13. YPermitin 11042 13.05.21 09:54 Сейчас в теме
(12)
На Инфостарте уже давно есть решения, соединяющие исходное событие и его контекст в одну запись в СУБД


Создание мат. представлений в Клике решит эту задачу. Но я все же сосредоточен не на создании готового решения, поэтому удобства пока не в работе. Просто времени на это нет. А так соединить не сложно эти части. Но если поддержка проекта будет, то почему бы и нет :)

По-моему ещё никто не представил тут решение для загрузки тех лога в ClickHouse


Евгений Акпаев тоже делал: https://github.com/akpaevj/OneSTools.TechLog

Но вообще, цели сделать готовое решение у меня нет. Я реалист, у меня столько времени не найдется. Да и пыл к работе с 1С уже не тот, что прежде :D
14. Darklight 27 13.05.21 10:00 Сейчас в теме
(13)
OneSTools.TechLog

Про данный проект не знал, ему только год, давно не мониторил тему, да и "Проект в стадии разработки".
Сначала (по названию) подумал - что это библиотека для OneScript - посмотрел - исходники на CSharp :-) -хотя одно другому не мешает ;-)

Свой проект как-нибудь тоже постараюсь довести до ума - у меня своё виденье по хранению и обработке тех лога, нежели у всех представленных решений.
Да и нужен он был как вспомогательная часть другого - более крупного проекта
15. akpaevj 165 13.05.21 10:06 Сейчас в теме
(14) Всё никак не могу собраться с силами и довести до рабочего состояния) Вообще, у подобных инструментов хороший потенциал, но у ТЖ очень много нюансов, поэтому они требуют очень тщательной проработки
17. Darklight 27 13.05.21 10:12 Сейчас в теме
(15)У меня парсинг полностью работает (универсально для всех событий и свойств (даже неизвестных) - все свойства в отельных колонках - для ClickHouse это не критично; даже обработка одноимённых свойств есть (правда фиксированная)) - но я остановился на оптимизации - решил перейти на многопоточную обработку - причём сразу замахнулся на многопоточную обработку одного файла (а не разных - видимо зря) и асинхронное взаимодействие с входными выходными потоками данных - на чём и застопорился - многопоточка - это не легко, особенно, когда нет большого опыта работы с ней. Ну и Bulk load нужно ещё прикручивать. Context Тоже пока не склеил с исходным событием
YPermitin; +1 Ответить
18. YPermitin 11042 13.05.21 10:30 Сейчас в теме
(17) Хорошая работа сделана!

А на GitHub не выкладывали работы и планируется ли?
За закрытый код не осуждаю, просто добавил бы ссылки у себя :)
19. Darklight 27 13.05.21 13:12 Сейчас в теме
(18)Вот доведу до ума, возможно выложу (просто там много чего ещё через "пень колоду" сделано и нет пользовательского API, а недоделки выкладывать не в моём стиле). Как уже сказал - данный проект не самоцель - а лишь винтик в более крупном проекте.
Вот только с тех пор я увлёкся с десятком других проектов - и в этом мой недостаток - идей больше, чем возможностей их реализовать!
YPermitin; +1 Ответить
21. YPermitin 11042 13.05.21 15:47 Сейчас в теме
20. akpaevj 165 13.05.21 14:40 Сейчас в теме
(17) Я хотел немного по другому пути пойти. Собирать только необходимую информацию и сделать постобработку разобранных данных (для себя и в разработке называю это анализом, вроде соединения контекста и dbmssql и корреляции разных событий). Т.е. зашить в программу разные типы анализов и использовать их при сборе данных. В собирании всего и вся не вижу смысла.
22. Darklight 27 13.05.21 16:10 Сейчас в теме
(20)Настройку необходимых событий, фильтров и полей никто не отменял - просто я считаю, это не должно ограничиваться универсальным инструментом.
Делать корреляцию событий из различных источников - это правильная тема - но это уже (в моём понимании) другая задача - и такая идея тоже есть - но в рамках специализированного инструмента уже
3. Andreynikus 1405 09.05.21 22:44 Сейчас в теме
Спасибо за разработку!
А по разделу "Крик души" я бы наверное целую статью про ТЖ смог написать :)
YPermitin; +1 Ответить
4. YPermitin 11042 09.05.21 23:10 Сейчас в теме
(3) Легаси с многолетней выдержкой :)))
5. 3vs 10.05.21 08:16 Сейчас в теме
Юрий, а Вас не заинтересует в этом плане информация от компании "Релэкс"?

Они замутили новую СУБД - SoQoL (Сокол).
Пишут, что прототип работает в разы быстрее широко используемых СУБД.
Приглашают на свой вебинар:
Приглашаем разработчиков, администраторов, архитекторов, продакт-менеджеров и руководителей IT-компаний на презентацию разрабатываемой принципиально новой системы управления базами данных SoQoL от компании РЕЛЭКС.

Мы расскажем о преимуществах нашей СУБД, новом подходе к работе с данными, покажем пути внедрения нашей СУБД в Ваши IT-продукты.

Вебинар состоится 18 мая 2021 года с 11:00 до 12:00 (по Москве) при поддержке объединения компаний-разработчиков программного обеспечения РУССОФТ.

Мы ждём компании:

- IT-продукты которых требуют перезагрузки,
- Которых не удовлетворяют существующие на рынке решения по работе с данными,
- Имеющие планы по стратегическому развитию своих IT-решений.


Ссылка на рекламный буклет этой СУБД:
soqol.ru
6. YPermitin 11042 10.05.21 08:22 Сейчас в теме
(5)
Релэкс


Не интересует. Черный ящик, с которым ничего не понятно :)
23. Darklight 27 13.05.21 16:21 Сейчас в теме
(6)Чёрный ящик он сугубо до презентации и хотя.... пока не будет версии, которую можно скачать, то даже после презентации будет черным ящиком!
Но вообще - Релэкс - старая контра - и она сделала наверное практически единственную КОММЕРЕЧСКУЮ российскую реляционную СУБД ЛИНТЕР (которая не ВС) созданную с нуля уже давно - которая сертифицирована и используется в госсекторе и в оборонке - а это покруче чем "условно перелицованный" PostgreSQL- что впаривают сейчас под видом СУБД Postgres.
Хотя насколько хорош то ЛИНТЕР я не знаю - дел с ним не имел
7. user612295_death4321 10.05.21 12:09 Сейчас в теме
Юра, а твоя утилита вообще под все события ТЖ заточена?
8. YPermitin 11042 10.05.21 13:06 Сейчас в теме
(7) да, типы события не пмеют значения.
Если для свойства не предназначена колонка в таблице, то эти данные сохраняются в отдельное поле JSON.

Для производительности можно создать мат представление, которое будет строиться по данным из этого поля.

Наверное будет отдельная статься про настройки ТЖ и виды запросов для анализа.
9. user612295_death4321 10.05.21 14:01 Сейчас в теме
(8)
) да, типы события не пмеют значения.
Если для свойства не предназначена колонка в таблице, то эти данные сохраняются в отдельное поле JSON.

Для производительности можно создать мат представление, которое будет строиться по данным из этого поля.


Если я верно понял логику, то у тебя колонка "CustomEventData", это некая защита от непредусмотренных свойств или новых свойств которые будут добавлены в последующих версиях платформы, о которых наверное правильнее будет тебя поставить в известность, чтоб ты допилил приложение)

В идеальной картине мира, такая колонка же должна быть пустой ?
10. YPermitin 11042 10.05.21 14:19 Сейчас в теме
(9) нет. Некоторые редкие поля я не вытаскиваю в отдельные колонки, потому что они редко используются в диагностике. Поэтому то что там есть данные это норм.

Для своих целей просто мат. представления создаешь и все будет ОК.
11. a.doroshkevich 950 11.05.21 11:56 Сейчас в теме
16. Darklight 27 13.05.21 10:07 Сейчас в теме
Вы пишите про сложность анализа логов через регулярные выражения - и я с Вами полностью согласен. Причём логи 1С особенно не дружелюбны к регуляркам.
Но интересно, в данном проекте парсинг логов Вы делаете через регулярки или текстовым разбором.
Я, вот, не люблю регулировки, не использую у себя при прессинге, и считаю, что скорость от этого не сильно страдает.
Так же Вы ссылаетесь на проблемы регрессивного анализа - не сталкивался с такими при разборе логов (по крайней мере без регулярных выражений) - обычно это прямой поток данных (символов, слов-тэгов), без бэктрекинга. Можете пояснить на примере когда это нужно?
25. YPermitin 11042 13.05.21 20:45 Сейчас в теме
(16) там смешанные методы парсинга события. Есть регулярки, а есть просто обработка текста.
Честно говоря, там есть что дорабатывать и исправлять, но идеальный софт вряд ли можно выпустить :)
По мере возможности эту часть в общем еще дорабатывать буду.

По скорости - может снижается, но они там простые и в целом разбор событий работает на приемлемой скорости.

Так же Вы ссылаетесь на проблемы регрессивного анализа

Трудно такое в комментарии описать. Весь смысл в том, что нужно хранить разные показатели и длительное время, чтобы этот анализ проводить.
27. Darklight 27 14.05.21 09:37 Сейчас в теме
(25)
Трудно такое в комментарии описать. Весь смысл в том, что нужно хранить разные показатели и длительное время, чтобы этот анализ проводить.


Не понимаю зачем - есть строка события - обработка следующей строки события - это уже абсолютно новый набор данных - ничего промежуточного хранить не нужно. Единственное - это многоуровневые строки текстовых представлений - но их чтенние это, в принципе, тоже вполне себе изолированная задача.
Остаётся просто читать посимвольно строку события отделять имена свойств от значений (по символу "=") и впихивать их в хэшмэп. Делать бэктрекинг к началу строки нет смысла. При начале текстового поля - читать его посимвольно (ну или регуляркой - тут легко ей) пока нет закрывающей кавычки (нечётной последовательности) - получаем текстовое значение.
Простое потоковое чтение на десятке переменных
28. YPermitin 11042 14.05.21 09:39 Сейчас в теме
(27) похоже мы вообще про разное говорим.

В общем, не хотелось бы обсуждать реализацию в комментариях. Код открыт как говорится.
29. Darklight 27 14.05.21 09:46 Сейчас в теме
(28)Я бы с удовольствием посмотрел сорс - но 10sm для меня непосильная такса
24. alex_4x 82 13.05.21 17:16 Сейчас в теме
Это просто гениальная разработка!
100 плюсов!
Вопрос: можно ли как-то использовать это в случае, если база 1С расположена на облачном сервере.
Если можно, то наверно есть какие-то нюансы?

Спасибо Вам за проделанную работу!
26. YPermitin 11042 13.05.21 20:47 Сейчас в теме
(24) а что под облаками подразумевается?

Если это Fresh, то я не знаю какие там правила работы и т.д.

Если это выделенный сервер или по крайней мере есть какой-то доступ к серверу (то есть не только в 1С работаете), то тогда можно организовать доступ. Можно в том же облаке поднять виртуалку с ClickHouse и туда передавать данные логов. В общем тут вариантов масса.
30. Free1CforAll 18.05.21 20:48 Сейчас в теме
31. user612295_death4321 13.06.21 12:20 Сейчас в теме
(10) Юра, а как с тобой можно связаться? Форма обратной связи на твоем сайте не работает.
32. YPermitin 11042 13.06.21 12:28 Сейчас в теме
(31) почта в профиле GitHub, ИС,, issue :)

P.S. В выходные отдыхаю :) Всем желаю :)
Отвечаю очень неоперативно в выходные и в рабочие дни. Иногда могу совсем не ответить.
Оставьте свое сообщение

См. также

Автоматизация анализа файлов технологического журнала Промо

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

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

1 стартмани

14.02.2012    33862    77    Aleksey.Bochkov    16    

Утилита для перезаписи технологического журнала в удобный для анализа формат (Linux)

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

Проводить анализ технологического журнала (далее ТЖ) средствами bash и powershell было бы удобнее, если бы события записывались в одну строку и строго соблюдался единый формат ограничителей содержимого полей. Данная утилита устраняет эти недостатки, благодаря чему станет легче писать скрипты, вы сможете повысить точность анализа ТЖ и от вашего внимания не ускользнёт ни одно самое мелкое событие.

1 стартмани

26.08.2021    597    0    cdiamond    0    

Просмотр файлов технологических журналов 1С (WinAPI)

Производительность и оптимизация (HighLoad) Технологический журнал v8 Россия Абонемент ($m)

Программа просмотра файлов технологических журналов 1С (WinAPI). Работает с большими файлами. Минимальное потребление памяти при индексировании данных, просмотре. Анализ управляемых взаимоблокировок, таймаутов, ожиданий. Фильтры по событиям, периоду, пользователям, соединениям, сеансам.

1 стартмани

24.08.2021    954    4    sdf1979    2    

Powershell: Анализ технологического журнала. Топ-25 вызовов.

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

Использование Powershell для анализа технологического журнала 1с. Пример получения топ-25 вызовов

1 стартмани

16.06.2021    3652    1    Dimashiro    15    

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

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

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

1 стартмани

24.04.2009    42226    2137    Широкий    127    

Занимательный PowerShell

Языки и среды Бесплатно (free)

PowerShell. Что, зачем, как и почему? И причем тут 1С?

16.05.2021    7127    YPermitin    27    

Оперативный мониторинг управляемых блокировок и серверных вызовов кластера 1С (windows сервис BETA расширения функционала конфигурации "Центр Контроля Качества")

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

Windows сервис расширения функционала счетчиков производительности конфигурации "Центр Контроля Качества". Собирает и агрегирует информацию из технологического журнала об управляемых блокировках (TLOCK, TDEADLOCK, TTIMEOUT), а так же серверных вызовов (CALL в разрезе p:processName для процессов rphost и в разрезе IName для процессов ragent и rmngr). Агрегированная информация каждую минуту отправляется по http в конфигурацию ЦКК и там представлена в виде счетчиков производительности.

1 стартмани

29.03.2021    1821    1    sdf1979    0    

Парсер технологического журнала (golang + redis + elasticsearch)

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

На просторах интернета, в том числе на данном ресурсе содержится разнообразное количество инструментов, позволяющих читать, трансформировать логи технологического журнала. Инструмент, который я описываю в данной статье, - является альтернативным вариантом, реализованным на стеке технологий Goroutines (golang) + Redis + Elasticsearch.

1 стартмани

07.01.2021    6225    3    Shmell    14    

Длина ключа индекса превышает максимально допустимую. Решение с использованием технологического журнала

Тестирование и исправление Технологический журнал v8 1cv8.cf Россия Абонемент ($m)

При разработке конфигурации в клиент-серверном варианте могут возникнуть проблемы при загрузке конфигурации в файловый вариант. В статье описан один из вариантов решения проблемы.

1 стартмани

28.01.2020    5989    3    newtraveller    0    

V8 Log Scanner - утилита для быстрого парсинга логов ТЖ

Сервисные утилиты Технологический журнал v8 Россия Абонемент ($m)

Как можно быстро настраивать logcfg.xml и парсить логи технологического журнала с помощью самописной open-source утилиты V8LogScanner. Без необходимости погружаться в регулярные выражения.

1 стартмани

07.11.2017    23961    5    ripreal1    27    

Techlogqueryviewer - Вьювер запросов к СУБД из технологического журнала 1С: Предприятие

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

Обработка для отображения текстов запросов, формируемых платформой 1С: Предприятие в том виде, в каком они должны быть выполнены на СУБД. Тексты запросов обработка получает из технологического журнала по мере их там постепенного появления. Генерация запросов может вестись как в обычном, так и в управляемом режиме, но сама обработка работает только в обычном режиме.

1 стартмани

14.08.2016    8498    9    KAV2    8    

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

Технологический журнал v8 1cv8.cf Россия Абонемент ($m)

Простой, шустрый и легкий в использовании off-line парсер технологического журнала 1С.

5 стартмани

06.12.2015    23818    94    sarycheff    29    

Анализ технологического журнала утечек памяти

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

Конфигурация предназначена для отчитки файлов технологического журнала и помещения данных в базу для дальнейшего анализа. Есть аналоги данного творения, но эта конфигурация заточена только именно для анализа действий CALL и LEAKS. Если заинтересовались, заходим в подкаст.

1 стартмани

14.11.2015    20351    70    logarifm    13    

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

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

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

1 стартмани

19.08.2015    15406    187    liurn    8    

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

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

Как получить правильный logcfg.xml

1 стартмани

11.01.2013    39439    253    romansun    14    

Анализ исключений в технологическом журнале 8.2

Технологический журнал v8 1cv8.cf Россия Абонемент ($m)

Конфигурация позволяет загружать данные технологического журнала извлекая из него исключения (EXCP) и сохраняет их в базу данных, при сохранении производится парсинг, класиффицирующий ошибки по уже известным. Позволяет постфактум проанализировать статистику работы системы, выявить проблемы, оценить мероприятия по отказоустойчивасти Функционал: 1. Анализируется технологический по событиям EXCP и CALL. Загрузка производится из сетевого каталога на стороне сервера 2. По вхождению подстроки в событие определяется «тип ошибки» (справочник заполняется пользователем) 3. В случае добавления в спр новой типовой ошибки – можно повторно пропарсить уже загруженные события 4. Есть свертка базы (удаление записей с датой менее ДатаЧ) 5. Объединено с БСП, использованы подсистемы: отчетов и обновлений

1 стартмани

13.06.2012    10475    100    xoxland    5    

Парсинг технологического журнала 1С средствами SQL CLR

Технологический журнал v8 1cv8.cf Россия Абонемент ($m)

В статье рассказывается о том как реализовать парсинг (разбор) файлов технологического журнала c помощью SQL CLR, а также настроить хранение информации из него в базе данных. В статье приведен полный листинг функции, а также примеры использования.

1 стартмани

29.11.2011    20358    261    squad    25