Повышение качества разработок и онлайн контроль ошибок

09.03.18

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

Анализ ошибок и сбор ошибок журнала регистраций из десятков и сотен баз в одном месте.

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

Наименование Файл Версия Размер
Расширение GCP Error
.cfe 14,61Kb
148
.cfe 1.3.7 14,61Kb 148 Скачать бесплатно

Всем доброе время суток. Давно я уже ничего не писал на данном ресурсе, однако, надо бы исправить это дело.

О чем я хочу поговорить сегодня ? Если я скажу о том, что я хочу говорить про то, как интегрировать 1С с неким “100500” сервисом, то вряд ли кто-то отнесется к этому с той серьезностью, которую бы мне хотелось получить.

Поэтому я скажу по другому:

Я хочу поговорить про качество обслуживания баз 1С

Заинтриговал? Но поверьте, я не хочу говорить про то, что надо делать тестирование, отладку, писать сценарии и прочее прочее прочее. Все и так про это уже давно знают. А хотелось бы мне поговорить про те проблемы, которые уже случились, они есть, но никто о них не знает.

Позвольте задать вопрос - как часто вы пролистываете журнал регистраций на поиск ошибок?

Задел за живое? :) Я столько раз слышал от разработчиков - какой этот журнал не удобный, что надо писать свои системы логирования и анализа, что надо делать то и это, а в итоге - никто ничего не делает.
Проще всего - мобильным разработчикам, так как у них нет журнала регистрации, и они не могут подключиться удаленно и посмотреть на эти все ошибки.

Почему я решился на написание именно этой статьи?

Честно? Мне надоело нытье моих собратьев о том, что клиенты жалуются, говорят что в программе много ошибок, что 50 раз в день они нарываются на какие-то баги, а по факту - это всего лишь 2-3 ошибки в день.
Что коллегам по цеху не удобно листать эти полотнища в виде ЖР и искать в них зерно истины. Что вот прям завтра, они поднимут свою систему для этих целей и вот тогда то...

И так, для кого эта статья предназначена?

  1. Для администраторов баз данных клиента (как внутренних, так и внешних)
  2. Для специалистов тех поддержки
  3. Для разработчиков (наконец).

 

Теперь предлагаю пофантазировать и ответить на вопрос “А следили ли Вы бы за ошибками?”, если:

  1. Была подписка на все ошибки
  2. Можно было бы в онлайне отлавливать ошибки по всем клиентам, по всем базам данных, по 500 РИБам, по мобильным устройствам? И видеть это все в браузере/телефоне/телевизоре?
  3. Если бы ошибки можно было группировать, смотреть когда они появились в первый раз, когда был последний раз, сколько пользователей с ними столкнулись, как часто это было?
  4. Если бы сервис показывал в каких версиях расширения/конфигурации эта ошибка была ранее?
  5. Если бы для реализации всего этого - не надо было бы платить ни копейки и иметь квоту в 170 000 запросов в день? (во всяком случае - пока)
  6. Если бы вы могли взять любую базу клиента, прописать пару строк, потратить 10 минут времени на перекур и собрать анализ по всем ошибкам этого клиента, которые попали в журнал регистраций за последних 30 дней?
  7. Если бы можно было дать доступ клиенту к спискам именно его ошибок, чтобы он сам отмечал те ошибки, которые являются критичными, и мог “затыкать” рот Марьи Ивановне, которая говорит, что у нее 100500 ошибок в день, а по факту всего 2-3?
  8. Если бы на внедрение всего этого - надо было бы потратить всего 15 минут времени?
  9. Если бы этот ресурс предоставлял гигант IT мира?
  10. Если бы вы были клиентом, а не программистом, и вы хотели бы “втихаря” собирать реальную статистику ошибок в базе данных, для того, чтобы дать нагоняя IT отделу, или компании, которая обслуживает, и вам бы для этого не понадобилось владеть огромными навыками программирования?
  11. … куча всяких других рекламных если…

Надеюсь, что ответ - “да”. И я уже не один...

Раскрываем карты

Сервис Google Cloud Platform

Размещается по адресу https://console.cloud.google.com

Там появился новый сервис, который позволяет отлавливать баги. Сейчас он находится в статусе беты, так что им можно пользоваться почти безвозмездно. Кроме этого - Google дает нам бесплатный бонус на 300$ на один год, который можно активировать уже после того, как сервис выйдет из беты. Пока Google дает 170 000 запросов в день бесплатно, про остальное - надо с ними списываться и решать, цен в открытом доступе пока нет.

