Простейшее использование Elasticsearch для работы с журналом регистрации

22.05.20

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

Простейшая настройка выгрузки журнала регистрации в Elasticsearch для ускорения поиска.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Простейшее использование Elasticsearch для работы с журналом регистрации:
.zip 13,95Kb
81
81 Скачать бесплатно

Работа была сделана для устранения проблем долгого поиска информации "кто виноват" и т.п., в базах РИБ по журналам регистрации. Все наработки находятся в git: https://github.com/smilut/uploadRegJornal2Elastic.git

Разработка и тестирование велись на платформе 8.3.13.1513. Функционал запуска по расписанию тестировался в конфигурации Бухгалтерия предприятия 3.0.70.50.

Первоначально хотелось использовать filebeat, но после некоторых попыток прямого обращения к файлам журнала регистрации, показалось более простым реализовать "filebeat" в виде обработки с запуском по регламентному заданию. Данные от обработки принимаются в logstah и после небольшой трансформации помещаются в индекс Elasticsearch.

Описание файлов git:

ОбработкаВыгрузкиЖРсЗапускомПоРасписанию.epf - обработка, которая загружается как дополнительная обработка и запускается по расписанию (функционал БСП). В этой обработке указываются параметры подключения к logstash для выгрузки данных и параметры подключения к Elastic для выполнения запросов. Обработка выполнения запросов еще в вяло текущей разработке, т.к. ее наличие не критично для поиска данных. Скорее обработка формирования запросов необходима пользователям, которые не хотят менять привычный интерфейс 1С на что-то другое. Добавляет к данным журнала регистрации реквизит с указанием строки подключения к базе, из которой выгружается журнал регистрации.

export.json - настроенные в нашей системе дашборды и сопутствующие объекты.

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

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

 
 oneclog.conf для приема данных с нескольких источников

Обработка выгрузки журнала построена на том же принципе, что и filebeat, с небольшим ограничением или усовершенствованием. При запуске запуске можно указать нижнюю границу загрузки, которая будет смещаться при каждой успешной передаче данных в Elastik. Если дата начала выгрузки не указана, то отступаем на три месяца от текущей даты.

 
 Код работы с периодом выгрузки журнала регистрации

Конечно же существует возможность задвоения переданных данных, например процесс передал порцию данных и упал до обработки ответа (выключение питания, перезагрузка и т.д.). В этом случае граница чтения данных не сдвинется и данные будут переданы повторно, но в данном случае это не критично. Elastic позиционируется, как система быстрого поиска и если в результате поиска будут найдены две абсолютно идентичные записи в логах это не исказит описанного в них события. Filebeat, насколько смог понять документацию, ведет себя также. В своих "недрах" он сохраняет указатель до какого момента вычитан файл лога, что бы в случае сбоя начать с этой позиции. Просто за счет скорости опроса у filebeat  (по-умолчанию, кажется 30ms) порция передаваемых данных, как правило очень маленькая и задвоение маловероятно. Необходимая периодичность выгрузки в 1С зависит от интенсивности работы пользователей, обменов, регламентных заданий и т.п. В тестовых системах устанавливали по 2 минуты.

 
 Код выгрузки данных журнала регистрации в Elastic

Если кому-то лень качать с git прикладываю архив файлов в текущем состоянии разработки.

Буду рад замечаниям, критике указаниям на ошибки и вопросам, даже если не смогу на них ответить ).

Журнал регистрации Elasticsearch ELK

См. также

Журнал регистрации Мониторинг Системный администратор Программист Бизнес-аналитик Руководитель проекта Платформа 1С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    34000    22    21    

74

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

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

5000 руб.

28.11.2018    20785    17    6    

42

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

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

20.11.2024    931    user1913000    10    

18

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

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

21.10.2024    2909    leemuar    8    

22

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

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

1 стартмани

29.12.2023    2176    31    dima_gsv    3    

13

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

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

1 стартмани

19.11.2023    1460    5    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    4769    9    AlexSTAL    0    

47

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

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

3 стартмани

26.09.2023    2856    19    doom2good    16    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. goleaff2006 69 21.06.19 17:50 Сейчас в теме
она выгружает за период? Как определяет что уже выгружала а что нет?
3. milut 62 22.06.19 17:06 Сейчас в теме
(1) Спасибо. Дописал ответ в статью.
2. milut 62 21.06.19 21:57 Сейчас в теме
В настройках сохраняется граница выгруженных данных. С этого момента начинается следующая выгрузка.
4. malikov_pro 1325 08.09.19 10:02 Сейчас в теме
Зачем logstash, если подготовку данных можно сделать на уровне выгрузки?
5. milut 62 09.09.19 09:11 Сейчас в теме
(4) Использовали elastic community, в котором есть ограничения настройки прав доступа. Поэтому прямой доступ не открывали. Никаких особенных причин для использования logstash не было.
6. malikov_pro 1325 09.09.19 14:17 Сейчас в теме
Дату последней записи в El можно получить
{
   "size": 1,
   "sort": { "Дата": "desc"},
   "query": {
      "term": {
      	"ConnectionString": "FILE=\"E:\\1C\\BASE\\DEMOTRD\";"
      }
   }
}
Показать


Для корректного поиска нужен маппинг

"ConnectionString": {
        "type": "keyword",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
Показать


И проверку с ЖР сделать

Если СоответствиеДанныеИндекса.Количество() = 0 Тогда
		ЭтоНачалоДанных = Истина;
	ИначеЕсли СоответствиеДанныеИндекса.Получить("Дата") <> Стр_ЖР.Дата Тогда
		ЭтоНачалоДанных = Истина;
	ИначеЕсли 
		СоответствиеДанныеИндекса.Получить("Событие") = Стр_ЖР.Событие 
		И СоответствиеДанныеИндекса.Получить("Сеанс") = Стр_ЖР.Сеанс
		И СоответствиеДанныеИндекса.Получить("ПредставлениеДанных") = Стр_ЖР.ПредставлениеДанных
		Тогда 	
		
		ЭтоНачалоДанных = Истина;
		ТочноеСовпадение = Истина;
	КонецЕсли;
Показать


ELK узлы спокойно прикрываются BasicAuth от NGINX + HTTPS
7. milut 62 09.09.19 22:54 Сейчас в теме
(6) наверняка можно и так. Мы смотрели в сторону nginx, но как ограничить доступ только передачей данных не нашли. Всегда оставался доступ к api. А крайнюю дату определял на стороне 1С только по субъективным причинам, тем способом который показался наиболее подходящим.
8. user1049749 15.01.20 14:24 Сейчас в теме
Добрый день, в версии 7.5 при использовании обработки для отправки POST запросов ошибка

{"error":"Incorrect HTTP method for uri [/localhost] and method [POST], allowed: [GET, PUT, DELETE, HEAD]","status":405}

База и elastic на одной машине. Через браузер и postman запросы проходят.
9. milut 62 15.01.20 20:02 Сейчас в теме
(8) попробуйте не localhost, а 127.0.0.1
10. user1049749 16.01.20 09:13 Сейчас в теме
аналогично, ответ приходит 405.

Сам elastic отвечает и работает, именно затык с получением данных через Вашу обработку и вообще с post запросом в 7.5.

Подскажите где смотреть, пожалуйста.
11. milut 62 16.01.20 10:46 Сейчас в теме
(10) В личку сообщения почему-то не отправляются. Не работает на новой инсталяции или после обновления? Сообщения отправляются в logstash или прямо в Elasticsearch?
Оставьте свое сообщение