Использование Clickhouse для работы с журналом регистрации

03.02.22

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

В данной статье я опишу свой опыт внедрения ClickHouse для анализа журнала регистрации.

Скачать файлы

Наименование Файл Версия Размер
Использование Clickhouse для работы с Журналом регистрации:
.cf 103,72Kb
44
.cf 103,72Kb 44 Скачать
Использование Clickhouse для работы с Журналом регистрации:
.yml 0,45Kb
18
.yml 0,45Kb 18 Скачать

Добрый день.

В любой более или менее большой компании, в которой используется 1С, встает вопрос просмотра журнала регистрации. И все в один голос твердят, что штатный вариант анализа ЖР - это боль и страдания. Я не буду заострять внимание на этом, т.к. это прописные истины. 

В определенный момент и наша команда столкнулась с этими же проблемами:

  • Как дать поддержке(не разработчикам) возможность оперативно оценить ситуацию по логам?
  • Как дать возможность получать какие-либо аналитические данные?
  • Как получить возможность организовать мониторинг критичных проблем, которые могут быть отражены в логах?

Мы рассматривали 2 варианта(Это тоже не ново):

  1. Elasticserch 
    Но от него мы отказались в силу необходимости выделять довольно много ресурсов для работы этого механизма
  2. Clickhouse
    Это просто "то что доктор прописал" для сбора и анализа логов.
    1. Сжимает логи и они занимают гораздо меньше места.
    2. Отлично умеет в многопоточность, из-за чего работает крайне быстро.
    3. Прост в настройке и установке.

Определившись с механизмом, мы занялись изучением технической возможности имлементации механизма в нашу архитектуру.
Тут на помощь пришел "Веселый 1с" и конкретно видео от Андрея Овсянкина.

 

В целом, кто смотрел видео про clickhouse вряд ли сегодня обнаружат в статье что либо удивительное и интересное. Но на ИС почему-то нет описания удобной работы с clickhouse без http-сервисов(ну или я ее не нашел)

 

Итак, приступаем к развертыванию внешнего журнала регистрации:

  1. Установка 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"

     

  2. Далее нужно установить коллектор логов.
    Вариант Евгения Акпаева работает просто отлично. По ссылке можно собственно прочитать про настройку выгрузки, потому повторяться не буду. 
  3. Для подключения к кликхаусу в 1с мы будем использовать ODBC драйвер. Он, в целом, работает, хоть и с огрехами, о которых расскажу позже.
  4. Создаем в базе 1с внешний источник данных добавляем таблицу из клика.
    Строка подключения примерно вот такая. тип дб - прочий:
    Driver=ClickHouse ODBC Driver (Unicode);
    Host=clickhouse.test-stend.ru;
    Port=8123;
    User=oneclogread;
    Password=qwe12345;
    Database=event_journal;

     

  5. Ну и последний штрих - обработка для сотрудников для использования тж
    Сначала мы думали сделать отчет, и отдать его пользователям. Но первый же тест показал, что с этим есть проблема:
    Если неловко указать отборы, то порция данных которую кликхаус выплюнет на менеджер кластера - может повесить сервер. Перезагрузив сервер приложений трижды - мы пришли к выводу, что это не лучший вариант взаимодействия с Журналом.

    Но в 1с есть динамический список который отлично решает проблему получения больших объемов данных порционно
    Так родилась обработка по чтению ЖР из 1с:

Как результат можно отбирать данные за любой промежуток времени(я тестировал получение данных за год, в базе 1700 пользователей в пике) - отрабатывает за секунды!

Есть ряд минорных ограничений, которые со следующими релизами ODBC драйвера будут исправлены(я надеюсь)

  • Например использовать поиск по части строки встроенный в динамический список - нельзя.(как аналог сделано поле "поиск")
  • ну и адекватный поиск по метаданным я не докрутил пока.

Ну а дальше - вы можете делать все, что вашей душе угодно:

  • Например анализ ЖР в Grfana. Алерты при достижении порогов и тд и тп
  • Отчеты и диаграммы на СКД.
  • Отбор по событиям и, например, возможность логировать все что угодно почти без влияния на производительность.
     

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

 

На всякий случай приложу и докер файл и cf тестовой конфигурации которая позволяет подключиться к ЖР и читать данные.

Тестировал их на платформе 8.3.15.1656.

clickhouse Журнал регистрации Логи ODBC Внешний источник данных

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42525    10    24    

38

Версионирование объектов для Альфа-авто, ред 4 и 5.

Оптовая торговля Розничная торговля Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Управленческий учет Платные (руб)

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

4800 руб.

03.09.2016    42257    33    24    

37

