> ## Documentation Index
> Fetch the complete documentation index at: https://lifters.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitoria de Ingestão e Alertas

> Visibilidade em tempo real do volume e bytes ingeridos por organização, com alertas configuráveis para Slack.

# Monitoria de Ingestão e Alertas

A camada de monitoria de ingestão expõe três coisas:

1. **Métricas de volume e bytes** ingeridos por organização, brand, domínio e evento — com granularidade até **1 minuto**.
2. **Heartbeat por chave** (`organization_id × brand_id × domain × event × ingestion_source`) com `last_event_at` e `last_ingest_at`.
3. **Alertas configuráveis pelo usuário** que disparam para Slack quando uma condição é satisfeita (ex: "sem `bet_placed` há 5 min").

## Pipeline de dados

```
tbt_raw_events_{user,casino,transaction,sportsbook}
    │
    ├── mv_minute_*      → gold_ingestion_metrics_minute  (1-min, TTL 30d)
    ├── mv_daily_*       → gold_ingestion_metrics_daily   (1-dia, com event)
    └── mv_heartbeat_*   → gold_ingestion_heartbeat       (1 row por chave)
                                                                │
                                                                ▼
                                                       alert_runner (worker 30s)
                                                                │
                                                       ┌────────┴────────┐
                                                       ▼                 ▼
                                                  Slack (webhook)  In-app (bell)
```

Toda a cascata é direta via Materialized Views — nenhum ETL externo. Custo marginal por evento ingerido é desprezível.

## O que está documentado

<CardGroup cols={2}>
  <Card title="Métricas de ingestão" icon="chart-line" href="/guides/monitoring/ingestion-metrics">
    Endpoints REST, queries SQL diretas e formato dos pontos de série temporal.
  </Card>

  <Card title="Alertas e Slack" icon="bell" href="/guides/monitoring/alerts">
    Tutorial passo-a-passo: criar Incoming Webhook, cadastrar canal, criar regra.
  </Card>

  <Card title="Tipos de condição" icon="sliders" href="/guides/monitoring/alert-conditions">
    Detalhes de `no_data`, `byte_threshold`, `rate_drop`, `lag_high` com exemplos.
  </Card>

  <Card title="Dashboard de Alertas" icon="display" href="/guides/monitoring/dashboard">
    Tela `/dashboard/settings/alerts`: criar regras, gerenciar canais, ver histórico.
  </Card>
</CardGroup>

## Disponibilidade

| Recurso                                    | Disponível                      |
| ------------------------------------------ | ------------------------------- |
| Endpoints `/v1/ingestion/metrics/*`        | ✓ Todos os planos               |
| Bell icon in-app de alertas                | ✓ Todos os planos               |
| Canal Slack (Incoming Webhook)             | ✓ Todos os planos               |
| Canal WhatsApp / e-mail / webhook genérico | ✗ Roadmap v2                    |
| Quota por plano de billing                 | ✗ Roadmap v2 (sem limite na v1) |

## Premissas operacionais

* **Cifragem:** webhook URLs ficam cifradas em `alert_channels.config_encrypted` (AES-256-GCM). A chave é `ATLAS_SECRET_ENCRYPTION_KEY`.
* **Cooldown:** cada regra tem `cooldown_seconds` (default 300) — evita flood quando a condição persiste.
* **Multi-tenancy:** todas as queries filtram por `organization_id` do principal.
* **Backfill via S3:** eventos do backfill aparecem como `ingestion_source=backfill` (apenas `tbt_raw_events_user` na v1; outros domínios usam `realtime` por limitação conhecida).
