Сверхбыстрый Журнал Регистрации 1C с помощью Yandex Clickhouse

Скрипты из видео с канала "Веселый1С": https://youtu.be/HnZ0Of-YpW0

Экспортер файлов ЖР: https://github.com/akpaevj/OneSTools.EventLog

Скрипты доработаны для экспорта файлов ЖР серверных баз кластера 1С.

Для установки и запуска выполнить:

  • Скачать релиз OneSTools.EventLog и распаковать в папку log-exporter/app/

  • Файл appsettings.json должен выглядеть так:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Manager": {
    "ClstFolders": [
      {
        "Folder": "/var/logdata",
        "Templates": [
          {
            "Mask": "",
            "Template": "[IBNAME]_reglogs"
          }
        ]
      }
    ]
  },
  "Exporter": {
    "StorageType": 1,
    "Portion": 10000,
    "TimeZone": "Europe/Moscow",
    "WritingMaxDegreeOfParallelism": 1,
    "CollectedFactor": 3,
    "ReadingTimeout": 1,
    "LoadArchive": false
  },
  "ClickHouse": {
    "ConnectionString": ""
  }
}
  • В docker-compose.yml указать свой путь к каталогу кластера 1С (collector-volumes)

  • Выполнить docker compose up -d

  • Подключиться к консоли Tabix: http://localhost:8085

Примечание

В строке подключения к ClickHouse для пользователя default задан пароль (перед компоновкой можно установить любой свой). А контейнер с сервером ClickHouse поднимается из образа, в котором никакой пароль не задан. Поэтому, после компоновки контейнеров, нужно остановить сервис collector, далее в файловой системе контейнера clickhouse изменить файл: /etc/clickhouse-server/users.xml (добавить пароль внутри тегов password). После чего перезапустить контейнер clickhouse и запустить контейнер collector

Дополнение: как поднять несколько экземпляров экспортера (каждый из которых "прослушивает" свой каталог кластера 1С)

В общем случае, на одном и том же хосте можно поднять несколько контейнеров с сервисом collector. Пример можно посмотреть в файле one-more-collector.yml. Последовательность действий остается той же самой: должен быть уже создан контейнер с ClickHouse Server, затем на него можно "завязать" произвольное количество экспортеров (каждый из которых должен анализировать свой собственный каталог кластера 1С).

Для создания еще одного контейнера с сервисом collector следует переименовать файл one-more-collector.yml в docker-compose.yml. Необходимо убедиться, что имя нового контейнера отличается от имен ранее созданных аналогичных контейнеров (секция файла "services"). При совпадении имен вместо создания нового контейнера система пересоберет существующий.

Команда для создания еще одного экземпляра collector (без запуска после создания): docker compose up -d --no-start

Таким образом, хост с N сервисов collector может экспортировать данные из N каталогов кластеров 1С в одну и ту же БД ClickHouse. Главное условия - имена ИБ 1С в них должны различаться.

Внешний отчет для работы с данными журналов регистрации 1С непосредственно в режиме Предприятия

АнализЖурналовРегистрацииПоБД_Clickhouse

Данный отчет универсален и может работать в любой конфигурации 1С, даже в пустой. Для http-запросов к Clickhouse используется функционал подсистемы "Коннектор": https://github.com/vbondarevsky/Connector

Если просматривать записи журнала в "родной" для этих записей базе - будет доступно преобразование уникальных идентификаторов в ссылки на объекты.

Доработки отчета могут быть произведены простым добавлением новых вариантов, как в пользовательском режиме, так и созданием предопределенных (в конфигураторе). "Движок" отчета построит запрос к Clickhouse с учетом выбранных полей и настроенных отборов.

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

Несмотря на то, что отчет позволяет получать и отображать 500к+ записей - не рекомендуется использовать эту возможность в рабочих ИБ (так как это приводит к перерасходу ОЗУ клиентом 1С и к перерасходу ОЗУ самим Clickhouse - вплоть до падения его сервиса).

Скриншоты работы с отчетом можно посмотреть здесь: Описание_сервиса