Выгрузка журнала регистрации в 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С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    34546    22    21    

76

Журнал регистрации Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

6000 руб.

28.11.2018    21095    17    7    

42

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

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

20.11.2024    1443    user1913000    12    

20

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

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

21.10.2024    3459    leemuar    8    

24

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

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

1 стартмани

29.12.2023    2384    36    dima_gsv    3    

14

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

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

1 стартмани

19.11.2023    1653    5    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    5153    11    AlexSTAL    0    

47

Журнал регистрации Инструменты администратора БД Мониторинг Мессенджеры и боты Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Абонемент ($m)

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

3 стартмани

26.09.2023    3052    20    doom2good    16    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. itmind 308 05.05.21 05:42 Сейчас в теме
Почему только с периодичностью час или день?
2. bugagashenka 203 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")


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