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

03.02.22

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Использование Clickhouse для работы с Журналом регистрации:
.cf 103,72Kb
49
49 Скачать (1 SM) Купить за 1 850 руб.
Использование Clickhouse для работы с Журналом регистрации:
.yml 0,45Kb
20
20 Скачать (1 SM) Купить за 1 850 руб.

Добрый день.

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

Экстрактор данных из 1С в BI-системы

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах:

«Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков, программистов, финансовых и технических директоров.

Простое подключение к системам BI позволит вести углубленный анализ данных и эффективно отлаживать бизнес-процессы.

Тестировать бесплатно 5 дней

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

См. также

Журнал регистрации Мониторинг Системный администратор Программист Бизнес-аналитик Руководитель проекта Платформа 1С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    33725    22    21    

74

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

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

5000 руб.

28.11.2018    20648    17    6    

41

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

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

21.10.2024    2371    leemuar    4    

21

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

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

1 стартмани

29.12.2023    2088    31    dima_gsv    3    

13

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

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

1 стартмани

19.11.2023    1367    5    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    4598    9    AlexSTAL    0    

47

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

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

3 стартмани

26.09.2023    2753    16    doom2good    16    

14

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

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

5 стартмани

04.09.2023    1252    13    Maxiko    0    

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

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

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

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

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

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

CllickHousePlayground

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

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

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

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

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

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

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

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