Сегодня я наткнулся на интересный пост о мониторинге ошибок на сайте. У описанного метода есть недостаток — он применим только для React.
После прочтения поста я сразу же вспомнил про вебвизор. Если бы мне позвонил человек, которыйой, я куда-то нажала, оно выскочило нашел ошибку на сайте, я бы очень обрадовался возможности посмотреть, что он сделал, а не задавать человеку кучу вопросов, тратя его и свое время.
Оказалось, что все настолько просто, что реализация задумки заняла у меня всего минуту.
Единственный способ передать факт возникновения ошибки на странице — цели.
Я создал JavaScript-событие и назвал цель Js Error.
Далее я добавил в код счетчика отправку событий при возникновении ошибки.
На этом мой эксперимент был успешно завершен. Если зайти в вебвизор, можно увидеть достижения целей, которые означают, что в текущем визите произошла ошибка.
Конечно, для полноценного разбора ошибок этого будет мало. Думаю, стоит сделать обработчик ошибок, который будет отображать прямо на странице информацию, если сайт просматривается через вебвизор. Так же, можно разделить ошибки на уровни, либо даже вынести определенные, особо интересующие события в отдельную цель. Для мониторинга 404, 500 и прочих ошибок, можно добавить счетчик в шаблон ошибки с отдельной целью и отправлять ее сразу после инициализации счетчика.
Очень порадовало, что вместе с записью действий пользователя, мы получаем много информации, которая может помочь при дальнейших проверках.
Есть и недостатки данного метода:
Надеюсь, столь простой способ может кому-то пригодиться.
UPD:
В комментариях altervision подсказал, что можно передавать параметры визита в методе reachGoal. Этого может быть достаточно для передачи сообщений об ошибках.
После прочтения поста я сразу же вспомнил про вебвизор. Если бы мне позвонил человек, который
Оказалось, что все настолько просто, что реализация задумки заняла у меня всего минуту.
Единственный способ передать факт возникновения ошибки на странице — цели.
Я создал JavaScript-событие и назвал цель Js Error.
Далее я добавил в код счетчика отправку событий при возникновении ошибки.
<script type="text/javascript" >
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter%id счетчика% = new Ya.Metrika({
id:%id счетчика%,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true // Обязательно включаем вебвизор
});
} catch(e) { }
});
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = "https://mc.yandex.ru/metrika/watch.js";
if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
window.addEventListener("error", function(event){
// Я просто для примера вывел в лог событие. По-хорошему, нужно сделать какое-то решение, позволяющее посмотреть, когда и какая ошибка возникла в процессе.
console.log(event);
// Говорим метрике, что произошла ошибка
yaCounter%id счетчика%.reachGoal('ERROR');
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/%id счетчика%" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
На этом мой эксперимент был успешно завершен. Если зайти в вебвизор, можно увидеть достижения целей, которые означают, что в текущем визите произошла ошибка.
Конечно, для полноценного разбора ошибок этого будет мало. Думаю, стоит сделать обработчик ошибок, который будет отображать прямо на странице информацию, если сайт просматривается через вебвизор. Так же, можно разделить ошибки на уровни, либо даже вынести определенные, особо интересующие события в отдельную цель. Для мониторинга 404, 500 и прочих ошибок, можно добавить счетчик в шаблон ошибки с отдельной целью и отправлять ее сразу после инициализации счетчика.
Очень порадовало, что вместе с записью действий пользователя, мы получаем много информации, которая может помочь при дальнейших проверках.
Есть и недостатки данного метода:
- Для определения ошибки нужно просматривать посещение
- Ограничено количество целей в метрике. Доступно 200 целей
- Страницы, на которых счетчик не установлен, мониториться не будут.
- Вебвизор фиксирует не все посещения пользователей, а только 120 тыс. визитов в день и хранит их в течение 15 дней.
Надеюсь, столь простой способ может кому-то пригодиться.
UPD:
В комментариях altervision подсказал, что можно передавать параметры визита в методе reachGoal. Этого может быть достаточно для передачи сообщений об ошибках.
Комментарии (6)
altervision
17.12.2017 16:07События в Метрике можно отправлять ещё и с параметрами визита. Поэтому к одной цели «ошибка» при необходимости вполне можно добавить и некоторую отладочную информацию.
Описание: yandex.ru/support/metrika/objects/reachgoal.html
Rencom
Есть же sentry.io, можно хоть в слак транслировать )
ilyaplot Автор
Интересный инструмент, спасибо. Я бегло посмотрел, что он из себя представляет. Я не увидел в нем возможности посмотреть на происходящее глазами пользователя. Она есть?
nesselrode
sentry.io/integrations/sessionstack вроде оно
catanfa
del
zymanch
Нет, нету. Однако есть куча полезной дополнительной информации типа текущего контекста (переменных, их значения и прочего). И, как уже писали выше, куча интеграций для сервисов уведомлений, трекеров и прочего.
Одно другого не заменит, зато дополнит.