Выглядит это все в итоге вот так:


По пунктам:

  1. Выбор проекта, т.е. можно завести под каждого клиента отдельный проект
  2. Сервисы, мы их используем в качестве имени конфигурации/расширения где произошла ошибка
  3. Версии - версии конфигурации или расширения
  4. Фильтр по типам задач
  5. Автоматическое обновление страницы ошибок. Очень помогает, когда в офисе на стене висит телевизор и в нем появляются все ошибки за текущий день.
  6. Можно включить уведомления, которые бы отправлялись в случае новых ошибок
  7. Период анализа ошибок.

Посмотрим одну ошибку детальнее:

Тут есть - описание ошибки, где она возникла, в какой строке, в каком модуле.
Кроме этого - четко видно, сколько раз она проявлялась и сколько РАЗНЫХ пользователей было затронуто ею.
Так же видно, где она проявлялась, в каких расширениях/конфигурациях и их версиях.
Ну и когда она была зарегистрирована первый раз и последний.
Ну и вишенка на торте, для тех, кто уже перешел в гит - если нажать на ссылку ошибки, там где ее путь слева вверху, то появится вот такое окно:

Т.е. вы можете прямо сразу перейти в гит, и там увидеть контекст вызова.
Остальные плюшки тут интуитивно понятны, так что не буду на них заострять внимание.

Краткий план действий

Понравилось? Если да, то чтобы это все реализовать, нам необходимо проделать несколько шагов:

  1. Зарегистрировать Google аккаунт (если еще есть те, у кого его нет)
  2. Зайти в консоль Google Cloud Platform
  3. Создать нужный проект
  4. Включить использование API Stackdriver Error Reporting
  5. Сгенерировать ключ для API
  6. Накатить расширение на базу и прописать в модуле настроек ID проекта и ключ
  7. Нажать кнопку - выгрузить данные ЖР
  8. Выпить кофе
  9. Посмотреть на результат в консоле

Если знать что и как делать - все шаги занимают 10 минут. Приступим.

Создание проекта для выгрузки

Я надеюсь, что обычный Google аккаунт есть уже у всех, так что идем сразу дальше.
Переходим по ссылке: https://console.cloud.google.com
Соглашаемся с условиями.
Идем в раздел регистрации ошибок:

Нас попросят создать проект:

Нажимаем на создание, и пишем имя проекта, оно нам надо будет далее. Я называю их как “ua-company-db”, т.е. страна, внутренне названии компании и имя базы, если я их разделяю.
Если все будет хорошо, то мы увидим вот такую картинку:

 

Теперь нам надо активировать API, для этого идем по этой ссылке: https://cloud.google.com/error-reporting/reference/
И нажимаем вот на эту кнопку:

Нас перекинет потом вот на эту страницу:


Где мы выбираем ранее созданный проект. И жмем Далее.
Теперь нас просят создать ключи, по которым мы будем подключаться к сервису:

Теперь нам надо создать ключ доступа через API, для этого идем в нужный раздел:

И создаем ключ для доступа к API:


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

И жмем на кнопку Создать.
После этого - появится окошко с ключем:

Копируем его куда-то и закрываем окно.

В итоге у нас должно быть вот такое:

И последнее что нам надо - это ID проекта:


Все, теперь мы создали все, что нам было необходимо, идем обратно в дашборд ошибок:

Итого, все это мы проделывали для двух вещей:

  • ID проекта, в нашем случае это test-1c-log
  • Ключ доступа, в нашем случае это AIzaSyB3cq1-9TksRyzP_r00wYlwi1pL-d2G7x4

Тестирование

Для теста нам понадобится просто платформа 8.3.10 или новее. Создадим пустую базу, и подключим туда расширение.
Вообще - механизмы будут работать везде, но, платформа должна уметь формировать JSON, хотя, можно и собрать его руками, через СтрШаблон. Кроме этого - платформа должна будет уметь отправлять POST запросы, но опять таки, есть cURL, так что по большому счету - этот сервис можно интегрировать даже с 7.7. При желании. При достаточном желании.


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

Сюда мы потом пропишем ключи доступа. НО! Пока ничего не пишем. Запускаем в режиме предприятия, открываем обработку GCP тест:

