Проверки снаружи, которые не кричат «волки»
Инцидент открывается, когда независимые регионы согласны, эскалируется, если никто не ответил, и молчит во время ваших деплоев.
Один инцидент так, как его видит ваш пейджер
Сбой в одном регионе — это подозрение, а не инцидент. Подтвердите получение, и шаги эскалации остановятся.
- shop.clienta.com не ответил из Франкфурта: подозрение, перепроверяем
- Подтверждено 2 из 2 регионами: инцидент открыт
- Оповещение в Telegram #oncall
- api.clienta.com не ответил только из одного региона: не подтверждено, оповещения нет, осталось в журнале как локальный сбой
ci-nightly-build пинг получен 3 мин назадЭскалация Пример политики
- сразуTelegram #oncall
- +1 минSlack #sre
- +5 минPagerDuty (Agency)
Иллюстративный макет
Три вещи, которые здесь важны
Подтверждено, прежде чем будить
Сбой становится инцидентом, только когда его подтверждают оба региона. Один нестабильный маршрут остаётся в истории локальным сбоем.
Эскалация по вашему графику дежурств
Сначала Telegram, потом Slack и e-mail с задержкой, подписанные webhook — с Pro, PagerDuty — на Agency. Подтвердите где угодно, и остальные шаги остановятся.
Heartbeat для CI и cron
Один curl в конце задачи. Пропущенный пинг или вызов /fail открывает инцидент. Heartbeat начинается со Starter (20); на Agency — 500.
Оповещения приходят туда, где вы уже работаете
E-mail, Discord и Google Chat — на всех тарифах; Slack, Telegram, Teams и Mattermost — с тарифа Starter; webhook — с Pro; Zapier и PagerDuty — на Agency. SMS и голосовых звонков нет.
- Slack
- Telegram
- PagerDuty
- Microsoft Teams
- Mattermost
- Discord
- Webhook
Ночь деплоя от начала до конца
Иллюстративный сценарий, а не история клиента
- Пайплайн через API ставит на паузу нужные мониторы и выкатывает релиз.
- Он запускает одну проверку снаружи, видит успех и снимает мониторы с паузы.
- Один регион на 40 секунд теряет маршрут. Никого не будят: сбой не подтвердился.
- Ночная задача не прислала пинг. Инцидент heartbeat открывается сразу, а Telegram несёт последние строки лога.
За всю ночь один звонок, и настоящий.
Сколько вам стоит час простоя?
Грубая честная цифра, чтобы сравнить её с ценой монитора. Считается в вашем браузере, ничего никуда не отправляется.
Для сравнения: тариф Starter стоит $7 в месяц. Выручка — это не все издержки (время поддержки, реклама, которая продолжает идти, доверие), так что считайте цифру нижней границей.
Ложные тревоги — проблема дежурств, а не мониторинга
Сбой в одной точке проверки Tenium считает гипотезой. Регион, не получивший ответа, помечает монитор подозрительным и просит другие регионы немедленно перепроверить. Инцидент открывается, только когда оба региона сообщают о сбое в окне подтверждения, которое по умолчанию длится 60 секунд. Восстановление подтверждается так же, поэтому сервис, который то работает, то нет, даёт один инцидент с переходами внутри, а не череду уведомлений.
Чтобы было честно: монитор, который вы намеренно привязали к одному региону, пропускает подтверждение и оповещает с первого сбоя, и интерфейс это чётко помечает.
Эскалация, heartbeat и API
Политики эскалации появляются на Pro ($29): Telegram сразу, e-mail основному дежурному через несколько минут без подтверждения, затем второй контакт. PagerDuty и Zapier — на Agency ($59). Heartbeat-монитор работает наоборот: ваша задача вызывает Tenium, а если вызова нет до дедлайна или задача зовёт /fail, открывается инцидент.
Чтобы деплой не будил дежурного, поставьте мониторы на паузу через API (POST /monitors/{id}/pause), выкатите релиз, запустите POST /monitors/{id}/check и снимите паузу. Для записи нужен ключ с правом записи на Pro или Agency.
Heartbeat для cron, CI и пакетных задач
Тише всего ломаются задачи, за которыми никто не следит: ночные резервные копии, продление сертификатов, чистильщики очередей, выгрузки данных, плановый пайплайн, в который никто не заглядывал со времён миграции. Heartbeat-монитор меняет направление: не Tenium вызывает ваш сервис, а ваша задача вызывает Tenium, и если вызова нет к дедлайну, монитор переходит в состояние сбоя.
- Добавьте к задаче один запрос:
curl -fsS -m 10 https://ping.tenium.app/h/abc123 > /dev/null. - Чтобы измерять длительность, вызывайте адрес с суффиксом
/startперед задачей и обычный после неё; задача, которая стартовала и не завершилась, тоже помечается. - Вызывайте
/failв обработчике ошибок, чтобы сразу открыть инцидент с хвостом лога до 10 КБ. - Задайте период и запас времени либо cron-выражение с часовым поясом, чтобы ночная задача в 03:00 не оценивалась по арифметике летнего времени.
Heartbeat начинается со Starter, количество зависит от тарифа: 20 на Starter, 100 на Pro и 500 на Agency. Все суффиксы и форматы запросов описаны в разделах мониторинг cron-заданий и API: heartbeat-мониторы.
Деплои, обслуживание и API
Плановые работы не должны портить аптайм и будить людей. Окна обслуживания, разовые или повторяющиеся, задают в приложении с часовым поясом: они приглушают оповещения и исключают этот период из отчётного аптайма. Для развёртываний из пайплайна REST API даёт POST /monitors/{id}/pause и /resume: задача деплоя ставит нужные мониторы на паузу, выкатывает релиз, запускает POST /monitors/{id}/check, чтобы проверить снаружи, и снимает мониторы с паузы. Для записи нужен ключ с правом записи на Pro или Agency; лимиты — 120 запросов на запись в минуту на ключ и одна немедленная проверка на монитор раз в десять секунд. Эндпоинты и примеры curl есть в обзоре API, а окна обслуживания описывают плановые работы.
Чётко о границах: Tenium не собирает внутренние метрики, не проходит сценарии в браузере и не заменяет трассировку. Он проверяет снаружи то, что увидел бы клиент, — до 30 с на Pro и Agency — и сообщает нужному человеку, когда доказательства уже надёжны.
Webhook в вашу собственную инфраструктуру
Подписанные webhook на Pro отправляют события incident.opened, incident.acknowledged и incident.resolved, а также события о сроке действия и времени ответа, в виде JSON с подписью HMAC-SHA256 над меткой времени и телом. Проверяйте подпись и отклоняйте всё старше пяти минут — и вы сможете направлять события в чат-опс, очередь тикетов или автоматизацию ранбуков, не доверяя сетевому пути. Неудачные доставки повторяются пять раз примерно за полчаса. Форматы данных — в документации по webhook.
Вопросы DevOps
Разбудит ли дежурного один нестабильный маршрут?
Нет. Один регион лишь помечает монитор подозрительным, а инцидент открывается, когда оба региона подтверждают сбой. Единичный сбой остаётся в истории как локальный.
Можно ли получать вызовы через PagerDuty?
Да, на тарифе Agency ($59). На Pro ($29) есть политики эскалации с Telegram, Slack и e-mail и подписанные webhook.
Как не допустить, чтобы деплой вызывал ложные оповещения?
Запланируйте окно обслуживания в приложении для известных работ или поставьте соответствующие мониторы на паузу через API перед развёртыванием и снимите с паузы после него. Окна приглушают оповещения и исключают это время из данных об аптайме.
Сколько усилий требует настройка heartbeat?
Один curl в конце задачи. Монитор ждёт пинг к заданному вами дедлайну; если его нет или задача вызвала адрес fail, открывается инцидент. Heartbeat начинается со Starter (20), а на Agency их 500.
Это замена Prometheus или Datadog?
Нет. Tenium отвечает на внешний вопрос: доступен ли и правильно ли работает ваш сервис из интернета. Внутренние метрики, трейсы и логи остаются в инструментах, созданных для этого.
Попробуйте на одном «шумном» сервисе
Выберите монитор, который будит вас зря, и поставьте его за подтверждение из нескольких регионов. Тариф Free, без карты.