Выгрузка журнала регистрации в ElasticSearch с помощью Python

26.04.21

База данных - Журнал регистрации

Данный скрипт реализован на языке python с подключаемой библиотекой ElasticSearch, что позволяет парсить и загружать файлы ЖР напрямую в ES. ВНИМАНИЕ! Данный парсер работает только со старым форматом ЖР и только, если у него периодичность день или час.

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

Входные данные:

Периодичность файла ЖР: Час

Средний размер файла: 900 Мб

Штатными средствами проанализировать даже данные за день невозможно.

Выходные данные:

Требование к системе:

Оперативность получения данных: в рамках периодичности

Хранение данных в днях: 15

Средний размер индекса за день: 10Гб

Среднее количество строк в индексе за день: 90М

 

В данной статье не рассматривается настройка ES, подразумевается, что пользователь достаточно опытный, чтобы найти информацию по установке и настройке. На ИС есть несколько годных статей.

 

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

Итак, система готова, python, ES, Kibana установлены и настроены, библиотеки для python загружены.

Вызов осуществляется из командной строки.

 
 Пример:

 

 
 Возможные аргументы:

 

Смещение по времени требуется, если на одном сервере обрабатываются журналы баз из различных часовых поясов.

Так же, важное замечание. В моем случае не требовалось парсить поле Данные, достаточно только представление данных.

 
 Сам скрипт

 

Пример поиска конкретного документа и расследование действий с ним

 

Тестировалось на платформе 8.2.19 в ОС Windows

В разработке использовалась статья про формат ЖР //infostart.ru/1c/articles/182061/

Вступайте в нашу телеграмм-группу Инфостарт

ElasticSearch python журнал регистрации

См. также

Журнал регистрации Системный администратор 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

История изменений реквизитов и табличных частей справочников, документов, независимых регистров сведений, возможность отката изменения, восстановление удаленных объектов, сбор статистики использования базы 1С. Альтернативный журнал регистрации.

22800 руб.

22.02.2018    37563    61    55    

58

Журнал регистрации Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Журнал регистрации платформы 1С в SQL. Общая база хранения всех журналов. Через com-подключение регламентным заданием периодически догружает журналы регистраций из рабочих баз. Предоставляет настраиваемый доступ к журналам по правам подразделений. Формирует отчеты по пользователям и данным.

12000 руб.

23.05.2014    58317    53    17    

48

Журнал регистрации Системный администратор 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Конфигурация LogiCH эффективно решает проблему хранения и анализа записей журналов регистрации. Разработка использует столбцовую СУБД ClickHouse, одну из самых быстрых Big Data OLAP СУБД. Любой анализ журнала можно выполнить в одном отчете, в котором доступны все возможности СКД с учетом ограничений RLS. Количество подключаемых баз не ограничено и не влияет на скорость построения анализа.

6000 руб.

28.11.2018    23088    21    8    

47

Оптовая торговля Розничная торговля Журнал регистрации Системный администратор Пользователь Руководитель проекта 1С:Предприятие 8 1C:Бухгалтерия Автомобили, автосервисы Управленческий учет Платные (руб)

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

4800 руб.

03.09.2016    44079    34    24    

39

Журнал регистрации Программист Россия Бесплатно (free)

В материале рассматривается сравнение двух инструментов для работы с журналом регистрации 1С: утилиты ibcmd и платформы Vector. Описаны их функциональные возможности, тестирование производительности и практическое применение для преобразования логов в формат JSON.

20.11.2024    5179    user1913000    13    

24

Журнал регистрации Тестирование QA Программист Бесплатно (free)

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

21.10.2024    6687    leemuar    8    

24

Инструменты администратора БД Журнал регистрации Системный администратор 1С:Предприятие 8 1С:Управление торговлей 11 Абонемент ($m)

Внешняя обработка для регламентного сокращения журнала регистрации для конфигураций на базе БСП и платформы 8.3.20+

1 стартмани

29.12.2023    4210    53    dima_gsv    4    

14

Журнал регистрации Мониторинг Системный администратор Программист Абонемент ($m)

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

1 стартмани

19.11.2023    3313    9    AlexSTAL    0    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. itmind 304 05.05.21 05:42 Сейчас в теме
Почему только с периодичностью час или день?
2. bugagashenka 205 05.05.21 09:03 Сейчас в теме
(1) потому что делал для себя, а более крупной нету, ибо пришлось бы наращивать оперативную память для обработки таких файлов, в тексте я указал, что даже за час набегает около гигабайта. В принципе, текст скрипта открыт, в этом куске
if periodicity == 'h':
            last_date = now_date - datetime.timedelta(hours=hour_delta)
            file_name = last_date.strftime("%Y%m%d%H0000.lgp")
        else:
            last_date = now_date - datetime.timedelta(days=1)
            file_name = last_date.strftime("%Y%m%d000000.lgp")


можете добавить свой в аргумент --p и обработать его.

Например, для месяца будет что то, вроде
parser.add_argument("--p", default='h', choices=["h", "d", "m"], required=True, type=str,
                        help="Периодичность журнала. h - почасовой; d - подневной; m - помесячный")


 last_date = now_date - datetime.timedelta(months=1)
            file_name = last_date.strftime("%Y%m00000000.lgp")


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