И жмите пару раз на кнопку Тест ошибки, в этот момент программа попробует отправить ошибку в сервис, но, так как мы не указали данные подключения, программа зафиксирует ошибки в журнал регистрации, а нам этого и надо для тестов.
Нажатие на эту кнопку вызывает вот эту функцию:

После того как ткнем кнопку пару раз, идем в журнал регистрации и проверяем там, что ошибки наши зафиксированы:

Теперь возвращаемся в конфигуратор, в модуль настроек, и заполняем данными:

Обновляем, запускаем режим предприятия, жмем кнопку теста еще один раз, и идем уже теперь на наш трекер ошибок, и почти сразу видим (иногда, для отображения первой ошибки нового проекта может пройти от минуты до 5, так что не ожидайте увидеть первую ошибку через секунду):

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

Итого

Если пропустить этап первого получения ключа, то тут все сводится к накатыванию расширения на базу, прописывание ключа и проекта в настройках и все.

Кейс. Обращается ко мне клиент, хочет чтобы его взяли на обслуживание. Я создаю новый проект, подключаю к базе расширение, или выношу весь функционал во внешнюю обработку, запускаю выгрузку ТЖ. Иду курить и пить кофе. Прихожу через 15 минут и показываю ему “весь ужас” его базы. Где количество ошибок может достигать сотен, а одни и те же ошибки - тысяч, а то и десятков.

Кстати, если вы посмотрите функцию НеОшибки, то она так раз и сделала чтобы отлавливать не ошибки конфигурации:

Если в комментарии есть встречающиеся строки из этого массива, то я их пропускаю как не ошибки. Также пропускаются ошибки, у которых нету комментария.

Где это реально используется? Мы используем это у клиентов где сотни РИБ узлов, для анализа ошибок.

Как мы это используем - в двух вариантах, есть проект, куда сливается именно журнал регистраций, а есть проект, куда сливаются предвиденные ошибки.
Так как в журнале регистрации не всегда есть возможность адекватно распарсить ошибку, а там где мы отлавливаем ошибки попытками - мы сливаем их в конкретный проект, и после этого - связываем с жирой.

P.S.

Не советую вот в таком виде запускать это на реальном крупном проекте, все таки это упрощенная модель. У нас реализовано все немного сложнее. Например, отправка ошибок идет через фоновые задания, чтобы не тормозить выполнение основного кода. Ошибки кешируются, если нет интернета. И т.д.

P.P.S. Сервис бесплатный, по крайней мере пока он находится в стадии теста, но даже если он станет платным, есть возможность активировать 300$ бонуса на один год, и таки год им пользоваться бесплатно, а дальше уже решать.
Ну и конечно, просмотреть текущий уровень квот можно в специальном разделе


И тут красиво показывается сколько запросов за текущий день было сделано.


Заключение

Надеюсь, что теперь качество ваших продуктов и скорость реакции возрастет в разы. Но, это всего лишь один из маленьких пунктов в технологиях, которые дает Google.

Кроме этого, мы используем еще и FireBase и Google Analitics, где мы строим карты пользования магазинами 1С, вычисляем каким функционалом пользуются часто, а какой надо удалить, какие есть бест практики, как быстро в среднем отрабатывает функционал, и многое многое другое.

Кстати, про Google Analitics будет доклад на майском хакатоне . https://isthisdesign.org/

Цель подобного подхода

На самом деле на ближайшем хакатоне (если кто не в курсе он пройдет в мае в Москве), будет второй день для разбора проблем https://isthisdesign.org/shedule#day2

Я предполагаю, что проблема “Мониторинг 1С” на ней возникнет, и если возникнет я поделюсь вот этими своими наработками и/или расскажу - как мы с этим работаем. Видь просто выгрузить куда то это одно, а уметь читать и использовать - это уже другое. Возможно это не похоже на пропагандируемый ЦУП и elasticSearch, но проблему ведь решает и результат отличный. Тем более, что для этого не надо иметь свою инфраструктуру и специализированные знания.

 

Журнал регистраций http Stackdriver Error Reporting Google Cloud Platform GCP isthisdesign.org

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по 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    42518    10    24    

38

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

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

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

4800 руб.

03.09.2016    42252    33    24    

37

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

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

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

10000 руб.

23.05.2014    55468    52    16    

47

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

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

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

9000 руб.

28.08.2019    30953    14    21    

66

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

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

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

5000 руб.

28.11.2018    19543    13    6    

