Модуль проверки и пример события
Модуль для Node.js 22+ проверяет подпись, время отправки и структуру запроса. Он также готовит поля для маршрутизации и тело события PagerDuty. Зависимости устанавливать не нужно.
Это библиотека для вашего обработчика, а не готовый сервер или импортируемый сценарий. Она не хранит события, не создаёт подключения и ничего не отправляет во внешние системы.
import {
verifyCoreMonitorWebhook,
routeCoreMonitorEvent,
toPagerDutyEvent,
} from "./core-monitor-webhook.mjs";
// rawBody: Buffer исходного HTTP-запроса, до JSON.parse
// headers: заголовки этого же запроса
const event = verifyCoreMonitorWebhook({
rawBody,
headers,
secret: process.env.CORE_MONITOR_WEBHOOK_SECRET,
});
const route = routeCoreMonitorEvent(event);
// Сначала сохраните event + deliveryKey в постоянную очередь.
// Ответ 2xx допустим только после успешной записи.
// Отдельный обработчик очереди выполняет внешнее действие.
// Необязательно: тело запроса PagerDuty, без отправки.
const pagerDutyBody = toPagerDutyEvent(
event,
process.env.PAGERDUTY_ROUTING_KEY,
);
Ограничьте тело HTTP-запроса до 64 КБ ещё при чтении потока. Передавайте точные байты без повторной сериализации JSON. Модуль допускает расхождение времени до пяти минут; синхронизируйте часы сервера. Ключи не должны попадать в браузер, журналы и публичный репозиторий.
JSON-файл содержит вымышленные данные для настройки полей. Он не является подписанным запросом и сам по себе не пройдёт проверку. Реальное тестовое сообщение имеет тип notification.test и не содержит сайт или инцидент.