Добрый день.
В любой более или менее большой компании, в которой используется 1С, встает вопрос просмотра журнала регистрации. И все в один голос твердят, что штатный вариант анализа ЖР - это боль и страдания. Я не буду заострять внимание на этом, т.к. это прописные истины.
В определенный момент и наша команда столкнулась с этими же проблемами:
- Как дать поддержке(не разработчикам) возможность оперативно оценить ситуацию по логам?
- Как дать возможность получать какие-либо аналитические данные?
- Как получить возможность организовать мониторинг критичных проблем, которые могут быть отражены в логах?
Мы рассматривали 2 варианта(Это тоже не ново):
- Elasticserch
Но от него мы отказались в силу необходимости выделять довольно много ресурсов для работы этого механизма - Clickhouse
Это просто "то что доктор прописал" для сбора и анализа логов.- Сжимает логи и они занимают гораздо меньше места.
- Отлично умеет в многопоточность, из-за чего работает крайне быстро.
- Прост в настройке и установке.
Определившись с механизмом, мы занялись изучением технической возможности имлементации механизма в нашу архитектуру.
Тут на помощь пришел "Веселый 1с" и конкретно видео от Андрея Овсянкина.
В целом, кто смотрел видео про clickhouse вряд ли сегодня обнаружат в статье что либо удивительное и интересное. Но на ИС почему-то нет описания удобной работы с clickhouse без http-сервисов(ну или я ее не нашел)
Итак, приступаем к развертыванию внешнего журнала регистрации:
- Установка clickhouse
Клик мы поставим в докер, а вместе с кликом поднимем tabix(Веб морду для возможности писать SQL запросы к базе)
docker-compose.yml будет иметь вот такой вид:version: "3.3" services: clickhouse: image: yandex/clickhouse-server ulimits: nofile: soft: 262144 hard: 262144 ports: - "8123:8123" volumes: - "clickhouse-data:/var/lib/clickhouse" click-ui: image: spoonest/clickhouse-tabix-web-client environment: CH_NAME: event_journal CH_HOST: localhost:8123 depends_on: - clickhouse ports: - "8124:80"
- Далее нужно установить коллектор логов.
Вариант Евгения Акпаева работает просто отлично. По ссылке можно собственно прочитать про настройку выгрузки, потому повторяться не буду. - Для подключения к кликхаусу в 1с мы будем использовать ODBC драйвер. Он, в целом, работает, хоть и с огрехами, о которых расскажу позже.
- Создаем в базе 1с внешний источник данных добавляем таблицу из клика.
Строка подключения примерно вот такая. тип дб - прочий:Driver=ClickHouse ODBC Driver (Unicode); Host=clickhouse.test-stend.ru; Port=8123; User=oneclogread; Password=qwe12345; Database=event_journal;
- Ну и последний штрих - обработка для сотрудников для использования тж
Сначала мы думали сделать отчет, и отдать его пользователям. Но первый же тест показал, что с этим есть проблема:
Если неловко указать отборы, то порция данных которую кликхаус выплюнет на менеджер кластера - может повесить сервер. Перезагрузив сервер приложений трижды - мы пришли к выводу, что это не лучший вариант взаимодействия с Журналом.
Но в 1с есть динамический список который отлично решает проблему получения больших объемов данных порционно
Так родилась обработка по чтению ЖР из 1с:
Как результат можно отбирать данные за любой промежуток времени(я тестировал получение данных за год, в базе 1700 пользователей в пике) - отрабатывает за секунды!
Есть ряд минорных ограничений, которые со следующими релизами ODBC драйвера будут исправлены(я надеюсь)
- Например использовать поиск по части строки встроенный в динамический список - нельзя.(как аналог сделано поле "поиск")
- ну и адекватный поиск по метаданным я не докрутил пока.
Ну а дальше - вы можете делать все, что вашей душе угодно:
- Например анализ ЖР в Grfana. Алерты при достижении порогов и тд и тп
- Отчеты и диаграммы на СКД.
- Отбор по событиям и, например, возможность логировать все что угодно почти без влияния на производительность.
На текущий момент у нас в разработке новые стандарты логирования, в которых мы планируем отказаться от логов в РС и тд, и полностью перейти на журнал регистрации.
На всякий случай приложу и докер файл и cf тестовой конфигурации которая позволяет подключиться к ЖР и читать данные.
Тестировал их на платформе 8.3.15.1656.
Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах:
«Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков, программистов, финансовых и технических директоров.
Простое подключение к системам BI позволит вести углубленный анализ данных и эффективно отлаживать бизнес-процессы.