Ir para o conteúdo

Fluxo: stream de logs

O agent lê logs do Docker no intervalo ARGUS_LOG_INTERVAL e envia um lote HTTP. O painel consulta o hub; não há stream WebSocket nem amostragem por pressão.

Sequência — coleta e persistência

sequenceDiagram
  participant Runtime
  participant Agent
  participant Hub
  participant Store

  loop ARGUS_LOG_INTERVAL
    Agent->>Runtime: logs stdout/stderr
    Runtime-->>Agent: linha + metadata
    Agent->>Hub: POST /api/v1/logs/batch
    Note over Agent,Hub: mesmo batch_id, retry e spool das métricas
    Hub->>Store: log_entries e ingest_batches
    Hub-->>Agent: 202
  end

O hub não expõe WebSocket. O painel relê a busca.

Formato de entrada

{
  "ts": "2026-09-03T13:00:01Z",
  "message": "level=error msg=connection refused",
  "level": "error",
  "entity_uid": "docker:host-01:api",
  "labels": { "host": "host-01", "container": "api" },
  "fields": { "trace_id": "abc" }
}

Sequência — painel

/logs consulta a cada 15 s (web/src/pages/logs.tsx). Não há rota /api/v1/ws.

sequenceDiagram
  participant Browser
  participant Hub

  loop a cada 15s
    Browser->>Hub: GET /api/v1/logs/search?since=1h&container=...
    Hub-->>Browser: entries
  end

Busca histórica

sequenceDiagram
  participant Client
  participant Hub
  participant Store

  Client->>Hub: GET /api/v1/logs/search?q=refused&since=15m
  Hub->>Store: full-text + labels
  Store-->>Hub: hits
  Hub-->>Client: entries