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

  Рет қаралды 11,327

Веселый1С

Веселый1С

3 жыл бұрын

Ни для кого не секрет, что поиск в журнале регистрации 1С очень медленный. И в то же время, журнал регистрации несет в себе большое количество интересной аналитической информации: данные о возникавших ошибках, проблемные модули, сбойные фоновые задания. Все лежит в ЖР, но достать проблема. Больше нет! Теперь все данные ЖР под рукой, за секунды и с нужной детализацией.
Скрипты, используемые в видео:
github.com/EvilBeaver/CllickH...

Пікірлер: 83
@user-kn2uj7vr7t
@user-kn2uj7vr7t Жыл бұрын
Очень позновательно! Спасибо!
@MrEremkin
@MrEremkin 2 жыл бұрын
Отлично, спасибо за урок )
@user-ei8sf5yw3m
@user-ei8sf5yw3m 3 жыл бұрын
Так-же, мне кажется, отдельного внимания заслуживает размер выгруженного журнала регистрации. В ClickHouse он занимает около 8-10 процентов от исходного объема.
@VladFrost
@VladFrost 3 жыл бұрын
Спасибо большое!
@karimshakirov
@karimshakirov 3 жыл бұрын
Круто! Спасибо!
@korableg
@korableg 3 жыл бұрын
Спасибо! Вставлю 5 копеек про ELK. В нем есть Kibana, которая из коробки имеет удобную читалку логов, а также дашборды с графиками, рекомендую также попробовать. Про то что Elastic жрёт место решается настройкой разделения файлов по периоду и старые периоды можно бекапить или просто уничтожать за ненадобностью :)
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Думаю, что кибану и графану без проблем можно подключить и к кликхаусу. Там же много источников данных встроенных
@korableg
@korableg 3 жыл бұрын
@@user-nd9cv4pd5m Для кибаны всё равно нужно в еластик данные пушить, она из других источников не умеет (в версии 6.8 точно не умела :) )
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Тогда выкинуть не нафиг и переехать на графану)
@leemuar
@leemuar 2 жыл бұрын
А еще есть Graylog, где все из коробки и без монетизации ELK стека
@i292555
@i292555 3 жыл бұрын
Андрей, добрый день, подскажите как сделать звук на видео как у вас?) Петлички не вижу, микрофона нет, а звук чистый, магия :)
@user-zr4uw5ng3r
@user-zr4uw5ng3r 3 жыл бұрын
Микрофон есть, конденсаторная шишка. Он чуть ниже кадра, его не видно. Спасибо за отзыв!
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
@Веселый1С и второй - как так ловко получается сразу читать логи из контейнера после его компоновки? Мне чтобы эти логи прочитать - надо открывать сам контейнер в докер-десктопе или в портейнере, а тут вывод сразу в терминал, да еще и нужного сервиса (а их там 3 штуки в контейнере так-то). Или это просто на видео обрезано как мы внутрь контейнера подключились консолью?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Если поднимать (up) сервисы компоуза без параметра -d, то по умолчанию выключается attached режим с выводом логов сразу в stdout. Если же запуск был с -d, то всегда можно прочитать логи через docker-compose logs -f
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
@@user-nd9cv4pd5m ясно, спасибо большое, не знал такую особенность вывода в stdout
@user-zelek
@user-zelek 3 жыл бұрын
Андрей, огромное спасибо! А для ТЖ есть похожий инструмент?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Думаю, что есть. Или на Инфостарте или на гитхабе. Погуглите
@AnonAristotel
@AnonAristotel 3 жыл бұрын
ТЖ - текстовые файлы. У Сергея Старых есть консоль ТЖ.
@user-ey5if2fn5x
@user-ey5if2fn5x 3 жыл бұрын
Есть. Вот ссылка github.com/YPermitin/YY.TechJournalExportAssistant. У Юрия также есть подобный описываемому в видео экспортер для ЖР.
@user-ei8sf5yw3m
@user-ei8sf5yw3m 3 жыл бұрын
Вообще, клик для такой работы - очень хорошее решение, с помощью которого можно добиться realtime обработки данных ТЖ, но требуется детальная проработка инструмента.
@smotrovoy
@smotrovoy 3 жыл бұрын
А при остановке/зупуску экспортера выгрузки журнала в Clickhouse он выгружает опять все заново или только новые записи?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Только новые
@user-lf6vv4kt3n
@user-lf6vv4kt3n 3 жыл бұрын
добрый, подскажите не могу запустить C:\EventLogExporter\EventLogExportersManager.exe/dll Ошибка Unhandled exception. System.Exception: StorageType parameter is not specified at OneSTools.EventLog.Exporter.Manager.ExportersManager.GetStorage(String dataBaseName) at OneSTools.EventLog.Exporter.Manager.ExportersManager.StartExporter(String path, String name, String dataBaseName) at OneSTools.EventLog.Exporter.Manager.ExportersManager.ExecuteAsync(CancellationToken stoppingToken) at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host) at OneSTools.EventLog.Exporter.Manager.Program.Main(String[] args) сам файл настройки { "Manager": { "ClstFolders": [ { "Folder": "C:\\\\Program Files\\1cv8\\srvinfo\ eg_1541", "Templates": [ { "Mask": "test2", "Template": "[IBNAME]" } ] } ] }, "ClickHouse": { "ConnectionString": "Host=localhost;Port=8123;Username=default;password=;" }, }
@shootnicktm9445
@shootnicktm9445 3 жыл бұрын
Бомбическая штука ) Один раз настроил и наслаждайся. А есть какой-то хук / лайфхак, что как записи вырузились - чистить журнал ? )
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
Написать регламентное задание (или внешнюю обработку и подключить запуск её по расписанию средствами бсп), которое дернет клик-хауз, проверит что последние записи жр выгрузились и после этого обрежет сам жр
@shootnicktm9445
@shootnicktm9445 3 жыл бұрын
@@user-ri8vq9yx1w хук был бы сильно веселей )
@user-zr4uw5ng3r
@user-zr4uw5ng3r 2 жыл бұрын
Тут вопрос - что считать моментом "как записи выгрузились". В режиме службы записи грузятся онлайн по мере появления. Можно грузить их пакетно, тогда надо разово по расписанию запускать и чистить. Но это так себе
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
@ Веселый1С Еще 2 маленьких вопроса. 1. Зачем в компоуз-файле последняя секция волюмс с незаданной ответной частью, см. строку 34 clickhouse-data:
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Это создание именованного вольюма с путем по умолчанию. Если бы там ещё была приписка external, то его надо было бы создать руками до запуска и компоуза, а так он создастся сам
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
@@user-nd9cv4pd5m получается, на хостовой машине где-то должна была создаться папка "clickhouse-data". Но у меня не создалась внутри каталога с репо
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Именованный вольюм - это не совсем папка. По крайней мере она лежит не в каталоге проекта. Да, она где-то в кишках докера лежит, и к ней можно получить доступ при необходимости (/var/lib/docker/volumes/трататата). Чтобы файлы появились в конкретном хостовом каталоге, их нужно монтировать через mount bind, а не named volume
@Pblw
@Pblw 3 жыл бұрын
А если отдельную базу на SQL и писать события простыми Insert в таблицу ? 🤔 А далее скриптом переливать данные в индексируемую таблицу для построения отчётов. Если постараться, то можно это через Внешние Источники Данных подключить к базе
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Можно и так, только придется все самому писать. А тут готовое: бери - пользуйся
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Плюс у кликхауса огромная скорость записи в базу, выше, чем у обычных рсубд. Так что здесь ещё есть выигрыш по скорости обработки
@zotovvs
@zotovvs 3 жыл бұрын
Это другой уровень как по скорости так и по сжатию, но если очень хочется то вот github.com/alekseybochkov/EventLogLoader
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
Ну и еще, напоследок. С докером все получилось повторить, работает как надо. Но мы внутрь контейнера прокинули только одну 1С-ную базу для выгрузки ЖР, а как быть, если их например 5 штук? Видимо, согласно описания в репо "экспортера" - придется использовать менеджера, прокидывать в контейнер другой каталог и чутка поправить строку подключения (пишет, что для каждой ИБ будет создана своя БД для хранения данных ЖР)
@zotovvs
@zotovvs 3 жыл бұрын
С докером и файловыми базами я вижу 2 варианта: - Прокидываешь каждую папку баз 1С в докер - Прокидываешь верхнеуровневую папку с базами 1С в докер Далее настраиваешь параметры экспорта в конфигурационном файле экспортера
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
@@zotovvs не-не-не. В экспортере есть менеджер, у которого свои настройки и там можно указать каталог кластера (в моем примере серверные ИБ). Видимо каталог кластера и надо прокидывать в /var/logdata
@zotovvs
@zotovvs 3 жыл бұрын
@@user-ri8vq9yx1w для серверных баз не вижу смысла экспортер прокидывать в докер. Он должен быть на сервере 1С
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
@@zotovvs эммм, как раз таки нет. Берем слабенький хост где-то по соседству, поднимаем там докер и данный контейнер, каталог кластера подмонтируем к этому хосту, права на чтение только определенному юзеру - и пожалуйста, сбоку независимый и портируемый сервис логгирования, который никакого влияния на продуктивный сервер 1С не оказывает - все как мы любим
@zotovvs
@zotovvs 3 жыл бұрын
@@user-ri8vq9yx1w Ну если устраивает проброс файловой шары с логами в докер, то почему и нет
@AlexeyNecro
@AlexeyNecro Жыл бұрын
Даже не знаю, где ещё спросить: в общем, загрузил я сколько-то журналов, пара десятков гигов получилась, а элементарный запрос выбрать различные события не выполняется. А для того, чтобы выставить отборы ЖР, нужно сначала получить события, пользователей и так далее, которые в нём есть. Если брать стандартные одинэсовские, то тогда кликхаус ничего не стоит без родного журнала 1С. Как вы эту проблему решили? Запрос типа SELECT DISTINCT ON(Event) Event если я не ошибаюсь. Конечно, MSSQL такой запрос тоже плохо переваривает, там пришлось таблицы добавлять, но тут вроде как у всех всё и так работает?
@user-zr4uw5ng3r
@user-zr4uw5ng3r Жыл бұрын
Я не понял вопроса. Что вы делаете какую. Задачу решаете и что конкретно не удается?
@AlexeyNecro
@AlexeyNecro Жыл бұрын
@@user-zr4uw5ng3r Ну вот у меня есть база в кликхаусе. Я открываю форму журнала регистрации в 1С (ну в смысле свою, новую форму), в ней есть отбор по типу события. Тип события есть в таблице EventLog в кликхаусе, лежит в поле Event. Нужно выбрать уникальные значения этого поля из всей таблицы. Не выбираются.
@user-nd9cv4pd5m
@user-nd9cv4pd5m Жыл бұрын
а что говорит? почему не выбираются?
@AlexeyNecro
@AlexeyNecro Жыл бұрын
@@user-nd9cv4pd5m ничего не говорит, даже по таймауту не отваливается (в таббиксе) вот прямо оттуда: select distinct on (Event) Event from EventLogItems
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
Кстати, попытался из СКД обращаться к внешнему источнику данных (подключенная таблица с логами ЖР), нарисовал компоновку как на видео, вывожу результат в плоский список, детальные записи. При попытке установить отбор на строковые поля (например "Комментарий") вида "содержит", то есть like - система падает с ошибкой и руганью на то, что такое поведение не поддерживается. Причем, что интересно, на строгое равенство в отборе - работает. Аналогично и с другими полями. Что это? Косяк СКД или косяк ODBC ClickHouse? Пробовал, кстати и x32 и x64. Еще при скроллинге отчета поймал ошибку вида "поле такое-то содержит недопустимые символы бла-бла-бла" и в окно красного креста рантайма выводит крокозябры. Смотрю текст коммента этой записи в ЖО исходной базы - там просто сообщение, да, длинное, но вроде порядок. Что это? Недружба с кириллицей? Короч если глубже копнуть, то на СКД ни разу не юзабельно, что очень жаль... Придется городить прямые запросы, видимо.
@user-zr4uw5ng3r
@user-zr4uw5ng3r 3 жыл бұрын
Да, к сожалению, все эти сбои могут появляться. Я полагаю, что это либо вина драйвера odbc для Clickhouse. Можно попробовать подключить clickhouse к другому приложению (не 1С) по odbc и погонять те же селекты
@user-ri8vq9yx1w
@user-ri8vq9yx1w 3 жыл бұрын
@@user-zr4uw5ng3r да, похоже на косяк драйвера odbc от самих clickhouse. Тестировал плагин для vscode - sqltools и драйвер для него (плагин реализует функционал консоли запросов в самом редакторе), там таких проблем нет. Like %текст% работает
@user-rq7dd1uy9o
@user-rq7dd1uy9o 3 жыл бұрын
Очень познавательный материал, а есть варианты с версионированием?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
С каким?
@AlexeyNecro
@AlexeyNecro Жыл бұрын
что такое марсианские базы?
@user-nd9cv4pd5m
@user-nd9cv4pd5m Жыл бұрын
это космические базы на Марсе :)
@arspr1m
@arspr1m Жыл бұрын
Может сталкивался кто. Не запускается служба EventLogExporter ни в win7/10, ни в Ubuntu 22.10. Скачал с гитхаба архив, распаковал, прописал пути как в ридми написано. В win 1053 ошибка (если запускать службу, exe-шник вообще ноль реакции), в ubuntu: Main process exited, code=dumped, status=6/ABRT (dotnet 5 установил)
@user-nd9cv4pd5m
@user-nd9cv4pd5m Жыл бұрын
Без полных логов сложно что-либо сказать
@arspr1m
@arspr1m Жыл бұрын
@@user-nd9cv4pd5m в конфигурационном файле забыл одну запятую. так же пришлось вручную в эластике (8.6.1) создать полностью пустой шаблон индекса oneslogs
@arspr1m
@arspr1m Жыл бұрын
@@user-nd9cv4pd5m в работе экспортера появился нюанс. создал службу, эластик начал получать логи и на определенной строке остановился. так было с 3 базами 1с (для каждой базы создавал свою службу с уникальным именем, с менеджером пока не разобрался). более того, на одних и тех же строках стопорилась отправка в службах под убунту, дебиан и винсервер 2008. примерно на строке в момент создания самой первой отправки (но не точно на тот момент). в шаблоне индекса oneslogs галочка датастрим устанвлена. я уже и пересоздавал индексы, шаблон индекса, ничего пока не помогло. может ли это быть связано с тем, что я создал сам шаблон oneslogs (полностью пустой), а не средствами экспортера? или куда еще можно посмотреть
@user-nd9cv4pd5m
@user-nd9cv4pd5m Жыл бұрын
@@arspr1m затруднюсь ответить. На Эластике я это не запускал. Возможно, автор - Евгений Акпаев сможет подсказать. Напишите issue вот сюда: github.com/akpaevj/OneSTools.EventLog/issues
@user-sd8oo7di7p
@user-sd8oo7di7p 3 жыл бұрын
Ошибка при выполнении docker-compose, помогите чайнику: => ERROR [2/5] COPY ./app /opt/EventLogExporter 0.0s ------ > [2/5] COPY ./app /opt/EventLogExporter: ------ failed to compute cache key: "/app" not found: not found ERROR: Service 'collector' failed to build : Build failed
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Судя по ошибке у вас в каталоге log-exporter нет подкаталога app. В него надо распаковать коннектор к кликхаусу
@kuzyara555
@kuzyara555 Жыл бұрын
Clickhouse не тормозит?
@user-nd9cv4pd5m
@user-nd9cv4pd5m Жыл бұрын
да вроде нет. с чего вдруг ему тормозить?
@RamzilN
@RamzilN 3 жыл бұрын
Здраствуйте, что делать, если падает с ошибкой: collector_1 | Could not execute because the application was not found or a compatible .NET SDK is not installed. collector_1 | Possible reasons for this include: collector_1 | * You intended to execute a .NET program: collector_1 | The application '/opt/EventLogExporter/EventLogExporter.dll' does not exist. collector_1 | * You intended to execute a .NET SDK command: collector_1 | It was not possible to find any installed .NET SDKs. collector_1 | Install a .NET SDK from: collector_1 | collector_1 exited with code 145 Все переустановил, результат один
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
А запускаете как, чтобы получить такую ошибку?
@RamzilN
@RamzilN 3 жыл бұрын
@@user-nd9cv4pd5m как в видео, в visual code в терминале запускаю , веб интерфейс с КХ стартуют, но не экспортер, файлы закинул, вроде все как надо. Ладно уж, я запустил экспортер как службу винды и прописал базу в КХ, так работает
@tomskih13
@tomskih13 2 жыл бұрын
Помогите чайнику:
@tomskih13
@tomskih13 2 жыл бұрын
PS D:\Docker\YandexClickHouse> docker-compose up yandexclickhouse_clickhouse_1 is up-to-date Starting yandexclickhouse_collector_1 ... Starting yandexclickhouse_collector_1 ... done Attaching to yandexclickhouse_clickhouse_1, yandexclickhouse_click-ui_1, yandexclickhouse_collector_1 collector_1 | Clickhouse Connection = clickhouse:8123 : not found | /opt/EventLogExporter/entrypoint.sh: 2: /opt/EventLogExporter/entrypoint.sh: collector_1 | Could not execute because the application was not found or a compatible .NET SDK is not installed. collector_1 | Possible reasons for this include: collector_1 | * You intended to execute a .NET program: collector_1 | The application '/opt/EventLogExporter/EventLogExporter.dll' does not exist. collector_1 | * You intended to execute a .NET SDK command: collector_1 | It was not possible to find any installed .NET SDKs. collector_1 | Install a .NET SDK from: collector_1 | aka.ms/dotnet-download clickhouse_1 | Processing configuration file '/etc/clickhouse-server/config.xml'. clickhouse_1 | Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'. clickhouse_1 | Logging trace to /var/log/clickhouse-server/clickhouse-server.log clickhouse_1 | Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log clickhouse_1 | Processing configuration file '/etc/clickhouse-server/config.xml'. clickhouse_1 | Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'. clickhouse_1 | Saved preprocessed configuration to '/var/lib/clickhouse/preprocessed_configs/config.xml'. clickhouse_1 | Processing configuration file '/etc/clickhouse-server/users.xml'. clickhouse_1 | Saved preprocessed configuration to '/var/lib/clickhouse/preprocessed_configs/users.xml'. yandexclickhouse_collector_1 exited with code 145
@user-zr4uw5ng3r
@user-zr4uw5ng3r 2 жыл бұрын
@@tomskih13 понял проблему. В видео сказано, что перед запуском надо скачать собственно Коллектор от Е. Акпаева и положить его в папочку log-exporter/app
@tomskih13
@tomskih13 2 жыл бұрын
@@user-zr4uw5ng3r это я сделал. тоже пришел к выводу, что коллектор не виден, но почему пока не могу сообразить.. Может что-то с путями. Попробую заново
@silence004
@silence004 Жыл бұрын
как можно рештьб ошибку cllickhouse-collector-1 exited with code 134
Идеально повторил? Хотите вторую часть?
00:13
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 6 МЛН
Slow motion boy #shorts by Tsuriki Show
00:14
Tsuriki Show
Рет қаралды 10 МЛН
Sigma girl and soap bubbles by Secret Vlog
00:37
Secret Vlog
Рет қаралды 15 МЛН
Кто такой 1x1x1x1? 😱 #ROBLOXVI #hackerroblox #roblox
1:00
Docker для 1С-ников. Введение
29:01
Веселый1С
Рет қаралды 18 М.
Tag him😳💕 #miniphone #iphone #samsung #smartphone #fy
0:11
Pockify™
Рет қаралды 3,7 МЛН
АЙФОН 20 С ФУНКЦИЕЙ ВИДЕНИЯ ОГНЯ
0:59
КиноХост
Рет қаралды 1,2 МЛН
Какой ноутбук взять для учёбы? #msi #rtx4090 #laptop #юмор #игровой #apple #shorts
0:18
Как бесплатно замутить iphone 15 pro max
0:59
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 8 МЛН