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

Публикация № 1033418 20.06.19

Администрирование - Администрирование данных 1С - Журнал регистрации

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

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

Работа была сделана для устранения проблем долгого поиска информации "кто виноват" и т.п., в базах РИБ по журналам регистрации. Все наработки находятся в 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 для работы с журналом регистрации:

.zip 13,95Kb
47
.zip 13,95Kb 47 Скачать бесплатно

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. goleaff2006 61 21.06.19 17:50 Сейчас в теме
она выгружает за период? Как определяет что уже выгружала а что нет?
3. milut 57 22.06.19 17:06 Сейчас в теме
(1) Спасибо. Дописал ответ в статью.
2. milut 57 21.06.19 21:57 Сейчас в теме
В настройках сохраняется граница выгруженных данных. С этого момента начинается следующая выгрузка.
4. malikov_pro 750 08.09.19 10:02 Сейчас в теме
Зачем logstash, если подготовку данных можно сделать на уровне выгрузки?
5. milut 57 09.09.19 09:11 Сейчас в теме
(4) Использовали elastic community, в котором есть ограничения настройки прав доступа. Поэтому прямой доступ не открывали. Никаких особенных причин для использования logstash не было.
6. malikov_pro 750 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 57 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 57 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 57 16.01.20 10:46 Сейчас в теме
(10) В личку сообщения почему-то не отправляются. Не работает на новой инсталяции или после обновления? Сообщения отправляются в logstash или прямо в Elasticsearch?
Оставьте свое сообщение

См. также

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

Прочие инструменты разработчика Журнал регистрации v8 Абонемент ($m)

Набор инструментов для экспорта данных журнала регистрации во внешние хранилища для Windows и Linux (SQL Server, PostgreSQL, MySQL). Готовые приложения и исходный код.

10 стартмани

26.05.2020    12321    83    YPermitin    0    

Сложнейшая загрузка журнала регистрации в ElasticSearch (или делаем настоящий ETL)

Журнал регистрации v8 Россия Абонемент ($m)

Году в 2017ом возникло (наверное странное на тот момент) желание перегрузить журнал регистраций 1С в ELK. Чтобы журналы место на диске не съедали, 1С программисты забыв поставить фильтр сервер не подвешивали, все журналы лежали в одном месте да и можно было безопасно туда ответственных пользователей пускать, чтобы сами смотрели кто какой документ поправил.На предложение написать выгрузку сразу из 1С программисты благополучно забили ("ой на это минимум месяц", "у нас срочные бизнес-фичи" и т.д. и т.п.). Зато попалась статья от Aleksey.Bochkov (https://infostart.ru/public/182820/). Ну и решили мы все это запилить без 1С программистов. Во что влезаем я тогда еще не понимал. А вылилось почти в год допилок (хорошо хоть в фоновом режиме) в цельный ETL с использованием C#, T-SQL и прочими делами.

1 стартмани

27.09.2019    15387    6    DonAlPatino    33    

Анализ журнала регистрации информационных баз

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

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

27.06.2011    20287    209    AndreyEvtushin    16    

Простенькая книга жалоб

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Простая книга жалоб на основе журнала регистрации

13.11.2009    13190    181    igor883    5    

Регистрация изменений в документах

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Небольшая, простая разработка регистрации изменений в документах. Кто, что именно, когда менял. Пишем все в регистр сведений.

16.10.2009    15893    276    websamson    23    

Подсистема "Контроль изменения данных" (8.1)

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Подсистема легко встраивается в любую конфигурацию, не изменяет конфигурацию и не мешает обновлению. Назначение - регистрация изменения отдельных (или всех) реквизитов справочников и документов, имеющихся в конфигурации. Например, необходимо контролировать - КТО, КОГДА, С КАКОГО КОМПЬЮТЕРА изменил сумму существующего уже документа "Расходный кассовый ордер"? А в справочнике "Контрагенты" кто и когда поменял "Основного менеджера"? И хотелось бы узнать какое значение на какое заменили - ...чтобы восстановить справедливость :) Подсистема снова БЕСПЛАТНО (то есть даром :))

05.09.2009    30427    1739    KukA.5    69    

Подсистема восстановления и регистрации изменений данных (версия 1.0.4.3)

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

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

05.05.2009    18214    1220    SedovSU@mail.ru    25    

Подсистема восстановления и регистрации изменений данных

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Вы случайно измененили какой то документ, или справочник или другой объект, так не думайте об этом, данная конфигурация легко восстановить любой объект конфигурации на заданую дату, если он был удален - то будет создан новый на заданую дату. Конфигруация позволяет построить объект в виде дерева, со всеми реквизитами, табличными частями, а если это документ, то и его движения, а так же покажет вам значения до текущих изменений. Все что Вам необходимо это объединить данную конфигурацию, окрыть форму регистра сведений "Журнал истории объектов", на вкладе "Настройки" , нажать по кнопке "Обновить", и напротив регистрируемых объектов поставить "галочку". Конфигурация так же позволяет архивировать журнал и ведет собственный лог, которые при необходимости можно настроить. Если Вы что случайно изменили, не бойтесь, откатите обратно!

24.04.2009    15646    774    SedovSU@mail.ru    19    

Подсистема регистрации изменений

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

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

16.04.2009    17558    429    SedovSU@mail.ru    18    

Отчет по времени начала работы пользователей в 1С по дням (по XML выгрузке журнала)

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Простой отчёт по файлу выгрузки XML журнала: в какое время пользователь начал использовать 1С по дням.

13.11.2008    18871    241    angeliccare    1    

Определение простоя в работе пользователя.

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

Данная разработка предназначена для отслеживания простоя (т.е. отсутствия движений мышью/нажатий клавиатуры) работы пользователя в течение определенного промежутка времени и выполнения одного из следующих действий: - Блокировка сеанса 1С; - Блокировка сессии Windows; - Завершение работы 1С; - Завершение работы Windows.

26.09.2008    39113    2084    coder1cv8    42