Сбор статистики

Модуль сбора статистики позволяет собирать показатели одной из основных метрик по заданным условиям, фильтровать и агрегировать собранные данные. Это позволяет отслеживать метрики, которых нет в общей статистике по трафику.

Чтобы начать собирать статистику, необходимо создать сборщик статистики, который определяет правила агрегации и фильтрации данных.

 

Основной показатель — метрика, по которой будет строиться статистика. Доступны метрики:

  • количество запросов
  • время до первого байта (TTFB)
  • объем трафика

 

Собранные значения группируются по одному из 11 параметров группировки с использованием функции агрегации.

Группировка динамических URL

Для параметра URL доступна опция агрегации группировать динамические URL, которая заменяет цифры, hash и UUID (если они занимают целый сегмент URL) на плейсхолдеры.

Пример:

example.com/users/123e4567-e89b-12d3-a456-426655440000
→
example.com/users/{uuid}
------------------------------------------------------
example.com/goods/1341231/buy
→
example.com/goods/{number}/buy
------------------------------------------------------
example.com//1341231/buy
→
example.com/goods/{number}/buy

 

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

Например, если в сборщике метрики TTFB задана выборка 10 наименьших, каждый период обновления статистики (2 раза в минуту) будут сохранены 10 записей с наименьшим значением TTFB.

 

Фильтрация — необязательный шаг, который происходит еще на этапе сбора данных. Каждая запись в «сырой» статистике проверяется по заданными условиями и, если не соответствует им, отбрасывается и не учитывается в итоговой статистике. Это позволяет собирать статистику точечно — например, только по запросам на конкретный URL из конкретной страны.

В настройках фильтрации можно использовать условия из нескольких параметров (логическое И) и добавлять несколько условий (логическое ИЛИ).

Условие состоит из параметра (1), оператора (2) и значения параметра (3).

Условие фильтрации: добавлен параметр адрес (URL address) с оператором содержит (contains) и значением /user/profile

Каждое условие сверяет параметр запроса с его значением используя оператор. Если условие правдиво (оператор возвращает true), запрос будет учитываться в статистике.

Кнопкой Добавить AND можно добавить еще один параметр к условию. В статистике будут учтены только те запросы, для которых выполнены все параметры в условии (логическое И).

Кнопка Добавить OR создает новое условие (группу параметров). Когда в сборщике есть несколько условий, в статистике будут учтены только те запросы, для которых правдивы все параметры из хотя бы одного условия (логическое ИЛИ).

Список доступных параметров фильтрации с их значениями и операторами:

Название параметраОписаниеВозможные значенияОператоры
версия HTTPверсия протокола HTTPHTTP/2  
HTTP/1.1  
HTTP/1.0  
HTTP/0.9
in
протокол URLпротокол, указанный в схеме URL запросаHTTP, HTTPSin
тип HTTP-запросатип HTTP-запроса, который указывает, какое желаемое действие выполнится для данного ресурсаGET  
HEAD  
POST  
PUT  
DELETE  
CONNECT  
OPTIONS  
TRACE  
PATCH
in
адрес (URL address)часть URI-адреса запроса equals  
in  
contains  
startsWith  
endsWith
домен (Host)HTTP-заголовок Host — содержит имя домена, для которого предназначен запрос equals  
in  
contains  
startsWith  
endsWith
IP-адрес назначенияIP-адрес, на который был направлен запрос (в результате DNS-резолва или самим пользователем) in
User-AgentHTTP-заголовок, который содержит информацию о ПО клиента и его устройстве equals  
in  
contains  
startsWith  
endsWith  
exists
странакод страны (ISO 3166-1 alpha-2), из которой поступил запросСм. ISO 3166-1 alpha-2in
номер ASномер AS,  из которой получен запрос in
решение защитырешение о блокировке или пропуске запроса, принятое системой фильтрации«Пропустить», «Заблокировать»equals
код ответаHTTP-код, отправленный сервером или CDN, который описывает результат выполнения запроса in

 

Допустим, мы хотим собрать статистику TTFB по URL, чтобы узнать, какие страницы сайта загружаются медленнее всего. При этом нам важно учитывать только запросы из стран, для которых мы оптимизируем доставку контента, а также исключить запросы из собственной сети 10.0.0.0 /24.

Создадим и настроим сборщик статистики.

  1. Добавим название сборщика, по которому будет понятно, какую статистику он собирает. Например, «Наибольший TTFB по URL»
  2. Выберем показатель Время до первого байта (TTFB)
  3. Назначим функцию агрегации AVG — среднее арифметическое, чтобы собирать усредненные значения TTFB по каждой странице
  4. Выберем признак группировки — адрес (URL path). Здесь можно активировать опцию Группировать динамические URL: тогда, например, все URL вида example.com/user/13231/dashboard/123e4567-e89b-12d3-a456-426655440000 будут сгруппированы вместе в записи example.com/user/{number}/dashboard/{uuid}. Это позволит собирать статистику по страницам одного типа с разными URL
  5. Установим выборку 10 наибольших значений, чтобы отслеживать страницы с самым высоким, то есть самым плохим показателем TTFB
  6. При необходимости можно настроить фильтрацию, чтобы собирать статистику только по запросам из стран, для посетителей из которых мы стараемся оптимизировать доставку контента. Также добавим условие, которое исключит запросы из служебной сети 10.0.0.0 /24

После сохранения правила начнет собираться статистика по заданным параметрам. Ее можно посмотреть в виде графика и топа значений — для этого выберите опцию Статистика в контекстном меню сборщика

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

 

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

Допустим, за 30 секунд к нашему example.com поступили такие запросы:

Логи доступа с URL, ASN, страной, IP, методом HTTP, версией HTTP, URL-схемой и значением TTFB

Сначала с помощью фильтров (аналог WHERE в SQL) будут удалены все запросы, которые не должны попасть в статистику:

Логи доступа с URL, ASN, страной, IP, методом HTTP, версией HTTP, URL-схемой и значением TTFB. Запросы, которые не подходят под условия фильтрации, закомментированы (будут удалены)

После этого записи будут агрегированы (аналог GROUP_BY в SQL) по URL с помощью функции агрегации. Мы задали функцию AVG, то есть несколько запросов с одним URL будут объединены в одну запись. TTFB для этой записи будет равен среднему TTFB сгруппированных запросов. Все лишние параметры на этом этапе отбрасываются:

Сводная таблица, запросы сгруппированы по URL, для каждого URL вычислен средний TTFB

Последние операции — сортировка и обрезка в соответствии с настройками выборки. В нашем сборщике установлена выборка 10 наибольших значений, поэтому записи будут отсортированы в порядке возрастания, а все записи после 10-ой — отброшены:

Сводная таблица, записи сортированы по убыванию значения TTFB. Топ-10 записей подсвечены, остальные закомментированы (будут удалены)

Полученные таким образом записи отобразятся в статистике в личном кабинете. Чтобы посмотреть ее, откройте меню сборщика ( ) и выберите пункт Статистика.

Записи из сводной таблицы на графике в личном кабинете