36

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

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

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

1 стартмани

29.12.2023    1243    12    dima_gsv    1    

12

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

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

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

1 стартмани

13.11.2023    2967    4    AlexSTAL    0    

42

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

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

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

3 стартмани

26.09.2023    1752    11    doom2good    10    

13
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 09.03.18 08:47
Сообщение было скрыто модератором.
...
2. пользователь 10.03.18 02:50
Сообщение было скрыто модератором.
...
3. infosoft-v 871 11.03.18 19:51 Сейчас в теме
4. vlad.frost 186 11.03.18 20:37 Сейчас в теме
Герман Клименко:
Технически российское государство готово к отключению от мировой глобальной паутины.
корум; gortol; yarsort; kote; vano-ekt; TreeDogNight; Lo1jke; pm74; 9-pm; +9 Ответить
6. DitriX 2091 12.03.18 14:04 Сейчас в теме
(4) если не будут доступны сервисы гугла, то я боюсь, что не работающая онлайн система ошибок - будет наименьшей проблемой из всех :)

(5)Уникального ничего нету, просто пост запросы с парсингом ЖР. Я этот модуль с нуля написал за 2 часа (так как мы используем более глобальные вещи, и объяснять их тут заняло бы кучу времени).

На счет физиков - вы же не можете работать с клиентами как физик ;) Вы либо сотрудник компании (ЧП, ООО и т.д.) или сами являетесь этой компанией. А физика можно использовать просто для тестов :)
37. sergathome 4 21.03.18 17:19 Сейчас в теме
(6) Счастье в другом. Вся эта красотища влёгкую нарушает практически любое соглашение с клиентом о конфиденциальности...
38. DitriX 2091 21.03.18 21:20 Сейчас в теме
(37)например? Я не знаком ни с одним соглашением, которое бы можно было нарушить этим сервисом.
С каких это пор - код конфигурации, а точнее не код, а его эпизоды - стали конфеденциальной информацией?
Или название расширения это запрещенные данные?
Конечно, если вы туда будете выгружать цифр по рентабельности, долгам и прочее -- тогда да, но сервис как бы не для того.
В этом случае вы и гитом не можете пользоваться, и пуши отправлять на мобильники и т.д. Но в таком случае - это просто статья не для вашего случая :)
С другой стороны, скорее проще взломать сервер клиента и получить доступ к базе, чем взломать гугл аккаунт и получить доступ к списку багов :)
elephant_x; TreeDogNight; user597616_i.d.kravchenko; JohnyDeath; +4 Ответить
40. sergathome 4 22.03.18 09:00 Сейчас в теме
(38) и тем не менее. клиент, неожиданно узнавший, что его данные попали на некий внешний, а тем паче - вражеский ресурс, способен выиграть суд. это шутка, пока оно шутка.
41. DitriX 2091 22.03.18 21:47 Сейчас в теме
(40) А вы собираетесь такое проделывать без согласия пользователя?
43. sergathome 4 23.03.18 13:48 Сейчас в теме
(41) я - нет, но знаю тех, кто об этом даже не задумывается ;))
45. yarsort 140 19.04.18 15:56 Сейчас в теме
(4) Голову пусть себе отключат...
5. MaCCapAkIII 12.03.18 01:40 Сейчас в теме
Все очень грамотно и полезно. А самостоятельно можно создать подобное расширение или у вас уникальное там что-то?

И еще. Есть информация, что физикам в принципе нельзя использовать теперь GCP... https://goo.gl/ior7gh
7. Scorpion4eg 424 12.03.18 14:12 Сейчас в теме
Все больше убеждаюсь что Google это корпорация добра. Столько всего предоставляет на бесплатной или почти бесплатной основе.
Google Analytics(а я думаю почему я икаю), Google Vision(распозновалка фото), естественно Google Maps, Google shortner, такая еще штука.
9. lustin 12.03.18 20:52 Сейчас в теме
(7) Еще firebase - мы тут её к OScript прикручиваем, ваще вещь
10. DitriX 2091 13.03.18 02:29 Сейчас в теме
(9)и че я не в теме и не при делах. Давай кооперироваться :) Я сейчас тоже это делаю.
15. lustin 14.03.18 18:49 Сейчас в теме
(10) это кстати тема доклада Алексея Соснового + моя на блиц докладах. Я покажу код. Тебе как докладчику могу показать чуть раньше ;-)

