Мониторинг URL коротких ссылок Elido в Datadog строится на двух источниках. Сам Elido отправляет данные о кликах: по одному логу на клик в Datadog Logs и три метрики количества кликов, отправляемые каждые 60 секунд. Задержку редиректа и коды состояния он не отправляет. Для них направьте HTTP-тест Datadog Synthetics на короткую ссылку-канарейку, а дашборд задержки редиректа, мониторы и SLO постройте поверх этой пары источников.
В этом и заключается вся архитектура. Часть с кликами показывает, сколько людей перешли по вашим ссылкам и откуда, а синтетическая часть - ответил ли редирект, насколько быстро и с правильным ли статусом. В этой статье разобраны точные форматы метрик и логов, их подключение, содержимое дашборда и границы такого подхода.
Если вы пришли из-за задержки, сначала прочитайте статью как работает бюджет p95 менее 15 мс. В ней объясняется, как выглядит здоровое значение, прежде чем вы выберете порог.
Что именно Elido отправляет в Datadog
Каждый клик в подключённой рабочей области проходит по двум путям. По пути логов сразу после записи клика отправляется пакет с одной записью на https://http-intake.logs.<site>/api/v2/logs. По пути метрик увеличивается счётчик в памяти, а затем отправитель раз в минуту передаёт значения на https://api.<site>/api/v2/series. В обоих случаях для аутентификации используется заголовок DD-API-KEY.
| Сигнал | Имя в Datadog | Периодичность | Теги и поля |
|---|---|---|---|
| Лог клика | source:elido, сообщение начинается с link_click | Один на клик | workspace_id, link_id, slug, country, device, destination, ip, timestamp |
| Количество кликов | elido.clicks | Каждые 60 с | workspace_id, vendor:elido |
| Клики по странам | elido.clicks_by_country | Каждые 60 с | выше плюс country |
| Клики по устройствам | elido.clicks_by_device | Каждые 60 с | выше плюс device |
Метрики имеют тип gauge, а их значение - количество кликов, подсчитанных с момента предыдущей отправки. Поэтому точка со значением 37 означает примерно 37 кликов за последнюю минуту. Это естественная единица для операционного графика: для получения итогов нужно суммировать значения по времени, а не применять as_count(). Обратите внимание, чего здесь нет: у метрик отсутствуют теги link_id и slug. Я считаю это разумным решением с точки зрения расходов, потому что Datadog выставляет счёт за пользовательские метрики для каждой уникальной комбинации тегов, а тег slug в активно используемой рабочей области умножил бы количество рядов на число ссылок.
Поля логов приходят вложенными в объект attributes, поэтому в Log Explorer фасеты выглядят как @attributes.slug и @attributes.country. Перед тем как что-либо строить, раскройте один лог. Десять секунд сейчас сэкономят время и избавят от сломанного запроса.
Подключение Datadog в рабочей области Elido
Для настройки нужны два поля. Вам понадобятся API-ключ Datadog (не ключ приложения) и сайт, на котором работает ваша организация.
- В Datadog откройте Organization Settings, затем API Keys и создайте ключ с именем вроде
elido-forwarder. - Проверьте свой сайт. В руководстве по сайтам Datadog каждому URL входа соответствует сайт:
app.datadoghq.euозначает, что нужно ввестиdatadoghq.eu, аus5.datadoghq.com- в точности это значение. - В Elido откройте Integrations, выберите Datadog, вставьте ключ, укажите сайт и сохраните настройки. Ключ шифруется при хранении.
- Подождите до пяти минут: отправитель кэширует настройки интеграции рабочей области. Затем откройте одну из своих ссылок с телефона и найдите
source:elidoв Log Explorer.
Если оставить сайт пустым, Elido подставит datadoghq.com. Для организации из ЕС это классическая тихая ошибка. Опечатка даёт тот же результат. Каждый POST завершается ошибкой, а никто её не видит.
Кнопка Test connection отправляет один тестовый лог с пометкой elido_test: true на ваш сайт Datadog и показывает ответ Datadog, поэтому неправильный ключ или сайт сразу приводят к ошибке 403 Datadog. Успешная проверка доказывает, что ключ работает, но не то, что ваши конвейеры и индексы сохраняют логи, поэтому настоящим подтверждением по-прежнему остаётся появившийся лог клика. То же правило действует для отправителя кликов Mixpanel: был реальный клик - значит, событие произошло.
Создание дашборда задержки редиректа, который измеряет сам переход
Поскольку Elido не отправляет значения времени, данные о задержке должны поступать от инструмента, который выполняет запросы. Подходящим инструментом будет HTTP-тест Datadog Synthetics: он измеряет то, что ощущает посетитель, включая DNS и TLS.
Вот такой тест я настраиваю в каждой рабочей области:
- URL: отдельная ссылка-канарейка, в идеале на вашем пользовательском домене, ведущая на что-нибудь скучное и стабильное.
- Переходить по редиректам: выключено. Если включить эту настройку, вы будете измерять целевую страницу, а медленное главное изображение разбудит вас в 3 часа ночи из-за редиректа, который работал нормально.
- Проверки: код состояния равен 302 (значение по умолчанию; используйте 301 или 307, если настроили именно его, а статья 301 против 302 объясняет компромисс), заголовок
locationсодержит адрес назначения, а время ответа ниже порога. - Расположение: не менее трёх, включая один регион ЕС, где находится ваша аудитория. Запускайте каждую минуту.
- Заголовок:
User-Agent, содержащийbot, чтобы Elido считал пробу ботом и пропускал событие клика.
Выбирайте порог по наблюдениям за неделю, а не по статье в блоге. Синтетические измерения включают собственный сетевой путь пробы, поэтому проба на другом континенте никогда не даст тот же результат, что и проба в вашем регионе, и это нормально. Вам нужна линия, которая остаётся ровной.
Дашборду понадобятся четыре виджета. Время ответа по расположениям в виде временного ряда синтетического теста. Доля успешных проверок. Клики в минуту из elido.clicks. И список стран с наибольшими значениями.
# Clicks per minute across the workspace (gaps become zeros)
default_zero(sum:elido.clicks{workspace_id:42})
# Hourly click totals
sum:elido.clicks{workspace_id:42}.rollup(sum, 3600)
# Top 10 countries over the dashboard window
top(sum:elido.clicks_by_country{workspace_id:42} by {country}, 10, 'sum', 'desc')
Зачем нужен default_zero? Потому что минута без кликов вообще не создаёт точки, и без функции интерполяции Datadog проводит прямую линию через разрыв. Эта линия врёт.
Мониторы падения трафика и сломанных коротких ссылок
Три монитора покрывают большинство проблем со ссылками, и каждый использует отдельный источник. Именно здесь разделение из первого раздела приносит пользу.
Редирект сломан или работает медленно. Синтетический тест уже является монитором. Оповещайте, когда за один запуск не проходят проверку два или более расположения, чтобы нестабильный регион одной пробы никого не будил. Любой ответ, кроме вашего 302, не проходит проверку статуса, поэтому удалённая, просроченная или приостановленная ссылка-канарейка проявится здесь как 404 или 410.
Трафик остановился. Создайте монитор метрики для sum:elido.clicks{workspace_id:42} и включите уведомление об отсутствии данных через, например, 30 минут. Поскольку Elido ничего не отправляет в тихую минуту, «нет данных» здесь действительно означает «нет кликов» - именно это и нужно обнаружить во время кампании.
Трафик ведёт себя необычно. Монитор аномалий для той же метрики с направлением ниже поймает ситуацию, когда кампания обычно получает 4 000 кликов в час, а внезапно получает 200. Я трижды видел такую картину, и каждый раз причина находилась за пределами ссылки: объявление отклонили, рассылку отправили не тому сегменту, QR-плакат оказался за строительными лесами. Дайте системе пару недель истории, прежде чем доверять её диапазонам.
Нужно оповещение для каждой ссылки? Метрики этого не умеют, а логи умеют. Создайте метрику на основе логов из source:elido, сгруппировав данные по @attributes.slug, и получите количество кликов для каждого slug, за которым можно следить. Ограничьте её отфильтрованным набором slug кампаний, иначе расходы на кардинальность вернутся через чёрный ход.
SLO, который можно обосновать
Цель уровня сервиса для короткой ссылки имеет смысл только тогда, когда её источник измеряет редирект. Постройте её на синтетическом тесте. SLO на основе монитора с этим единственным тестом в качестве монитора решает задачу.
Я бы начал с 99,9% за 30 дней. Это примерно 43 минуты неудачных проверок в месяц, и такой бюджет можно объяснить руководителю маркетинга одним предложением. Не стройте его на объёме кликов. Клики измеряют спрос, а не работоспособность: ссылка, по которой никто не кликает, прекрасно доступна.
Если вам не хватало ровной линии на виджете этого SLO, создайте рабочую область, направьте канарейку на собственный домен и запускайте её неделю, прежде чем задавать целевое значение.
Elido на собственном хостинге: сбор счётчиков редиректов
При самостоятельном размещении появляется ещё один источник. Сервис редиректов предоставляет эндпоинт Prometheus по адресу /metrics, а проверка OpenMetrics агента Datadog может собирать с него данные. Полезный ряд - это elido_edge_redirect_total, счётчик с метками fleet и outcome, где возможны результаты ok, notfound, expired, paused и error.
Это даёт то, чего нет в SaaS-интеграции: реальную долю 404 для всего трафика, рассчитанную как notfound от общего количества. Второй счётчик, edge_redirect_clicks_filtered_bot_total, показывает, сколько редиректов было обслужено для ботов без события клика. Однако на этом эндпоинте нет гистограммы задержки. Задержка по-прежнему поступает из Synthetics, независимо от того, используется собственный хостинг или нет. В руководстве по самостоятельному размещению Elido в k3s описано, где этот эндпоинт находится в развёртывании.
Где заканчиваются возможности интеграции Datadog
Теперь об ограничениях, которые, скорее всего, проявятся первыми.
Доставка выполняется по мере возможности. Неудачный POST лога получает одну повторную попытку через секунду, после чего запись отбрасывается. Неудачная отправка метрик вообще не повторяется: эта минута потеряна, а следующее окно начинается с чистого листа. Считайте elido.clicks линией тренда и сверяйте итоги с собственной аналитикой кликов Elido, которая является источником истины.
В логах передаются IP посетителя и полный URL назначения, включая UTM-теги. Если ваша организация Datadog находится в США, это персональные данные, покидающие ЕС, а руководство по локализации данных в ЕС для маркетинговых команд объясняет, как оценить этот риск. Как минимум выберите сайт ЕС, если он вам доступен.
Стоимость логов растёт вместе с числом кликов: на каждый клик приходится один принятый лог. Вирусная ссылка создаёт вирусный счёт. Фильтры исключения или метрика на основе логов в сочетании с индексом короткого хранения помогут удержать расходы под контролем.
И область охвата здесь - клики. Нет событий создания ссылок, конверсий, задержки и кодов состояния. Если честно, я не уверен, что отправитель кликов вообще должен передавать задержку: проба, которая измеряет её извне, всё равно является более правдивым свидетелем.
Прочитайте основную статью → Как добиться p95 менее 15 мс для редиректов
Похожие материалы в блоге
- Отслеживание ссылок в Mixpanel - тот же отправитель кликов, направленный в продуктовую аналитику.
- Стратегия кэширования URL-редиректов - почему задержка редиректа выглядит именно так.
- Стратегия предотвращения битых ссылок - что делать после срабатывания монитора 404.
- Клики по коротким ссылкам и сеансы GA4 - почему количество кликов и сеансов в аналитике не совпадает.
- Серверное отслеживание через редиректы в GA4 - серверные события кликов, отправляемые вместо этого в Google.
- Отслеживание ссылок в Klaviyo - тот же отправитель кликов, передающий каждый клик в Klaviyo.
Частые вопросы
Можно ли мониторить короткие ссылки в Datadog?
Да, с двух сторон. Elido пересылает каждый клик в Datadog как лог и отправляет количество кликов за минуту в виде метрик, что покрывает объём трафика. Для доступности и задержки добавьте HTTP-тест Datadog Synthetics для короткой ссылки-канарейки: он измеряет редирект извне, так, как его воспринимает посетитель.
Какие метрики Elido отправляет в Datadog?
Три метрики типа gauge, отправляемые раз в минуту для каждой рабочей области: elido.clicks с количеством кликов за интервал, elido.clicks_by_country с тегом страны и elido.clicks_by_device с тегом устройства. Все они содержат теги workspace_id и vendor:elido. Кроме того, каждый клик отправляется как лог с source elido.
Отправляет ли Elido задержку редиректа в Datadog?
Нет. Интеграция отправляет клики, а не значения времени, и в полезной нагрузке нет метрики задержки или кода состояния. Вместо этого постройте дашборд задержки редиректа на базе HTTP-теста Datadog Synthetics, отключив переход по редиректам, чтобы отображаемое время ответа относилось только к переходу редиректа, а не к вашей целевой странице.
Какой сайт Datadog должна использовать рабочая область из ЕС?
Используйте сайт, на котором находится ваша организация Datadog, указав его как домен без протокола, например datadoghq.eu для сайта ЕС. Если оставить поле пустым, Elido подставит datadoghq.com, сайт США, и организация из ЕС не увидит данные, которые попадут туда.
Почему метрика кликов Elido показывает отсутствие данных, а не ноль?
Elido отправляет точку только за ту минуту, когда в рабочей области был хотя бы один клик. В тихую минуту точка вообще не создаётся, поэтому Datadog показывает разрыв. Оберните запрос в default_zero() на дашбордах, а для обнаружения полной остановки трафика используйте оповещение об отсутствии данных.
Считаются ли синтетические проверки Datadog кликами в Elido?
Могут. Elido пропускает событие клика для User-Agent, совпадающих с его списком ботов, например содержащих слово bot или относящихся к распространённым HTTP-библиотекам. Укажите в синтетическом тесте пользовательский заголовок User-Agent со строкой bot и направьте тест на отдельную ссылку-канарейку, чтобы пробы не завышали показатели кампании.
Попробуйте Elido
Вставьте URL - получите короткую ссылку
Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.
Бесплатно, без регистрации · 2 в день