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

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

Администрирование - Администрирование данных 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
20.06.19
32
.zip 13,95Kb 32 Скачать бесплатно

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

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

См. также

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

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

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

10 стартмани

26.05.2020    5499    24    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    11238    6    DonAlPatino    33    

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

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

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

27.06.2011    18804    0    AndreyEvtushin    16    

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

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

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

13.11.2009    11944    0    igor883    5    

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

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

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

16.10.2009    14755    0    websamson    23    

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

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

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

05.09.2009    28818    0    KukA.5    69    

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

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

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

05.05.2009    16869    0    SedovSU@mail.ru    25    

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

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

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

24.04.2009    14184    0    SedovSU@mail.ru    19    

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

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

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

16.04.2009    16011    0    SedovSU@mail.ru    18    

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

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

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

13.11.2008    11772    0    angeliccare    1    

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

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

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

26.09.2008    36447    0    coder1cv8    42