Qbaka — сервис для отслеживания JS-ошибок

    Петербургские разработчики Андрей Мима (amima — ex-Яндекс, ex-ВКонтакте) и Даниил Гительсон (meta4) запустили сервис Qbaka, задачей которого является помощь программистам сайтов и приложений в отслеживании ошибок в коде JavaScript. Сервис пока находится в стадии бета-тестирования, однако уже открыт для всех желающих.

    Сервис предельно прост в использовании: программист добавляет несколько строк JS-кода к своему веб-приложению — они асинхронно подгружают ядро «Кубаки», которое собирает ошибки (слушая window.onerror) и отправляет их на сервер.

    Для упрощения поиска ошибок собирается следующая информация о пользователе: браузер, операционная система, временная зона, IP-адрес. Также есть возможность явно указывать идентификатор текущего пользователя.

    Также существует простой API, позволяющий логгировать исключительные ситуации вручную:
     try {
        /* do something */
    } catch (e) {
        qbaka.reportException(e);
    }
    


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

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

    Несколько скриншотов:
    • Список сгруппированных сообщений об ошибках:
    • Подробная информация и статистика по каждой ошибке:
    • Когда возможно, отображается фрагмент кода, в котором возникла ошибка:
    • Информация об окружении, в котором произошла ошибка (с идентификатором пользователя):
    • Статистика ошибок по проекту:
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 49

      –1
      Гениально.

      Вопрос только один: почему никто до этого не додумался раньше? :)
        +5
        airbrake.io/ (есть отслеживание js ошибок)
        www.proxino.com/
          +9
            +7
            Строго говоря у нас есть конкуренты. Но мы сильно от них отличаемся заточенностью на процессинг ошибок от JavaScript. У нас есть целый ряд возможностей, которых нет у конкрентов. И это только самое начало нашего пути :)

            Например, сообщение о том, что «переменная x не определена» сильно отличается в разных браузерах. Мало того, в тексте сообщения об одной и той же ошибке разные браузеры выводят разную информацию — кто-то название перменной, кто-то ее тип.

            Наш сервис вычленяет всю эту информацию и собирает вместе. Таким образом, отчеты об ошибке «х не определена» от Opera, Firefox, Chrome, Internet Explorer, будет объединены в одну группу, несмотря на то что сообщения об ошибке разные. На самом деле, подробное рассмотрение конкретно вопроса объединения ошибок тянет на отдельный пост :)
              +1
              Это кстати серьезный плюс (как и нативные фильтры для ошибок), а ошибки на разных языках будут группироваться? Вроде «Object excepted» и «Se esperaba un objeto».
                +4
                >«Object excepted» и «Se esperaba un objeto».

                Да, IE с его локализованными сообщениями об ошибках — настоящая головная боль для нас. Прямо сейчас у нас работает объедниенение для части его сообщений на русском. Однако в нашей базе хранятся сообщения от IE и на иврите, и на китайском. У меня есть некоторые идеи по решению этой проблемы, я держу их в головне, но они требует времени, легких решений я пока не нашел.
              +1
              даже я такое делал )https://github.com/homakov/clientsit
                +1
                github.com/kaler/CrashKit
                crashkitapp.appspot.com/

                CrashKit catches uncaught exceptions, traps signals, and sends them to developers by email or straight to your bug database.

                Exception reports will be automatically sent to our servers and presented for you to view them on the web.
                0
                Крутая вещь!
                  0
                  О, что-то на подобии ГА, только для JS ошибок.
                    +1
                    Хороший сервис. Возьму себе на заметку.
                      +3
                      ну крупным сервисам, мне кажется, не комильфо своими ошибками светить, а мелким это особо и не нужно
                      лучше подумайте сделать версию, которую желающие могли бы устанавливать к себе на сервер
                        0
                        Вариант как дебагер использовать.
                        +4
                        Отпишусь как бета-тестер:
                        использую где-то недели три, все круто, нравится, правда вот косяки какие заметил:
                        — ловит ошибки в юзерскриптах и экстеншенах Хромовских, например;
                        — к первому же пункту — ловит ошибки во внешних скриптах (google maps, fb и все такое), понятно, что в onError прилетает все, но на стороне сервера хотелось бы фильтровать такое (показывать ошибки только с указанного домена, как вариант);
                        — иногда задалбывают непонятные ошибки: просто «Script error» и все.

                        Но в целом, повторюсь, сервис очень крутой и помогает весьма.
                          +1
                          по косякам, сим почти все js error handler страдают. С airbrake таже фигня, приходится фильтры руками приписывать.
                            +2
                            Спасибо.

                            Одной из первой фичи которую мы запланировали — это отфлильтровывание ошибок по тексту сообщения и по адресу скрипта, в котором произошла ошибка. Фильтрация будет осуществляться на этапе агрегации и эти ошибки не будут учитываться в ограничении на количество отчетов об ошибок в день.

                            Так что ждите, у нас запланировано на ближее время целый ряд новых возможностей
                            0
                            Я абсолютно в этом не разбираюсь, мне просто интересно неужели в средах разработки не существует средств отлова ошибок? Я писал простейшие скрипты в блокноте и искал ошибки вручную, поэтому не владею информацией.
                              +1
                              к большому сожалению IDE не могут съимитировать все пользовательские действия во всех извесных браузерах (а привести к ошибке может определённая последовательность действий в определённом браузере например)
                                +1
                                тут прелесть в том, что в теории куча людей на куче браузевов тестят ваш проект.
                                  0
                                  А, самой сути я и не уловил, тогда ясно, спасибо.
                                +1
                                Большие проекты такую фичу должны иметь по определению. Да, без красивостей и графиков, но она есть. Да и не нужны по сути графики — код проходит несколько стадий тестирования до попадания на живое окружение. И ошибки яваскрипта на этом окружении — это скорее исключительная ситуация, которая требует немедленного реагирования, проверки, исправления и т.д. чем накопления и подсчёта статистических показателей.

                                П.С. Нам пока хватает отчёта на почту.
                                  0
                                  Идея интересная и, несомненно, полезная. Одно «Но» — хочу ли я пускать в свой сайт, даже на стороне пользователя, чужой код? Ведь исполняться он будет с правами пользователя. Как-то надо это более понятно описать — например, могу ли я сделать аудит кода, выполняемого на сайте, можно ли подключать локальную копию Вашего скрипта (а тут появляется вопрос что значит «Мы вправе изменить функциональность сервиса в любой момент» — в смысле этот подключаемый скрипт будет ли часто меняться?).
                                    0
                                    >могу ли я сделать аудит кода, выполняемого на сайте

                                    Безусловно, ведь он доступен всем.

                                    >можно ли подключать локальную копию Вашего скрипта

                                    Вот здесь есть сложность. Чисто теоретически — да. На практике это может вызвать проблемы в распространении новой функциональности/фиксов. Но, безусловно, реализуемо. В принципе, мы никак не запрещаем это делать и заменить в сниппете загрузку с нашего сайта на ваш не представляет никакой проблемы.

                                    >будет ли часто меняться?).

                                    Часто — не будет. Можно сделать нотификации на его изменение, чтобы пользователи хостящие скрипт у себя его обновляли. Подумаем об этой функциональности.
                                    0
                                    Чем лучше сервис лучше Airbrake и GetExceptional?
                                      0
                                      Посмотрите на главной странице, там перечислены основные фичи — в первую очередь это умная группировка, статистика по пользователям. Но будут и еще важные фичи, про которые мы потом расскажем :)
                                      +1
                                      На мой взгляд не хватает нескольких вещей:
                                      1. URL где произошла ошибка (не скрипта, а страницы)
                                      2. По возможности захватить stack c вызовами
                                      3. Ну и фильтры в админке
                                      Спасибо, в целом удобно.
                                        0
                                        >URL где произошла ошибка (не скрипта, а страницы)

                                        Да, это уже поддерживается только еще не выводится — так что ожидайте на следующей неделе )

                                        >По возможности захватить stack c вызовами

                                        Это фича работает только в IE, да и там достаточно хреново, т.к. честный stacktrace не получить.
                                          +1
                                            +1
                                            Прошу прощения, но я этим занимаюсь уже не один месяц, так что изучил проблему хорошо ;)

                                            Просто получить стэктрейс в коде не представляет никаких проблем. Хочется получить stacktrace в window.onerror, и ваш способ будет выдавать пустой стэктрейс, потому что к сожалению, window.onerror вызывается «отдельно», а не из функции где произошло исключение. У IE, к счастью, в отличии от всех остальных браузеров хоть не затирается arguments.callee.caller перед вызовом window.onerror, так что можно построить некое подобие stacktrace-а.

                                            А если впосользоваться нашим API вида try {...} catch (e) { qbaka.reportException(e); } то, конечно, стэктрекс исключения будет получен системой.
                                        +2
                                        А если ошибка происходит внутри анонимной функции в обфусцированном и с сжатом в 1 сточку коде, вы про это ошибку что-то, кроме того что она произошла, сообщите?
                                          0
                                          >что-то, кроме того что она произошла, сообщите?
                                          Ну, это как если стрипнуть дебажную инфу — много вы об ошибке, безусловно, не узнаете. А почему бы не сохранять переносы строк (обфускацию можно оставить) — с учетом gzip cжатия это очень незначительно увеличит размер js-файлов. yuicompressor так умеет.
                                            0
                                            Посмотрите в сторону source maps. Возможно это сможет помочь в отладке сжатого/обфусцированного кода…
                                              0
                                              К сожалению — никак. Просто потому что наш иснтрумент ищет ошибки в клиентских средах, а в них source maps, очевидно, включен не будет. Единственноый случай когда может таки помочь — если тестеры включат. Ну так тогда лучше им давать просто сайт с неминимизированными скриптами.

                                              На самом деле сжатие скриптов imho переоценивают. С учетом сжатия и версионирования убирания \n после каждой строчки (с оставленной обфускацией кода) не уменьшит время загрузки.
                                          +1
                                          Я раньше пользовался django-jhouston, а потом как начал пользовать Sentry/Raven, то перешел на raven-js. Мы пользуемся собственной установкой Sentry а не сервисом getsentry.com
                                            +2
                                            Не знал, что у Sentry есть JavaScript-клиент. Обязательно попробую. Спасибо!
                                            +1
                                            О, класс. Я помню, я такое делал (для вутреннего ресурса компании, правда). Потом всем надоело, потому что в то время как у всех всё работало, ошибок типа «script error» было как-то много, а фиксить никто не хотел. Но при аккуратном подходе к делу и с хорошими фильтрами поможет: юзеры не всегда будут писать в поддержку если скрипт падает — кто-то просто обидится.
                                              0
                                              Идея, классная. Я сам для этого сто лет уже использую Google Analytics.
                                              Самое грустное во всей этой истории то, что в onerror не передается ссылка на exception, и соответственно callstack.
                                                –3
                                                バカ?
                                                • UFO just landed and posted this here
                                                    –3
                                                    9バカ)
                                                      –3
                                                      我不明白你的語言!
                                                      • UFO just landed and posted this here
                                                      • UFO just landed and posted this here
                                                          +1
                                                          ну вообще это лошадеолень)
                                                          Катаканой тоже пишут, почему.
                                                            +4
                                                            Вы б не пугали так. Я уж успел подумать, что у меня с коммуникатором проблемы, получив несколько писем-уведомлений с иероглифами.
                                                    0
                                                    Сделайте ссылку на главную из статистики.

                                                    Плюс, после того как я вошел в статистику и вернулся на главную ручками, то предлагают авторизоваться заново, хотя кука поставлена нормально.
                                                      0
                                                      window.onerror есть далеко не во всех браузерах. Это наиболее печально
                                                        0
                                                        Подобный сервис — errorception.com/
                                                          0
                                                          А поясните, пожалуйста, принцип оплаты за число ошибок в день?

                                                          Only users with full accounts can post comments. Log in, please.