Вебхуки и алертинг
Настройка вебхуков для доставки системных событий и правил алертов для автоматических уведомлений в Barfinex Studio.
Вебхуки и алертинг позволяют получать уведомления о важных событиях в вашем стеке Barfinex — сигналы, решения AI, действия по рискам, недоступность сервисов и другое.
Вебхуки
Создание вебхука
- Откройте Studio → Webhooks.
- Нажмите Create Webhook.
- Заполните конфигурацию:
| Поле | Обязательно | Описание |
|---|---|---|
| Name | Да | Человекочитаемое название вебхука. |
| URL | Да | HTTPS-эндпоинт, который будет получать POST-запросы. |
| Events | Да | Один или несколько типов событий для подписки. |
| Secret | Нет | Общий секрет для проверки HMAC-подписи. |
| Active | Да | Включён ли вебхук в данный момент. |
- Нажмите Save. Studio отправит тестовый пинг для проверки доступности URL.
Доступные типы событий
| Тип события | Срабатывает, когда |
|---|---|
signal.emitted | Detector генерирует новый торговый сигнал. |
decision.made | Advisor принимает решение (исполнить, пропустить или отклонить). |
risk.blocked | Inspector блокирует намерение исполнения из-за нарушения политики риска. |
order.placed | Ордер размещён на бирже через Inspector. |
order.filled | Ордер полностью исполнен на бирже. |
service.up | Ранее недоступный сервис снова работает. |
service.down | Подключённый сервис стал недоступен. |
deployment.created | Новое развёртывание сервиса создано через мастер. |
deployment.updated | Конфигурация развёрнутого сервиса изменена. |
deployment.deleted | Развёрнутый сервис удалён. |
Формат полезной нагрузки
Каждая доставка вебхука — это HTTP POST с JSON-телом:
{
"id": "evt_abc123",
"type": "signal.emitted",
"timestamp": "2026-03-27T12:00:00.000Z",
"data": {
"symbol": "BTCUSDT",
"direction": "LONG",
"score": 0.82
}
}
Поле data варьируется в зависимости от типа события.
Проверка HMAC-подписи
Если вы настроили Secret для вебхука, каждая доставка включает заголовок X-Barfinex-Signature с HMAC-SHA256 подписью тела запроса.
Для проверки:
- Вычислите
HMAC-SHA256(secret, raw_request_body). - Сравните результат со значением в
X-Barfinex-Signature. - Если значения совпадают, полезная нагрузка подлинна и не изменена.
Пример (Node.js):
const crypto = require('crypto');
function verifySignature(secret, body, signature) {
const expected = crypto
.createHmac('sha256', secret)
.update(body, 'utf8')
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
);
}
Доставка и повторные попытки
- Studio доставляет вебхуки с таймаутом 10 секунд.
- Если эндпоинт возвращает не-2xx статус, Studio повторяет попытку до 3 раз с экспоненциальной задержкой (10с, 30с, 90с).
- Неудачные доставки видны в истории доставки вебхука.
- Вы можете вручную повторить неудачную доставку из интерфейса Studio.
Алертинг
Типы правил алертов
| Тип правила | Условие | Пример использования |
|---|---|---|
| Нет сигналов | Стратегия не генерировала сигнал в течение N минут. | Обнаружение зависшей или неправильно настроенной стратегии. |
| Порог просадки | Просадка портфеля превышает N%. | Получение уведомления до эскалации убытков. |
| Сервис недоступен | Подключённый сервис недоступен в течение N секунд. | Быстрая реакция на сбои инфраструктуры. |
Создание правила алерта
- Откройте Studio → Alerting.
- Нажмите Create Rule.
- Выберите тип правила и настройте параметры:
- Для Нет сигналов: выберите стратегию и порог тишины (минуты).
- Для Порог просадки: установите процентный порог.
- Для Сервис недоступен: выберите сервис и порог недоступности (секунды).
- В разделе Delivery выберите один или несколько вебхуков для получения уведомлений.
- Нажмите Save.
Подключение алертов к вебхукам
Правила алертов не доставляют уведомления самостоятельно. Каждое правило должно быть подключено хотя бы к одному вебхуку.
Когда условие алерта выполняется:
- Studio проверяет правило.
- При срабатывании Studio отправляет доставку вебхука с типом события
alert.triggered. - Полезная нагрузка включает тип правила, порог и текущее значение.
Пример полезной нагрузки алерта:
{
"id": "evt_def456",
"type": "alert.triggered",
"timestamp": "2026-03-27T12:05:00.000Z",
"data": {
"rule": "drawdown_threshold",
"threshold": 5.0,
"current_value": 5.3,
"message": "Portfolio drawdown exceeded 5.0% (current: 5.3%)"
}
}
Каналы доставки
Вебхуки могут указывать на любой HTTP-эндпоинт, поэтому вы можете доставлять алерты через:
- Slack — используйте URL Slack Incoming Webhook.
- Telegram — используйте URL Telegram Bot API с вашим chat ID.
- PagerDuty — используйте эндпоинт PagerDuty Events API v2.
- Пользовательские сервисы — любой HTTPS-эндпоинт, принимающий POST-запросы.
Устранение неполадок
| Проблема | Решение |
|---|---|
| Вебхук показывает "unreachable" | Убедитесь, что URL доступен из вашей сети и возвращает 2xx ответ на POST-запросы. |
| Проверка подписи не проходит | Убедитесь, что используете сырое тело запроса (не распарсенный JSON) для вычисления HMAC. |
| Алерты не срабатывают | Проверьте, что правило алерта подключено хотя бы к одному активному вебхуку. |
| Дублирующиеся доставки | Это может происходить при повторных попытках. Используйте поле id для дедупликации на вашей стороне. |