Я хочу чтобы к октябрьской конференции это было готово вкупе с наработками Андрюхи по Oscript Web - тогда к октябрю для Инфостарта мы сделаем самый крутой Веб фреймворк в мире ;-).

а чтобы быть в теме ;-) надо следить за моим facebook акаунтом - я там выкладываю гифки того над чем работаю.



kote; Brawler; TreeDogNight; +3 Ответить
24. DitriX 2091 16.03.18 17:43 Сейчас в теме
(15)увы, соцсети не мое, нет на них время. Лучшая соцсеть - бокал пива и беседа :)
22. vano-ekt 123 15.03.18 15:03 Сейчас в теме
46. Region102 20.06.18 06:40 Сейчас в теме
(7) Google уже давно корпорация бабла
8. support 4484 12.03.18 19:09 Сейчас в теме
11. spezc 782 13.03.18 12:10 Сейчас в теме
Божественно! Держи звезду.
12. Alias 176 14.03.18 14:46 Сейчас в теме
Можете уточнить, как "дать доступ клиенту к спискам именно его ошибок, чтобы он сам отмечал те ошибки, которые являются критичными, и мог “затыкать” рот Марьи Ивановне, которая говорит, что у нее 100500 ошибок в день"?
Или, иначе говоря, даже по скриншоту видно -- есть общее количество ошибок, есть количество затронутых пользователей. И если провалиться в ошибку, то видно список последних ошибок, опять в них провалиться и увидеть пользователя. А как сделать фильтр по ошибкам одного пользователя? Как посмотреть не "список последних ошибок", а полный?
13. DitriX 2091 14.03.18 18:16 Сейчас в теме
(12) не одного пользователя, а по проекту. Вы создаете на каждого клиента свой проект, и даете доступ только к их проекту.
14. mitia.mackarevich 72 14.03.18 18:47 Сейчас в теме
В транзакции также вставляете обращение к сервису напрямую, при записи документа например?))
Вопрос снят, перечитал статью, под вечер голова не варит=)
16. Gladkov_Anton 323 14.03.18 21:04 Сейчас в теме
Без изменения кода конфигурации и без конструкции "попытка" логирование ошибок в googole будет?
25. DitriX 2091 16.03.18 17:43 Сейчас в теме
(16) собираются данные из ЖР. В этом варианте.
28. Gladkov_Anton 323 19.03.18 09:26 Сейчас в теме
(25) Прошу прощения, но я так и не понял.
Есть базы данных без доработок.
В них происходит исключение. В ЖР оно НЕ попадает.
Я правильно понимаю, что таки ошибки НЕ попадут в google?
29. DitriX 2091 19.03.18 14:21 Сейчас в теме
17. TreeDogNight 22 15.03.18 06:21 Сейчас в теме
Никак не могу понять, по какому принципу происходит группировка ошибок?
Прикрепленные файлы:
18. JohnyDeath 301 15.03.18 08:37 Сейчас в теме
(17) может по тексту самой ошибки?
19. TreeDogNight 22 15.03.18 11:33 Сейчас в теме
(18) Тоже так думал. Но при открытии ошибки, внутри отображаются другие ошибки...
Прикрепленные файлы:
21. vova329 15.03.18 14:26 Сейчас в теме
(19) Я так понял в группировке участвуют и метаданные, копай сюда
Прикрепленные файлы:
20. Spec1Cnik 11 15.03.18 14:22 Сейчас в теме
23. Spec1Cnik 11 15.03.18 15:18 Сейчас в теме
Позволил себе добавку в коде, иначе не выводит нужную информацию
Если ОшибкаИТекст.Количество() > 1 Тогда
//Обработка пути ошибки
РасширениеИПуть = СтрРазделить(ОшибкаИТекст[0], " ", Ложь);
Если РасширениеИПуть.Количество() > 1 Тогда
	.........оригинальный код
Иначе   //добавка по смыслу, иначе не заполняет важную информацию об ошибке
 ПутьОшибки =  РасширениеИПуть[0];
 ПутьИСтрокаОшибки = СтрРазделить(ПутьОшибки, "()", Ложь);
Если ПутьИСтрокаОшибки.Количество() > 1 Тогда
Попытка
reportLocation.lineNumber = Число(ПутьИСтрокаОшибки[1]);
Исключение
КонецПопытки;
							
