Оповещения
Как узнать, когда ваши функции работают неправильно: метрики, которые вы можете отслеживать, как проверяются правила и как ими управлять через HTTP.
1. Создайте правило
Правила оповещений управляются через HTTP с помощью ключа service_role. В SDK для них нет метода.
2. Метрики, условия и каналы
| Поле | Допустимые значения |
|---|---|
metric | error_rate, latency_p95, job_failures, low_disk, ai_quota, anomaly_detection или log_pattern:<service>:<regex> |
condition | gt, lt, eq, match, auto |
channel | email, webhook, slack |
threshold | Число |
destination | Адрес электронной почты или URL-адрес веб-перехватчика или перехватчика Slack. |
log_pattern просматривает журналы одного сервиса на предмет регулярного выражения: log_pattern:functions:timeout. Неизвестное значение возвращает 400 и перечисляет принятые значения. Реальный ответ для metric: "cpu":
3. Как проверяются правила
- Служба проверяет каждое включенное правило раз в минуту.
- Числовые метрики считываются из Prometheus;
log_patternправила запроса Локи. Каждый запрос имеет ограничение в 5 секунд. Если один проект проваливается, остальные все равно проверяются. - Когда правило срабатывает, служба устанавливает
last_triggered_at, записывает событие и публикует его для доставки по выбранному каналу. - Правило, которое вы отключили, сохраняется, но не проверяется.
Для оповещений необходимо, чтобы Prometheus и Loki были доступны из службы функций, а каналу электронной почты нужен поставщик электронной почты. В стеке разработки без них правило сохраняется, но не может быть активировано.
4. Управление правилами и историей
| Действие | Запрос |
|---|---|
| Список правил | GET /v1/functions/alerts |
| Включить или отключить | PATCH /v1/functions/alerts/{id} с {"enabled": false} |
| Удалить | DELETE /v1/functions/alerts/{id} |
| История одного правила | GET /v1/functions/alerts/{id}/events |
| История всех правил | GET /v1/functions/alerts/events |
Событие имеет alert_rule_id, event_type, triggered_value, message и created_at; маршруты истории принимают limit и offset. Каждому маршруту нужен ключ service_role.