Alertas
Como ser informado quando suas funções se comportam mal: as métricas que você pode observar, como as regras são verificadas e como gerenciá-las por HTTP.
1. Crie uma regra
As regras de alerta são gerenciadas por HTTP com uma chave service_role. O SDK não possui método para eles.
2. Métricas, condições e canais
| Campo | Valores permitidos |
|---|---|
metric | error_rate, latency_p95, job_failures, low_disk, ai_quota, anomaly_detection ou log_pattern:<service>:<regex> |
condition | gt, lt, eq, match, auto |
channel | email, webhook, slack |
threshold | Um número |
destination | Um endereço de e-mail ou o URL do webhook ou gancho do Slack |
log_pattern observa os logs de um serviço em busca de uma expressão regular: log_pattern:functions:timeout. Um valor desconhecido retorna 400 e lista os aceitos. Resposta real para metric: "cpu":
3. Como as regras são verificadas
- O serviço verifica cada regra habilitada uma vez por minuto.
- As métricas numéricas são lidas no Prometheus;
log_patternregras consultam Loki. Cada consulta tem um limite de 5 segundos. Se um projeto falhar, os outros ainda serão verificados. - Quando uma regra é acionada, o serviço define
last_triggered_at, registra um evento e o publica para entrega no canal escolhido. - Uma regra desativada é mantida, mas não verificada.
Os alertas precisam que o Prometheus e o Loki sejam acessíveis a partir do serviço de funções, e o canal de e-mail precisa de um provedor de e-mail. Em uma pilha de desenvolvimento sem eles, uma regra é armazenada, mas não pode ser acionada.
4. Gerencie regras e histórico
| Ação | Solicitação |
|---|---|
| Listar regras | GET /v1/functions/alerts |
| Habilitar ou desabilitar | PATCH /v1/functions/alerts/{id} com {"enabled": false} |
| Excluir | DELETE /v1/functions/alerts/{id} |
| História de uma regra | GET /v1/functions/alerts/{id}/events |
| História de todas as regras | GET /v1/functions/alerts/events |
Um evento possui alert_rule_id, event_type, triggered_value, message e created_at; as rotas do histórico aceitam limit e offset. Cada rota precisa de uma chave service_role.