LogManager - Внешний журнал регистрации в SQL

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Журнал регистрации платформы 1С в SQL. Общая база хранения всех журналов. Через com-подключение регламентным заданием периодически догружает журналы регистраций из рабочих баз. Предоставляет настраиваемый доступ к журналам по правам подразделений. Формирует отчеты по пользователям и данным.

10000 руб.

23.05.2014    55474    52    16    

47

Мониторинг баз и серверов 1С

Журнал регистрации Мониторинг Платформа 1С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    30960    14    21    

66

LogiCH - хранение и анализ журнала регистрации в сверхбыстрой СУБД ClickHouse

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

5000 руб.

28.11.2018    19548    13    6    

36

Регламентное сокращение журнала регистрации

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

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

1 стартмани

29.12.2023    1246    12    dima_gsv    1    

12

Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

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

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

1 стартмани

13.11.2023    2973    4    AlexSTAL    0    

42

Мониторинг состояния с отправкой в telegram

Журнал регистрации Инструменты администратора БД Мониторинг Мессенджеры и боты Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Абонемент ($m)

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

3 стартмани

26.09.2023    1754    11    doom2good    10    

13
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Dach 372 03.02.22 16:51 Сейчас в теме
Почему не реализовали чтение данных из ClickHouse по http-протоколу? Там нет озвученных ограничений.

Вы прям меня опередили, сам хотел ровно точно такую же статью пилить, но приложив туда отчет, читающий данные по http. Мой отчет универсален и работать будет в любой конфигурации. И тоже заточен на чтение логов, экспортированных программой Е. Акпаева.

Теперь даже и не знаю, смысла такую же статью выкладывать никакого нет, разве что из-за отчета.
2. Segate 223 03.02.22 16:54 Сейчас в теме
(1) Начинали мы как раз с варианта с http-сервисом, но скорость работы сильно меньше. Возможность выборки тоже ограничена, пагинацию в дс конечно можно засунуть, но уже сложнее. Нужно заморачиваться с кэшированием данных

PS, если хотите, можно добавить отчет вот прямо сюда. и описать логику работы прямо в этой статье.
3. Dach 372 03.02.22 16:57 Сейчас в теме
(2) скорость сильно меньше? Вы шутите? 500 тыс записей извлекает за буквально 10 секунд

Напишите мне в личку, вышлю отчет - потестите. При условии нераспространения
4. kirillkr 29 03.02.22 20:37 Сейчас в теме
(1) Ждем. Чем больше разных решений, тем больше выбора.
5. Segate 223 03.02.22 20:41 Сейчас в теме
(4) я потестил - Обработка отличная.
Ждем еще одну публикацию.
6. Dach 372 03.02.22 21:26 Сейчас в теме
(5) Пожалуй, придется ограничиться парой строк описания и ссылками на видео Андрея и экспортер Евгения. И приложу отчет.

А вот мой скромный форк репо Андрея, отличие в том, что я поднимаю в докере множество контейнеров (каждый со своим экспортером)

CllickHousePlayground

Хотя в целом - это не особо нужно, в "серверном" режиме 1-н экспортер может и несколько кластеров обслуживать.
deaddy64; +1 Ответить
7. dsdred 3279 03.02.22 22:21 Сейчас в теме
У ClickHouse есть особенность. Он гарантированно хранит данные, но НЕ гарантированно их записывает.
Вы проверяете что данные записались?
8. Dach 372 03.02.22 23:55 Сейчас в теме
13. akpaevj 202 09.02.22 17:41 Сейчас в теме
(8) подобные проблемы могут возникать при использовании (к примеру) движка Join. И то, это обусловлено только тем, что это in-memory движок. В используемом мной mergetree такая проблема может всплыть только при аварийном завершении процесса clickhouse между чекпойнтами
9. Foxtrot1388 04.02.22 05:16 Сейчас в теме
(7)В чем выражается негарантированность записи? Если я правильно помню CH ждет подтверждения записи от одной реплики, но также можно использовать insert_quorum
10. dsdred 3279 04.02.22 08:28 Сейчас в теме
(9)на предыдущем проекте у нашей команды был прямой доступ к команде Яндекс. Когда мы выбирали средства для BI, устраивали созвон со специалистами из Яндекс.
Мы спрашивали какие плюсы минусы у кликхаус и дата ленса. Ответ был такой:
CH нельзя использовать как учётную систему, так как он гарантированно хранит данные, но не гарантированно записывает, поэтому рекомендуется проверять данные (записались они или нет).
Дата ленс пока сыровата но постоянно развивается и скоро будет иметь богатый функционал.

