Перейти к основному содержимому

Пульсары

Пульсары (или heartbeats) — это проверки, которые ожидают регулярные «сигналы» от ваших автоматизированных задач и сообщают, если сигнал не пришёл вовремя.

Что такое Пульсар​

Пульсар — это пассивная проверка: Pingera ничего не запрашивает сама, а ждёт HTTP-запросы от вашей задачи. Если очередной сигнал не поступил в ожидаемое время, Pingera отправляет оповещение.

Используйте Пульсары для мониторинга:

  • резервного копирования;
  • импорта и выгрузки данных;
  • периодических скриптов и cron-задач;
  • ETL-процессов и очередей.

Пульсары не расходуют кредиты, но учитываются в лимите количества проверок вашего тарифа.

Создание Пульсара​

Создать Пульсар в Pingera

  • Название — укажите осмысленное имя, чтобы легко найти пульсар в списке.
  • Ожидаемая частота (period) — как часто ваша задача должна отправлять сигнал.
  • Допустимая задержка (grace period) — дополнительное время ожидания после истечения периода, прежде чем пульсар будет считаться недоступным. По умолчанию — 1 час.
  • Каналы оповещений — куда отправлять уведомления.

После создания на странице пульсара появится его URL вида:

https://api.pingera.ru/v1/heartbeats/<ID пульсара>/ping

Как выбрать период и задержку​

Указывайте в качестве периода интервал запуска задачи, а в качестве задержки — время, которого с запасом хватит на её выполнение.

ЗадачаПериодДопустимая задержка
Скрипт каждые 5 минут5 минут5–10 минут
Ежечасная синхронизация1 час15–30 минут
Ночное резервное копирование1 день1–2 часа
Еженедельный отчёт7 дней6–12 часов

Как работает таймер​

Таймер запускается при создании пульсара и перезапускается при каждом полученном сигнале.

  • Пока с момента последнего сигнала (или создания пульсара) не истёк период, пульсар в статусе Работает (up).
  • После истечения периода начинается допустимая задержка — статус Ожидание (grace). Оповещение на этом этапе не отправляется.
  • Если сигнал не пришёл и за время задержки, статус меняется на Недоступен (down) и отправляется оповещение.
  • Как только приходит новый сигнал, статус возвращается в Работает и отправляется уведомление о восстановлении.

Пример: период — 60 минут, допустимая задержка — 15 минут.

  • Сигнал получен в 10:00 → следующий ожидается до 11:00.
  • В 11:00 сигнала нет → статус «Ожидание».
  • В 11:15 сигнала всё ещё нет → статус «Недоступен», отправляется оповещение.
  • Сигнал получен в 11:40 → статус «Работает», отправляется уведомление о восстановлении. Следующий сигнал ожидается до 12:40.

Статус пульсаров пересчитывается каждые 30 секунд, поэтому оповещение может прийти с небольшой задержкой.

примечание

Сразу после создания таймер уже идёт. Если задача запускается реже, чем указанный период, или вы ещё не настроили отправку сигналов, пульсар перейдёт в статус «Недоступен».

Отправка сигнала​

Отправьте GET или POST запрос на URL пульсара. Аутентификация не требуется. Другие методы не поддерживаются.

Отправляйте сигнал после успешного выполнения задачи. Если задача упала, не отправляйте сигнал — пульсар перейдёт в статус «Недоступен», и вы получите оповещение. Отдельного сигнала об ошибке нет.

Используйте таймаут и повторные попытки, чтобы кратковременные сетевые проблемы не приводили к ложным оповещениям.

# Сигнал отправляется, только если backup.sh завершился успешно
0 3 * * * /opt/scripts/backup.sh && curl -fsS -m 10 --retry 3 https://api.pingera.ru/v1/heartbeats/<ID>/ping > /dev/null

Передача данных с сигналом​

В POST-запросе можно передать JSON — например, количество обработанных записей или длительность задачи. Укажите заголовок Content-Type: application/json, иначе тело запроса не сохранится.

curl -fsS -m 10 -X POST https://api.pingera.ru/v1/heartbeats/<ID>/ping \
-H "Content-Type: application/json" \
-d '{"duration_seconds": 512, "rows": 1250}'

Переданные данные, время, IP-адрес и User-Agent каждого сигнала отображаются в истории сигналов на странице пульсара.

Ответ​

{
"status": "ok",
"message": "Ping received successfully",
"check_id": "h7j3k9l2m4n6",
"next_expected_ping": "2026-10-09T03:00:12.345678"
}

next_expected_ping — время в UTC, до которого ожидается следующий сигнал (без учёта допустимой задержки).

Ограничения​

  • Не более 5 сигналов в минуту на один пульсар. При превышении вернётся ошибка 429.
  • Сигналы приостановленного пульсара не принимаются: вернётся ошибка 404.

Оповещения​

Каналы оповещений для пульсара выбираются в его настройках, отдельные правила оповещений не нужны. Pingera отправляет уведомление, когда пульсар переходит в статус «Недоступен», и уведомление о восстановлении, когда приходит новый сигнал.

Создать и настроить каналы можно в разделе Оповещения → Каналы оповещений. Формат вебхуков для пульсаров описан в разделе Вебхуки.

Частые проблемы​

  • Пульсар перешёл в «Недоступен» сразу после создания. Таймер начинается при создании. Отправьте первый сигнал вручную или увеличьте период.
  • Ошибка 429. Задача отправляет сигналы слишком часто, например в цикле. Отправляйте один сигнал после завершения задачи.
  • Ошибка 404. Проверьте ID в URL и что пульсар не приостановлен.
  • Ложные оповещения. Увеличьте допустимую задержку, если время выполнения задачи сильно меняется, и используйте повторные попытки при отправке сигнала.

API​

Пульсарами можно управлять через API: GET/POST /v1/heartbeats, GET/PATCH/DELETE /v1/heartbeats/{id}, история сигналов — GET /v1/heartbeats/{id}/pings. Подробнее — в документации API.