Управление монитором из уведомления — теперь в один тап
Когда мониторинг присылает алерт о падении сайта, важна не только информация «что упало», но и скорость, с которой инженер может что-то с этим сделать: посмотреть последние проверки, поставить монитор на паузу, проверить, нет ли уже открытого инцидента, отключить дублирующее уведомление другому каналу. До недавнего времени из уведомлений Tracker.ru вы попадали на общий список мониторов в кабинете — и дальше нужно было вручную искать тот самый URL или heartbeat-монитор по списку. Это съедало секунды, которых в инциденте не бывает лишних.
С обновлением #618 мы добавили во все каналы уведомлений (Telegram, Email, Webhook) deeplink — прямую ссылку на страницу управления конкретным монитором. Один тап — и вы сразу там, где нужно. Ниже разбираемся, где это видно, как работает, и как использовать новое поле manage_url в webhook-обработчике.
Что изменилось в каналах уведомлений
В трёх основных каналах теперь приходит ссылка вида /my/urls/{id} для URL/TCP-мониторов и /my/heartbeats/{id} для heartbeat-мониторов.
Telegram. В сообщениях о падении (HostDown), восстановлении (HostRecovery), а также для TCP-мониторов и heartbeat-мониторов появилась дополнительная строка под основным контентом:
😱Сайт недоступен! https://example.com
Status: 500 Internal Server Error
Ошибка: Internal Server Error
Недоступен с 2026-05-06 10:00:00
[⚙️ Управление](https://tracker.ru/my/urls/42)
Кнопка-ссылка отрисовывается клиентом Telegram как обычный кликабельный текст. На мобильном это один тап и переход в браузер; на десктопе — клик откроет страницу в системном браузере, где уже залогинен ваш кабинет.
Email. В письмах кнопка «Открыть дашборд» теперь ведёт на конкретный монитор, а не на общий список. Шаблоны писем не менялись — изменился только источник URL: теперь он строится по тому же правилу, что и в Telegram. Это касается и URL-мониторов, и heartbeat-мониторов, и SSL-уведомлений, и APDEX-алертов, и даже отложенных писем «не пингуете давно» (URL-reminder и heartbeat-reminder).
Webhook. В JSON-payload добавлено новое поле manage_url — абсолютный URL на страницу монитора в кабинете. Ниже подробно разберём, как это использовать.
Что именно в URL: правильные маршруты SPA
Если вы привыкли заходить в кабинет через /my/checks/... или другой устаревший путь — обратите внимание: фактически все страницы мониторинга в кабинете живут по другим маршрутам. Деплинки в уведомлениях используют именно те адреса, по которым реально работает Vue SPA /my/*:
- URL-мониторы и TCP-мониторы —
/my/urls/{id}. Это страница конкретного монитора с историей проверок, графиком отклика, инцидентами и настройками. - Heartbeat-мониторы —
/my/heartbeats/{id}. Это страница heartbeat-монитора, на которую вы пингаете извне (cron, вебхук от планировщика, скрипт). Там видно последние пинги, текущие интервалы, токен.
База URL берётся из переменной окружения HOST Go-воркера. На продакшене это https://tracker.ru, поэтому итоговый адрес выглядит, например, как https://tracker.ru/my/urls/42 или https://tracker.ru/my/heartbeats/17. Если по какой-то причине HOST не задан (нештатная конфигурация), мы не подставляем сломанные относительные ссылки — деплинк просто опускается, и сообщение приходит в прежнем виде.
Webhook payload: поле manage_url
Если вы интегрировали Tracker.ru со своими системами через webhook (Slack-бот, Mattermost, корпоративный CRM, Incident.io, любой кастомный обработчик) — теперь во входящем JSON есть дополнительное поле:
{
"event": "url.down",
"url": "https://example.com",
"url_id": 42,
"manage_url": "https://tracker.ru/my/urls/42",
"status": 500,
"error": "Internal Server Error",
"occurred_at": "2026-05-06T10:00:00Z"
}
Поле появилось во всех webhook-событиях, привязанных к URL-монитору: url.down, url.recovery, ssl.expiring, ssl.renewed, apdex.degraded, apdex.recovered, а также в reminder-событиях для URL-мониторов. Поле опциональное (omitempty): если на сервере по какой-то причине не задана переменная HOST, поле в JSON отсутствует. Существующие webhook-обработчики продолжат работать как раньше — мы не сломали backward compatibility, просто добавили опциональное удобство.
Что это даёт на практике. Если вы пишете обработчик webhook'а для Slack или Mattermost, теперь не нужно вручную собирать ссылку из url_id и хардкодить базу домена в коде. Берёте manage_url из payload и сразу кладёте в кнопку сообщения. Если используете incident management (PagerDuty, Opsgenie, Incident.io) — это поле можно положить в metadata инцидента, и оно автоматически появится в карточке инцидента как ссылка на «дашборд монитора в системе мониторинга».
Пример: бот в Slack или Mattermost
Покажем минимальный пример приёма webhook'а на Node.js + Slack Webhook URL. Цель — поставить в Slack-сообщение кнопку «Открыть монитор», которая ведёт прямо в кабинет Tracker.ru.
import express from 'express';
import fetch from 'node-fetch';
const app = express();
app.use(express.json());
app.post('/tracker-webhook', async (req, res) => {
const { event, url, manage_url, status, error } = req.body;
if (event !== 'url.down') return res.sendStatus(200);
await fetch(process.env.SLACK_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
text: `🚨 Сайт ${url} недоступен (${status})`,
blocks: [
{ type: 'section', text: { type: 'mrkdwn', text: `*${url}* — ${error}` } },
{
type: 'actions',
elements: [
{
type: 'button',
text: { type: 'plain_text', text: '⚙️ Открыть монитор' },
url: manage_url,
style: 'primary',
},
],
},
],
}),
});
res.sendStatus(200);
});
app.listen(3000);
Когда Tracker.ru пришлёт webhook о падении — ваш бот соберёт Slack-сообщение с кнопкой Открыть монитор. Один клик в Slack — и инженер уже на странице монитора в кабинете. Раньше для такой же кнопки нужно было самому собирать https://tracker.ru/my/urls/${url_id} в коде обработчика и держать там домен и формат маршрута. Теперь это пришло вместе с payload'ом.
Аналогичный пример легко реализуется на Python, Go, PHP — структура та же: вытащили поле, положили в кнопку. Не забудьте только проверять подпись HMAC-SHA256, как описано в документации к настройке webhook.
Что меняется на практике
Если кратко описать, для каких сценариев это улучшение реально полезно:
Дежурный инженер в чате. В команде есть Telegram-канал «алерты», куда падают уведомления. Когда что-то упало, инженер раньше открывал десктоп-приложение, переключался на вкладку браузера с кабинетом, вспоминал, какой именно из 30 мониторов упал, искал его в списке. Теперь — тап по ссылке ⚙️ Управление, и вы там. На мобильном из лежащего на столе айфона это занимает 2-3 секунды.
Утренний обзор писем. Маркетолог утром просматривает почту и видит, что ночью SSL-сертификат на одном из лендингов начал истекать. До этого письмо вело на общий дашборд, и нужно было найти, на какой именно URL начался отсчёт. Теперь кнопка в письме ведёт на конкретный монитор — со страницы видно историю SSL-проверок, дату срока годности и контактный список для уведомлений.
Кастомный Slack-бот в DevOps-команде. Команда уже завернула webhook в собственный обработчик и держит ссылки на монитор в Slack-сообщениях, собирая их из url_id и константы домена. После обновления можно убрать эту логику — просто прокинуть manage_url напрямую. Меньше кода — меньше поверхности для багов вроде «забыл обновить домен после переезда».
Heartbeat для cron-задач. Если вы используете heartbeat-мониторинг для cron-задач, скрипты в Yandex Cloud Functions, AWS Lambda или просто ноутбука админа, и monitor «протух» (не пинговали), то теперь из уведомления вы попадаете не на общий список heartbeat'ов, а сразу на страницу того самого, который упал. Видно последний пинг, токен, интервалы — всё в одном месте.
Связанные возможности
Несколько ссылок на смежные документы, если вы только начинаете работать с уведомлениями Tracker.ru:
- Webhook'и — как настроить: URL приёма, секрет, проверка HMAC-SHA256, retry-логика. Обновлены примеры payload — добавлено поле
manage_url. - Telegram — подключение бота: через
@trackerru_bot, привязка чатов и каналов. В сообщения о падении/восстановлении теперь добавлена строка с deeplink на монитор. - Email — настройки уведомлений: SMTP, форматы, тихие часы. Кнопка «Открыть дашборд» теперь ведёт на конкретный монитор.
- MAX — уведомления через мессенджер MAX: подключение чата, ограничения платформы. Доступно всем без привязки к тарифу.
- Heartbeat-мониторинг — гайд: когда использовать вместо URL-мониторинга, как пинговать (HTTP GET), формат токена.
- Multi-region мониторинг — фича-страница: проверки из Москвы, Европы и Казахстана. Полезно знать, если хочется, чтобы статус монитора учитывал результаты со всех трёх регионов.
Если вы сравниваете Tracker.ru с другими сервисами, посмотрите обзор Monitorus — это российский сервис мониторинга с историей с 2011 года, отличная точка для сравнения по сценариям.
Граничные случаи и совместимость
Несколько уточнений по поведению, которые могут пригодиться при настройке интеграций.
Старые webhook-обработчики. Поле manage_url опциональное: если ваш обработчик не ожидает его, ничего не сломается — он просто будет игнорироваться. Если же ваш парсер строгий (на JSON Schema, например), убедитесь, что схема разрешает дополнительные поля, иначе уведомление будет отклонено до доставки в обработчик. У нас, как правило, такой проблемы не бывает — но проверить стоит.
Heartbeat и webhook. На текущий момент webhook-уведомления для heartbeat-мониторов не отправляются: эта функциональность на Go-стороне обработана как «логируем, но не доставляем». Поле manage_url для heartbeat в webhook не появится, потому что само событие не уходит. Уведомления о heartbeat-мониторах вы получаете в Telegram, Email и MAX — там deeplink работает как ожидается.
SSL и APDEX webhook'и. Эти события привязаны к URL-монитору, и поле manage_url в них есть. Если вы интегрировали Tracker.ru с системой управления SLA или капасити-мониторингом — теперь в payload apdex.degraded приходит и ссылка на конкретный URL.
Reminder-уведомления. Это «напоминающие» письма для давно неактивных мониторов. URL-reminder содержит ссылку на конкретный URL-монитор, heartbeat-reminder — на heartbeat-монитор. Поведение симметрично уведомлениям о падении.
Замена доменов и SSO. Если у вас собственный домен для кабинета или SSO-обвязка через корпоративный Identity Provider, manage_url строится из HOST Go-воркера. После клика по ссылке ваш браузер пройдёт обычную SSO-цепочку, как при заходе через адресную строку. Никаких специальных одноразовых токенов в ссылках мы не подкладываем — это сознательное решение, ссылка всегда работает «как обычная закладка». Поведение не отличается между тарифами; функциональность доступна на всех планах одинаково.
Что дальше
Это техническая доработка, точечно убирающая трение в одном из самых частых сценариев — «получил алерт, нужно действовать». Никаких новых тарифных условий, никаких новых ограничений: на всех тарифах, во всех каналах, и в Москве, и в Европе, и в Казахстане. Если у вас уже подключены уведомления — обновление работает автоматически после деплоя; никаких миграций или ручных переключений.
Если вы пока не пользуетесь Tracker.ru — попробуйте сами и сравните самостоятельно: подключите URL-монитор или heartbeat, дождитесь первого алерта, и убедитесь, что один тап действительно экономит время.
Если у вас уже есть webhook-обработчик и вы используете в нём ссылку на монитор — обновите код, чтобы брать manage_url напрямую из payload вместо самостоятельной сборки из url_id и домена. Это упростит ваш код, и при будущих изменениях маршрутов SPA в кабинете не придётся править интеграции — поле всегда содержит актуальный URL.
Если что-то в новых ссылках не работает — напишите в поддержку, мы оперативно разберёмся.