Вебхуки: обработка пользовательских событий
Интегрируйте StatusPulse с вашими внутренними инструментами, системами тикетов и каналами оповещений через мощные и безопасные HTTP-хуки.
Настройка вебхуков
Вебхуки позволяют мгновенно реагировать на события мониторинга, отправляя HTTP POST-запросы на указанные вами конечные точки. Это критически важно для автоматизации DevOps-процессов и сокращения времени реакции на инциденты (MTTR).
Для настройки перейдите в раздел Настройки → Интеграции → Вебхуки. Вы можете создать отдельные вебхуки для разных сред (Production, Staging) или типов событий.
- URL конечной точки: Адрес вашего сервера, принимающего запросы (должен поддерживать HTTPS).
- Фильтрация событий: Выберите, какие триггеры должны активировать хук (например, только
incidents.created). - Повторные попытки: StatusPulse автоматически повторяет запрос 3 раза с экспоненциальной задержкой (10с, 30с, 120с) в случае ошибки 5xx.
Совет: Используйте инструменты вроде webhook.site для тестирования перед развертыванием в production.
Формат полезной нагрузки (JSON Payload)
Все вебхуки отправляют данные в формате JSON. Структура стандартизирована для удобства парсинга вашими сервисами.
Пример полезной нагрузки для события incident.created:
{
"id": "evt_8f7d6s5a4b3c",
"type": "incident.created",
"timestamp": "2023-10-27T14:30:00Z",
"data": {
"incident": {
"id": "inc_12345",
"status": "investigating",
"severity": "critical",
"title": "Сбой базы данных на кластере EU-West",
"affected_services": [
"api.statuspulse.io",
"db-primary-01"
],
"monitor_id": "mon_98765",
"response_time": null,
"error_code": 503
}
}
}
Основные поля: type определяет природу события, а объект data содержит детальную информацию о конкретном инциденте, мониторе или сервисе.
Безопасность и верификация подписи
Чтобы убедиться, что запрос действительно исходит от StatusPulse, мы подписываем каждый вебхук с использованием HMAC-SHA256.
В заголовке каждого запроса присутствует поле X-StatusPulse-Signature. Для проверки подлинности вы должны вычислить HMAC-подпись тела запроса (payload) с использованием вашего секретного ключа (whsec_...), который можно найти в настройках вебхука.
Пример алгоритма проверки (Node.js):
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = 'sha256=' + hmac.update(payload).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(digest)
);
}
Важно: Никогда не храните секретные ключи в открытом виде в репозиториях кода. Используйте переменные окружения.