Показатели отказов являются ключевым показателем для отслеживания качества и полезности контента на вашем сайте. Используя New Relic для измерения показателей отказов с течением времени, вы можете увидеть, как изменения на вашем сайте, включая изменения в эффективности вашего сайта, могут влиять на первые впечатления ваших посетителей.
Использовать New Relic довольно просто, чтобы отслеживать показатели отказов для приложения Rails. Для начала все, что вам нужно, это полупостоянный кеш, такой как Redis. Вот как это сделать.
Пометка хитов по посетителям
Отслеживание уникальных посетителей имеет решающее значение для расчета показателя отказов. Для начала вам необходимо установить уникальный идентификатор для каждого посетителя на вашем сайте. В этом посте мы предполагаем, что у вас есть значение visitor_id, представляющее уникального посетителя.
Теперь нам нужно пометить каждый запрос страницы в нашем приложении Rails идентификатором посетителя. Самый простой способ сделать это — добавить before_filter в контроллер приложения. Вот пример:
class ApplicationController < ActionController::Base before_filter :mark_hit_by_visitor def mark_hit_by_visitor visitor_id= record_hit visitor_id end end
Отслеживание
попаданий в Redis Вот где Redis входит. Мы будем использовать Redis HASH для отслеживания попаданий в наше приложение. Мы делаем это с помощью команды Redis HINCRBY. Посмотрите на реализацию record_hit:
# # Connect to your Redis instance # def redis @redis||=Redis.new host: “my_redis_server” end # # Record a website hit # def record_hit visitor_id key=”daily_visitors_#{Date.today.strftime('%Y-%m-%d')}” redis.hincrby key,visitor_id,1 redis.expire key,30*24*60*60 # Expire key after 30 days end
Команда Redis HINCRBY требует трех параметров:
* Во-первых, это имя Redis, которое мы используем для хранения хэша. Используйте имя, содержащее день, чтобы каждый день генерировать новый хэш, чтобы отслеживать результаты по дням.
* Второй — это ключ хеша. Используйте visitor_id как ключ к хешу.
* Третье значение хеша. Он представлен целым числом, которое начинается с 0 и увеличивается на указанное количество. В этом случае мы просто хотим записать количество попаданий, поэтому мы увеличиваем их на единицу.
Команда Redis EXPIRE используется для удаления ключей после того, как они больше не нужны. В этом примере мы будем использовать 30 дней.
Агрегирование и отчетность
Теперь у вас есть хэш, представляющий уникальных посетителей сайта в любой день. Чтобы рассчитать скорость привязки, возьмите количество значений в хэше, равное единице, и разделите на общее количество значений в хэше. Вот простой способ сделать это:
def bounce_rate_for_day the_day=Date.today key=”daily_visitors_#{the_day.strftime('%Y-%m-%d')}” vals=redis.hvals key # # Count the number of “1” entries in the vals array. # (note that the results are strings) # num_bounces=vals.count(“1”) num_visits=vals.count # # Return the ratio (as a float). This is the bounce rate # num_bounces.to_f/num_visits.to_f end # Get the bounce rate for yesterday: bounce_rate_for_day(Date.today-1)
Отправка данных в новую реликвию
Далее нам нужно сообщить об этом в новую реликвию. Это легко сделать:
def report_to_newrelic # Get yesterday’s bounce rate (most recent complete day) bounce_rate=bounce_rate_for_day(Date.today-1) # Upload it to New Relic ::NewRelic::Agent.agent.stats_engine. get_stats_no_scope('Custom/Visitor/BounceRate'). record_data_point(bounce_rate) end
Эта процедура берет показатель отказов за предыдущие дни и загружает его в New Relic в качестве пользовательского показателя. Метод get_stats_no_scope — это метод агента New Relic Ruby, который записывает пользовательскую метрику. Значение Custom / Visitor / BounceRate является уникальным именем для этого показателя, используемого в New Relic. (Все созданные пользователем метрики начинаются со слова «Пользовательский».)
Хотя это значение меняется только ежедневно, стоит регулярно сообщать в New Relic как пользовательский показатель. (Таким образом, мы можем получить хорошие, полезные графики.) При использовании New Relic мы часто смотрим на данные за короткий период времени (30 минут), а не за более длительный период времени (дни.) Но мы хотим убедиться, что метрические данные появляются в течение любого периода времени. Это может быть легко выполнено в работе cron. Лично я отправляю данные в New Relic раз в минуту, поэтому у меня есть действительные данные независимо от того, какой временной интервал я выбрал в продукте. Немного излишне, но стоимость минимальна.
Создание пользовательской панели инструментов
Теперь, когда данные попадают в New Relic, давайте создадим диаграмму, где мы сможем их просмотреть. Сначала мы создадим новую пользовательскую панель инструментов. Вменю Dashboards выберите « Создать пользовательскую панель мониторинга» .
Введите имя для новой панели, выберите макет и нажмите « Создать» .
Далее мы создадим новую диаграмму, заполнив следующую информацию в конфигурации диаграммы:
Обязательно добавьте Custom / Visitor / BounceRate в качестве метрики и выберите Среднее значение в качестве значения и В процентах в качестве числового формата .
Результаты
Как только это будет завершено, вы увидите диаграмму, которая выглядит следующим образом:
Ось Y — это показатель отказов в процентах от посещений. Ось X — это время, которое будет соответствовать указанному выбранному интервалу времени.
Мы можем добавить другие диаграммы на эту же страницу, что позволит нам сравнить показатель отказов с другой датой о приложении, которое было собрано с помощью New Relic (например, задержка загрузки страницы, частота ошибок и т. Д.)