СоставПутиОшибки = СтрРазделить(ПутьИСтрокаОшибки[0], ".", Ложь);
reportLocation.functionName = СоставПутиОшибки[СоставПутиОшибки.ВГраница()];
СоставПутиОшибки.Удалить(СоставПутиОшибки.ВГраница());
reportLocation.filePath = СтрСоединить(СоставПутиОшибки,".");
КонецЕсли;
//конец добавки
КонецЕсли;

Показать
TreeDogNight; +1 Ответить
26. DitriX 2091 16.03.18 17:45 Сейчас в теме
(23) спасибо. Писалось это на коленке, я думаю по стилю кода видно :) Так, в целях обучения. Реальный код много сложнее.
27. TreeDogNight 22 17.03.18 07:57 Сейчас в теме
Сделал доработку, чтобы работало на более старых платформах:
Функция НастройкиОповещенияОбОшибках() Экспорт
	
	СтрокаНастроек = "
	|{
	|  'projName': 'projects/project',
	|  'key': 'key',
	|}
    |";
	СтрНастроек = ПреобразованиеJSON(СтрокаНастроек);

	Возврат СтрНастроек;
	
КонецФункции

Функция ПреобразованиеJSON(СтрокаНастроек)
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаНастроек);
	
	Возврат ПрочитатьJSON(ЧтениеJSON);	

	
	//Чтение = Новый ЧтениеJSON;
	//Чтение.УстановитьСтроку(СтрокаНастроек);
	//Чтение.Прочитать();
	//СтрНастроек = ФабрикаXDTO.ПрочитатьJSON(Чтение);
	//Чтение.Закрыть();
	//Возврат СтрНастроек;
	
КонецФункции

Показать


 Процедура ОтправитьОшибку(СтруктураОшибки,Ошибка = Ложь, ЭтоЖурнал = Ложь) Экспорт
	
	Соединение = Новый HTTPСоединение("clouderrorreporting.googleapis.com",443,,,,10, Новый ЗащищенноеСоединениеOpenSSL);
	СтрСоединения = НастройкиОповещенияОбОшибках();
	Запрос = Новый HTTPЗапрос("v1beta1/" + СтрСоединения.projName + "/events:report?key=" + СтрСоединения.key);
	Запрос.Заголовки.Вставить("Content-Type", "application/json");
	
	//Запись = Новый ЗаписьJSON;
	//Запись.УстановитьСтроку();
	//ФабрикаXDTO.ЗаписатьJSON(Запись,СтруктураОшибки);
	Текст = СериализоватьВJSON(СтруктураОшибки, Истина);     
	
	//Текст = СтрЗаменить(Текст,"""#value"": ",""); //удаляем мусор от 1С
	//Текст = Сред(Текст,2,СтрДлина(Текст) - 2); 	  //Убираем {}
	Запрос.УстановитьТелоИзСтроки(Текст,КодировкаТекста.UTF8);        
	
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);     
	Если Ответ.КодСостояния <> 200 Тогда                                 
		Если НЕ ЭтоЖурнал Тогда
			ЗаписьЖурналаРегистрации(СтруктураОшибки.message,УровеньЖурналаРегистрации.Ошибка,,,?(Ошибка = Ложь, "", ПодробноеПредставлениеОшибки(Ошибка)));
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

Функция СериализоватьВJSON(Объект, ПервыйУровень = Ложь) 
	
	СвойстваОбъекта = Объект.Свойства();
	СтруктураСвойств = Новый Структура;
	
	Для каждого Свойство Из СвойстваОбъекта Цикл
		ЗначениеСвойства = Объект[Свойство.Имя];
		Если ТипЗнч(ЗначениеСвойства) = Тип("ОбъектXDTO") Тогда
			СтруктураСвойств.Вставить(Свойство.Имя, СериализоватьВJSON(ЗначениеСвойства));	
		ИначеЕсли ТипЗнч(ЗначениеСвойства) = Тип("СписокXDTO") Тогда
			МассивЗначений = Новый Массив;
			Для каждого Стр Из ЗначениеСвойства Цикл
				Если ТипЗнч(Стр) = Тип("ОбъектXDTO") Тогда
					МассивЗначений.Добавить(СериализоватьВJSON(Стр));
				Иначе 
					МассивЗначений.Добавить(Стр);
				КонецЕсли; 	
			КонецЦикла; 	
			
			СтруктураСвойств.Вставить(Свойство.Имя, МассивЗначений);	
		Иначе 
			СтруктураСвойств.Вставить(Свойство.Имя, ЗначениеСвойства);	
		КонецЕсли; 	
	КонецЦикла;
	
	Если Не ПервыйУровень Тогда
		Возврат СтруктураСвойств;	
	КонецЕсли; 
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, СтруктураСвойств);
	
	Возврат ЗаписьJSON.Закрыть();	
	