Я на эту встречу ходил как наблюдатель, в основном говорил наш специалист по BI. Но я не вижу повода не верить создателям CH.
11. Segate 223 04.02.22 08:47 Сейчас в теме
(10) если честно, если столкнемся- будем думать.
Надо будет оценивать масштаб бедствия. Если это частные записи, то на статистические данные и на "среднюю по больнице" они особо не повлияют. Так что пока мне потеря частных строчек лога не видится огромной проблемой
12. Lucechiaro 05.02.22 11:33 Сейчас в теме
Спасибо за уже готовый и упакованный инструмент! Буквально через несколько дней собирался сесть и сделать такую же работу. А тут Вы с такой шикарной помощью :)
14. Dach 372 09.02.22 22:00 Сейчас в теме
(12),
(5),

Короче, мне лень писать еще одну такую же статью. За СМ я тоже не особо гонюсь, поэтому оставлю ссылку на свою реализацию здесь (см (6)).

https://github.com/Dach-Coin/CllickHousePlayground

Внешний отчет выложен в сам репо. За звезды на GitHub буду благодарен
Teplotrassamen; zhukov_vitaliy; akR00b; alexey_kurdyukov; Krio2; JohnyDeath; S_L_O_N_U_K; VitaliyCeban; Eriksson; VKislitsin; Lucechiaro; +11 Ответить
15. Lucechiaro 10.02.22 16:20 Сейчас в теме
(14) Спасибо! Плюсанул и здесь, и на ГитХабе.
16. VKislitsin 960 11.02.22 09:09 Сейчас в теме
Подскажите, пожалуйста, а утилита для экспорта от Юрия Пермитина рассматривалась? Если да, можете назвать причины, по которым была отвергнута?
Самому предстоит в ближайшее время делать экспорт ЖР и ТЖ во внешнее хранилище. Также остановился на КликХаус, но пока не окончательно определился с инструментарием для экспорта.
17. user612295_death4321 11.02.22 19:27 Сейчас в теме
(16) А он разве не свернул развитие этой утилиты?
18. VKislitsin 960 12.02.22 09:35 Сейчас в теме
(17) Признаюсь, был удивлен вашим вопросом. Прошелся в гитхаб и в телеграмм-канал Юрия. Да, действительно, он пишет (в октябре 21г) что охладел к проектам. Это не радует.
С другой стороны, что в проекте Евгения Акпаева, что у Юрия Пермитина, последние изменения внесены в мае 21г. Оба проекта вполне работоспособны (пока не проверял лично). Какого-то развития для них я себе не представляю. По крайней мере, пока 1С не поменяет форматы ЖР. Что требуется - это исправление ошибок по мере их выявления.
Меня проект Юрия привлекает тем, что есть экспорт для Технологического журнала. В общем, форкнул себе проекты Юрия, пока они доступны.
PS. Прошелся в гитхаб Евгения, нашел что и у него (пока в разработке) есть проект по экспорту логов ТЖ.
19. user612295_death4321 12.02.22 13:57 Сейчас в теме
(18)
) Признаюсь, был удивлен вашим вопросом. Прошелся в гитхаб и в телеграмм-канал Юрия. Да, действительно, он пишет (в октябре 21г) что охладел к проектам. Это не радует.
С другой стороны, что в проекте Евгения Акпаева, что у Юрия Пермитина, последние изменения внесены в мае 21г. Оба проекта вполне работоспособны (пока не проверял лично). Какого-то развития для них я себе не представляю. По крайней мере, пока 1С не поменяет форматы ЖР. Что требуется - это исправление ошибок по мере их выявления.
Меня проект Юрия привлекает тем, что есть экспорт для Технологического журнала. В общем, форкнул себе проекты Юрия, пока они доступны.
PS. Прошелся в гитхаб Евгения, нашел что и у него (пока в разработке) есть проект по экспорту логов ТЖ.


По ТЖ вроде много разных разработок было. Я пока склоняюсь к тому, что ТЖ все таки оперативные данные и не предназначены для долгосрочного хранения, поэтому на текущий момент времени мне наверное ближе подход DNS'a с хранением в ELK через filebeat + настройкой пайплайнов на стороне ELK.

Дай бог когда нибудь руки дойдут все настроить :)
20. VKislitsin 960 12.02.22 17:13 Сейчас в теме
(19) Разработок может быть и много. Но вот чтобы в КликХаус отправлялось, я не встречал других. При том что логи в одной системе, появляются дополнительные возможности анализа перекрестных данных ЖР и ТЖ. У меня возникала мысль еще и счетчики производительности туда же сложить.
21. akpaevj 202 12.02.22 17:58 Сейчас в теме
(20) У меня на самом деле готов и уже давно используется экспортер данных ТЖ и данных поставщиков ETW в клик, но никак руки не доходят выложить все это в открытый доступ🙂
VKislitsin; +1 Ответить
22. VKislitsin 960 12.02.22 18:46 Сейчас в теме
(21)
экспортер данных ТЖ и данных поставщиков ETW в клик

