Ir para o conteúdo

Visão geral

O Argus separa coleta (agent) de agregação e regras (hub). Tudo que transita entre eles usa envelopes estáveis com labels e entity_uid, para métricas, logs e eventos compartilharem o mesmo vocabulário de filtro.

Topologia

flowchart TB
  subgraph hostA [Host A]
    A1[Agent]
    D1[Runtime Docker]
    A1 --> D1
  end
  subgraph hostB [Host B]
    A2[Agent]
    D2[Runtime Docker]
    A2 --> D2
  end
  Hub[Hub]
  Store[(Store)]
  A1 --> Hub
  A2 --> Hub
  Hub --> Store

Camadas do hub

flowchart TB
  Ingest[Ingest API]
  WS[WebSocket]
  Bus[Event bus]
  Rules[Rule engine]
  Store[(Store)]
  Ingest --> Store
  Ingest --> Bus
  Bus --> Rules
  Rules --> Store
  Rules --> Notify[Notificadores]
  WS --> Store

Entidade de workload

Cada sinal referencia uma entidade:

entity_uid = {runtime}:{host}:{workload_id}

Exemplo: docker:vps-01:api-gateway

Labels comuns: host, runtime, container, namespace, pod, service.

Estados do agent

stateDiagram-v2
  [*] --> Starting
  Starting --> Connected: registro ok
  Connected --> Retrying: 429, 5xx ou rede
  Retrying --> Connected: 2xx
  Retrying --> Spooling: cinco tentativas falharam
  Spooling --> Connected: lote mais antigo aceito
  Connected --> Connected: 401, 403 ou outro 4xx descarta esse lote

Registro e heartbeat não vão para o spool. Spool cheio descarta o lote mais antigo (ARGUS_BUFFER_MAX_BYTES).

Próximos fluxos