КонецФункции 
Показать
akR00b; DitriX; +2 Ответить
30. devlabnn 88 20.03.18 06:24 Сейчас в теме
Спасибо! Теперь используем у себя (РИБ 170 узлов).


Группируются ошибки по сочетанию functionName + filePath (без учета ineNumber)
Пришлось включить lineNumber в filePath
reportLocation.functionName = reportLocation.functionName + "_" + reportLocation.lineNumber;


Есть еще проблема - при нажатии Подробнее... на странице ошибки переходим на страницу 404.


Из-за этого использую юзер-цсс (во вложении), чтобы можно было посмотреть текст ошибки полностью, непосредственно в списке ошибок.
Прикрепленные файлы:
console.cloud.google.com_errors.css
DitriX; TreeDogNight; +2 Ответить
31. DitriX 2091 20.03.18 15:20 Сейчас в теме
(30) будет отлично - если напишите встречную статью о том, как вам это все помогло, или не помогло :)
34. devlabnn 88 21.03.18 09:41 Сейчас в теме
(31) Ощущения смешанные. С одной стороны - очень удобно видеть агрегированные данные по количеству инцидентов и затронутых узлов.
С другой - пока прикладная польза не понятна. Но прикольно :).
36. DitriX 2091 21.03.18 14:28 Сейчас в теме
(34)мы этот механизм часто используем при внерении нового функционала в 200 рибах. Когда мы оперативно ловим ошибки и сразу шлем обновления. Благо мы все стараемся через расширения. Так что одна кнопка, 5 минут и 200 касс работают с обновленной версией :)
32. TreeDogNight 22 20.03.18 20:37 Сейчас в теме
(30)
nName + "_" + reportLocation.lineNumber;

Можете подробнее рассказать как вы используете этот "юзер-цсс"?
33. devlabnn 88 21.03.18 08:32 Сейчас в теме
(32)
1. Установить расширение user css или аналог (есть для всех браузеров). Например, для Chrome / Яндекс браузера я использую это

2. Скопировать текст в окно расширения, как на скриншоте:


3. Результат
Прикрепленные файлы:
console.cloud.google.com_errors.css
Wilka; DitriX; TreeDogNight; +3 Ответить
35. TreeDogNight 22 21.03.18 09:56 Сейчас в теме
39. Avliyarov 22.03.18 06:08 Сейчас в теме
"Исчерпан доступный лимит развертываний. Показаны данные только для последних развертываний." - выдает при создании проекта
это я так понимаю - косяк тестовой среды?
42. DitriX 2091 22.03.18 21:48 Сейчас в теме
(39) где и когда возникает ошибка?
47. elephant_x 133 17.03.19 13:27 Сейчас в теме
(42) При переходе в стакдрайвер отчеты по ошибкам.
48. elephant_x 133 17.03.19 14:02 Сейчас в теме
(42) картинку ещё добавил)
Прикрепленные файлы:
49. elephant_x 133 17.03.19 19:36 Сейчас в теме
(42) Разобрался, все получилось.
1. Не то api создал
2. Такая картинка выходит когда в отчете нет данных.

Спасибо большое за статью, пойду внедрять на продакшн)
44. pbabincev 132 05.04.18 11:41 Сейчас в теме
Это просто великолепная работа!
Автор, Дмитрий, спасибо!
Включаем с ребятами для своей РИБ-12.
50. Xershi 1474 01.03.20 14:34 Сейчас в теме
Иногда появляется интерес к подобного рода вопросам. Но т.к. ни разу не использовал в работе такие вещи и они были не критичны хотел задать вопрос.
Работа сервиса до сих пор бесплатна?
Ранее наткнулся на более поздние статьи как через эластик сич провозить анализ, трудоемкая настройка, но там функционал решает более широкие проблемы.
Второй момент это просто внешняя обработка, которая сканирует ЖР и оповещает по почте примерно тоже самое что и у вас.
И насколько ваше решение грузит систему? Возможно не внимательно прочел статью, просто бегло прочитал о технологии.
Оставьте свое сообщение