Счётчик включили вчера — его числам ещё нельзя верить
Свежий счётчик показывает числа, похожие на живой трафик: страницы отвечают 200, тесты зелёные, панель заполнена. У нас он соврал четыре раза подряд. Разбираем каждую ложь и даём инструмент, который скажет, каким выводам ваши данные служить не могут.
Потому что счётчик, который только что включили, показывает не трафик, а собственную настройку. Числа при этом выглядят живыми: страницы отвечают 200, набор из 607 тестов зелёный, панель заполнена. Отличить одно от другого можно только замером, и замер надо сделать самому — снаружи это состояние неотличимо от рабочего.
10.08.2026 мы внесли строку, включающую свой счётчик обращений. Код был написан заранее и ждал ровно её. Дальше каждый следующий замер на живом вскрывал новый дефект — четыре подряд, и каждый из них менял числа в панели, не роняя ничего.
Четыре лжи одного счётчика
замер
3 запроса к одной странице
показал: 1 попадание
правда: 3
Строка учёта стояла ПОСЛЕ инициализации кэша, а кэш отдаёт готовую страницу и на этом завершает запрос. До счётчика доходили только промахи кэша — то есть счётчик показывал тем меньше, чем лучше работал кэш.
замер
5 запросов одним клиентом, один User-Agent
показал: 3 «посетителя»
правда: 1
Отпечаток посетителя строился из адреса соединения. За обратным прокси это адрес края сети, и он меняется от соединения к соединению. Ошибка даёт не «всех в одного», а обратное: одного человека во многих.
замер
первые 4 запроса после включения
показал: 4 «посетителя»
правда: 1
Соль отпечатка создавалась при первом обращении. Четыре одновременных запроса не нашли файла соли, каждый выдумал свою и записал — и каждый получил своего «посетителя».
замер
прогон тестов
показал: боевой файл счётчика с 53 обращениями
правда: 0
Список подменяемых путей жил в одном каркасе, а свои дев-серверы поднимают ещё два теста. Они собирали окружение сами и писали мимо подмены — прямо в боевой файл.
Почему это враньё выглядит успехом
Обычная ошибка счётчика представляется так: он что-то теряет, чисел меньше, чем людей. Так было только в первом случае. В двух следующих ошибка работала в обратную сторону: один человек превращался в трёх, а потом в четырёх. Это не выглядит поломкой вообще — это выглядит аудиторией. В четвёртом случае в боевой файл писал наш же прогон тестов, и 53 обращения там тоже трафиком не были.
То есть у свежего счётчика нет даже понятного направления ошибки: он умеет занижать и завышать одновременно, разными механизмами. Пока не сделан замер, неизвестно, в какую сторону смотрит число, а значит любое сравнение «стало больше — стало меньше» на этих данных бессмысленно.
Что из этого следует для любого своего счётчика
- Счётчик обязан стоять ДО кэша. Иначе он показывает тем меньше, чем лучше работает кэш, и расхождение с чужой аналитикой объяснить будет нечем: оба ряда «правильные», а различаются вдвое.
- Адрес посетителя за прокси — не адрес соединения. Проверяется это ровно одним действием: N одинаковых запросов одним клиентом обязаны дать одного посетителя и N попаданий.
- Ленивая инициализация секрета — гонка на первом же трафике. Соль, ключ, идентификатор установки: если он создаётся «когда понадобится», первые одновременные запросы создадут по своему. Лечится перечитыванием файла ПОСЛЕ записи — тогда все сходятся на победившем значении.
- Свой трафик исключается в одном месте на весь набор. Каждая служба с боевым файлом добавляет строку, и если мест запуска дев-сервера несколько, одно из них отстаёт молча. Сторож, который ищет нужную строку в тексте каркаса, тут бесполезен вдвойне: он краснеет на верной правке и зеленеет на сервере, который собрал окружение сам.
Третий дефект нельзя найти потом
Гонка при создании соли — дефект разовый. Он портит ровно те сутки, когда механизм включили, и больше не повторяется никогда: файл уже есть, и второй раз его никто не создаёт. Значит, испорченные сутки останутся в ряду навсегда, а причина к тому времени исчезнет из кода. Найти его можно только сразу — тем самым замером, который делают в день включения и обычно не делают.
Поверка, которую надо повторять
Три из четырёх дефектов ловятся одной строкой:
N одинаковых запросов одним клиентом
→ ровно N попаданий у ОДНОГО посетителя
Повторять её надо после любой правки порядка подключений: порядок здесь несёт смысл, а не стиль. Строка кэша, переставленная на две позиции, не ломает ни одного теста и меняет все числа сразу.
Это тот же класс, что ноль в отчёте
В соседнем разборе описан ноль, который значит «не измеряли», а выглядит как «не было». Здесь то же самое, только хуже замаскировано: числа не нулевые. Ноль хотя бы вызывает вопрос, а «3 посетителя» в первый день не вызывает никакого — это ровно то, чего от нового счётчика и ждёшь.
Практический вывод общий для обоих случаев: у каждого показателя своя дата начала, и она не совпадает с датой, когда счётчик включили. Каждая правка настройки — фильтр своих адресов, склейка поддоменов, новая цель, перестановка порядка — начинает показателю новый ряд. Сравнивать периоды можно только внутри окна, где он собирался по одним и тем же правилам.
Ниже — инструмент, который считает это окно за вас. Он ничего не знает о вашем счётчике и никуда не обращается: считает по датам и по тому, что вы отметите.
Чему ваши данные сейчас служить не могут
Две даты и отметки о том, что уже сделано. Считает браузер: ни одного запроса наружу, ваш сайт инструмент не открывает и адреса не спрашивает.
Что уже сделано
Где инструмент перестаёт быть надёжным
- Он верит отметкам на слово и вашего счётчика не видит. «Настроено» здесь значит «проверено замером»; настройка, включённая в панели, и настройка, которая работает, — разные вещи, и весь разбор выше ровно об этом.
- Он не знает о событиях, которые заводят показателю новую дату начала помимо перечисленных: смена часового пояса, пересчёт задним числом, отсев роботов, выборочный сбор. Случилось такое — отсчёт начинается от него, а не от дня включения.
- Даты он считает по календарю, а сутки берёт целыми. Если ваш счётчик режет сутки по другому поясу, границы дней сдвинутся, и на коротких периодах это заметно.
- Он не заменяет поверку, а только спрашивает, делали ли вы её. Сделать её всё равно придётся руками — она и есть единственное, что здесь проверяет реальность.
Читать дальше
-
Отчёт показывает рост с нуля, а выросло только измерение
Ноль в отчёте бывает двух видов, и они выглядят одинаково. Мы почти опубликовали кейс с ростом с нуля до ста тысяч, где вся цифра была пробелом сбора.
-
Ответ 200, а внутри ошибка: как это ломает интеграции
Проверка «status === 200» пропускает отказы. У нас на этом стояли два сайта и один виджет, и в журнале был ложный диагноз.
Если у вас есть свой счётчик или своё логирование и вы ни разу не сверяли его замером с известным ответом — числа в панели пока говорят о настройке, а не о людях. Мы делаем такую поверку перед любыми выводами о динамике: N одинаковых запросов одним клиентом обязаны дать одного посетителя и N попаданий.
Разбор подготовила QueryPort Engineering. Случай собственный, 10.08.2026, свой счётчик обращений. Нашли ошибку — напишите.