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

03.02.22

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

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

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

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

Добрый день.

В любой более или менее большой компании, в которой используется 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 Внешний источник данных

См. также

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

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

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

10000 руб.

23.05.2014    54943    50    16    

43

Версионирование справочников, документов и регистров сведений на SQL-сервере

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

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

19200 руб.

22.02.2018    34645    60    53    

54

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

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

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

9000 руб.

28.08.2019    29581    11    21    

59

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

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

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

5000 руб.

28.11.2018    19221    12    6    

35

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

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

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

1 стартмани

13.11.2023    1750    2    AlexSTAL    0    

33

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

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

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

3 стартмани

26.09.2023    1150    4    doom2good    10    

11

История фоновых заданий

Журнал регистрации Статистика базы данных HighLoad оптимизация Конфигурации 1cv8 Абонемент ($m)

Удобный отчет по выполнению фоновых заданий в 1С с разбивкой по разным критериям, например по срокам, в какой последовательности, выполнение дольше всех, сколько одновременно и так далее.

5 стартмани

04.09.2023    419    5    Maxiko    0    

7

Перенаправление вывода журнала регистрации

Linux Журнал регистрации Платформа 1С v8.3 Бесплатно (free)

Экспериментируем с реализацией драйвера текстового устройства под Linux для перенаправления вывода журнала регистрации.

07.08.2023    974    Lars Ulrich    1    

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

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

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

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

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

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

CllickHousePlayground

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

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

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

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

Внешний отчет выложен в сам репо. За звезды на GitHub буду благодарен
zhukov_vitaliy; akR00b; alexey_kurdyukov; Krio2; JohnyDeath; S_L_O_N_U_K; VitaliyCeban; Eriksson; VKislitsin; Lucechiaro; +10 Ответить
15. Lucechiaro 10.02.22 16:20 Сейчас в теме
(14) Спасибо! Плюсанул и здесь, и на ГитХабе.
16. VKislitsin 931 11.02.22 09:09 Сейчас в теме
Подскажите, пожалуйста, а утилита для экспорта от Юрия Пермитина рассматривалась? Если да, можете назвать причины, по которым была отвергнута?
Самому предстоит в ближайшее время делать экспорт ЖР и ТЖ во внешнее хранилище. Также остановился на КликХаус, но пока не окончательно определился с инструментарием для экспорта.
17. user612295_death4321 11.02.22 19:27 Сейчас в теме
(16) А он разве не свернул развитие этой утилиты?
18. VKislitsin 931 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 931 12.02.22 17:13 Сейчас в теме
(19) Разработок может быть и много. Но вот чтобы в КликХаус отправлялось, я не встречал других. При том что логи в одной системе, появляются дополнительные возможности анализа перекрестных данных ЖР и ТЖ. У меня возникала мысль еще и счетчики производительности туда же сложить.
21. akpaevj 198 12.02.22 17:58 Сейчас в теме
(20) У меня на самом деле готов и уже давно используется экспортер данных ТЖ и данных поставщиков ETW в клик, но никак руки не доходят выложить все это в открытый доступ🙂
VKislitsin; +1 Ответить
22. VKislitsin 931 12.02.22 18:46 Сейчас в теме
(21)
экспортер данных ТЖ и данных поставщиков ETW в клик

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

Пользователи Кликхауса, вы где берёте список событий, пользователей и так далее для формирования формы ЖР? Неужели из самого журнала регистрации 1С? Но ведь если он будет удалён, то в нём не будет всего этого, и мы не сможем прочитать ЖР из кликхауса?
30. Segate 210 21.12.22 13:46 Сейчас в теме
(29) это колоночная СУБД, запрос по событиям без отбора по периоду на таблице больше 50гб выполняется меньше секунды
31. alexey_kurdyukov 143 21.12.22 13:54 Сейчас в теме
(30) а можно конкретный пример запроса, у меня не выполняется, может я не то пишу?
32. medstoun 20.06.23 15:41 Сейчас в теме
У меня вот такой вопрос, папка с логами 1С находится на виртуальной машине на убунту, а кликхаус на другой виртуальной машине, которая тоже на убунту. Вопрос: как мне сделать так что бы логи из одной виртуальной машины экспортировались на другую виртуальную машину(на ту на которой находится кликхаус)?
33. Segate 210 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 210 25.08.23 19:30 Сейчас в теме
Без Like вы не обойдетесь, но в целом, like в ch не так дорог как в привычных нам БД.
Если вкратце, то это внутренний идентификатор данных.
409 - это идентификатор типа данных в словаре

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