Отлично! Где тут в очередь записываться?
23. akpaevj 202 12.02.22 19:09 Сейчас в теме
(22) Смотрите за моим профилем в гите, возможно и сюда выкину публикацию-анонс. Это высокопроизводительный сервис, реализованный на клиент-серверной архитектуре, с протоколом передачи - grpc. Агенты устанавливаются на сервера, они отправляют данные в серверную часть, которая в свою очередь все это анализирует и складывает в клик.
VKislitsin; +1 Ответить
24. alexey_kurdyukov 156 24.10.22 07:19 Сейчас в теме
Кто-нибудь пробовал через ADO работать? Как заставить его понять, что там UTF-8?
25. Segate 223 12.12.22 16:58 Сейчас в теме
(22) Не дождавшись Евгения, запилил свое решение для экспорта ТЖ в клик.
https://infostart.ru/public/1773131/
26. user1858942 13.12.22 14:14 Сейчас в теме
Добрый день, А можете поделиться дашбордами для графаны? а то что-то красивые графики не получаются=(
27. Segate 223 13.12.22 14:37 Сейчас в теме
(26) Следите за статьями. В ближайшее время будет статья о настройке графаны для анализа ТЖ и ЖР
28. user1858942 13.12.22 14:49 Сейчас в теме
29. alexey_kurdyukov 156 21.12.22 05:43 Сейчас в теме
Честно говоря, я пока не понял, как прочитать данные, записанные в кликхаус. Ведь сначала, для того, чтобы установить отборы по ЖР, нужно получить доступные значения этих отборов, а простой запрос типа
SELECT DISTINCT ON (Event) Event FROM EventLog
или
SELECT Event FROM EventLog GROUP BY Event
выполняется приблизительно бесконечное количество времени
понятно, что тут пригодилась бы нормализация, но про неё нигде не написано.

Пользователи Кликхауса, вы где берёте список событий, пользователей и так далее для формирования формы ЖР? Неужели из самого журнала регистрации 1С? Но ведь если он будет удалён, то в нём не будет всего этого, и мы не сможем прочитать ЖР из кликхауса?
30. Segate 223 21.12.22 13:46 Сейчас в теме
(29) это колоночная СУБД, запрос по событиям без отбора по периоду на таблице больше 50гб выполняется меньше секунды
31. alexey_kurdyukov 156 21.12.22 13:54 Сейчас в теме
(30) а можно конкретный пример запроса, у меня не выполняется, может я не то пишу?
32. medstoun 20.06.23 15:41 Сейчас в теме
У меня вот такой вопрос, папка с логами 1С находится на виртуальной машине на убунту, а кликхаус на другой виртуальной машине, которая тоже на убунту. Вопрос: как мне сделать так что бы логи из одной виртуальной машины экспортировались на другую виртуальную машину(на ту на которой находится кликхаус)?
33. Segate 223 20.06.23 19:20 Сейчас в теме
(32) Эта статья описывает как раз такой вариант.
34. Prooa 39 25.08.23 09:25 Сейчас в теме
Подскажите пожалуйста:

Если использовать ВыгрузитьЖурналРегистрации()

получаю результат
<v8e:Data xmlns="" xsi:type="DocumentRef.ЗаказКлиента">57f27d02-3970-11ee-8b50-d85ed3eb061e</v8e:Data>

в CH в поле Data
409:8b50d85ed3eb061e11ee397057f27d02

в 1с ПолучитьНавигационнуюСсылку(Док)
e1cib/data/Документ.ЗаказКлиента?ref=8b50d85ed3eb061e11ee397057f27d02

Вопрос: о поле data
409 - откуда это взялось?

Задача, из обработки 1с, выбрать все события в CH по выбранному документу :

SEL ECT Data , DateTime, User, Computer, Application , Event, MetadataUuid, Metadata , DataPresentation FR OM v8logs9.EventLogItems WHERE Metadata = 'Документ.ЗаказКлиента' and Data LIKE '%8b50d85ed3eb061e11ee397057f27d02%'

Не хочется здесь использовать LIKE
35. Segate 223 25.08.23 19:30 Сейчас в теме
Без Like вы не обойдетесь, но в целом, like в ch не так дорог как в привычных нам БД.
Если вкратце, то это внутренний идентификатор данных.
409 - это идентификатор типа данных в словаре

Если вам интересно, то я прикладываю файл слегка доработанного отчета. Там можно посмотреть как сделан отбор по ссылке.
Прикрепленные файлы:
АнализЖурналовРегистрацииПоБД_Clickhouse.erf
36. Prooa 39 28.08.23 04:22 Сейчас в теме
Оставьте свое сообщение