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

22.05.20

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

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

Скачать файл

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

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

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

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

22800 руб.

22.02.2018    35916    59    54    

57

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

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

6000 руб.

28.11.2018    21274    18    7    

43

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

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

20.11.2024    1802    user1913000    12    

20

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

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

21.10.2024    3852    leemuar    8    

24

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

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

1 стартмани

29.12.2023    2570    40    dima_gsv    3    

14

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

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

1 стартмани

19.11.2023    1796    6    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    5540    11    AlexSTAL    0    

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