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

Привет! Меня зовут Дима Дынников, я руководитель команды аналитиков в Профи. Наш сервис помогает клиентам находить профессионалов для любой задачи, а специалистам — зарабатывать. Я отвечаю за аналитику на стороне специалистов.

Расскажу, как мы ищем аномалии в продукте и зачем это вообще нужно делать.

Что мы считаем аномалией

Покажу на примере. На скрине ниже — карточка заказа в приложении Профи для специалиста. Можно нажать на карту и посмотреть, где именно специалисту нужно выполнить заказ.

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

Каждый раз, когда специалист нажимает на карту, мы видим это в аналитике. Он нажимает сначала на заказ, потом на карту — это базовый сценарий.

Но как-то мы увидели, что в одном и том же заказе специалист за короткий промежуток времени много раз нажимает на карту и выходит. А потом заходит в другой заказ и тоже много раз нажимает на карту.

Мы видим поведение, которое отличается от привычного, — это аномалия.

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

Оказалось, что в этот день мы сломали карту. Она не открывалась, и специалисты нажимали на неё много раз.

Другой пример — в один из дней мы сломали аналитику на экране авторизации. К нам просто перестало приходить одно событие. Но мы смогли быстро это заметить и починить.

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

Чтобы улучшать продукт и оперативно фиксить баги, мы стали искать эти аномалии. Но сначала не очень понимали, как это делать.

Почему на технических мониторингах не всегда отображаются аномалии

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

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

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

Почему отслеживать аномалии по графику событий — плохая идея

На Профи зарегистрировано более 2,5 миллионов специалистов. За прошедший октябрь мы записали более 400 миллионов событий от 382 тысяч уникальных пользователей, а уникальных событий было 284. Следить за графиком каждого события вручную — нереально. Нужен был детектор аномалий, который в итоге мы написали сами.

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

Что за детектор аномалий

Это бот в Slack, который каждый день анализирует миллионы событий и подробно показывает, что у нас происходит с продуктом. Если он видит, что каких-то событий стало слишком много или слишком мало, то выводит картинки в чат. После этого можно пойти посмотреть, что именно произошло.

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

Но бота было мало…

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

Чтобы эту рутину не делать каждый раз, я сделал дашборд по аномалиям. В нём можно выбрать нужное событие и посмотреть, в какой момент они появляются. Можно сделать это в разрезе вертикалей или новых релизов.

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

Как работает поиск аномалий технически

  • Каждый день в 6 утра запускается скрипт на питоне, который выгружает из ClickHouse все события за последние 6 недель, предварительно агрегируя их по часам в разрезе платформы, события и уникальных для этого события параметров (их список есть в виде словаря внутри самого скрипта).
  • Данные предобрабатываются и анализируются на предмет аномалий с помощью библиотеки ADTK.
  • Если видим, что за прошедшие сутки наблюдаются аномалии, — отрисовываем почасовой график этого события за последние 6 недель.
  • Все аномальные события отправляются в специальный чат в Slack — отдельно «негативные» аномалии, отдельно «позитивные».
  • Все аномальные события «проливаем» в отдельную витрину, на которой строим дашборд по аномалиям. Это нужно, чтобы быстро узнать точное время возникновения аномалии, масштаб, какие версии приложения затрагивает, на каких вертикалях наблюдается и т.д.

В большинстве случаев такой дашборд позволяет понять первопричину аномалии минут за 10, не больше. Однозначно будем продолжать его развивать: добавлять ещё больше графиков, детализации и новые виды трекинга.

Надеюсь, наш кейс был полезен.

12
2 комментария

Супер! Очень интересно.

Все события храните в кликхаусе?

Ответить

Да. Всё, что касается логирования пользовательских действий пишем в ClickHouse.

Ответить