Fluxo: conexão agent ↔ hub¶
O agent inicia a sessão com o hub por HTTP. Não há WebSocket no hub.
Sequência — registro e heartbeat¶
sequenceDiagram
participant Agent
participant Hub
participant Store
Agent->>Hub: POST /api/v1/agents/register
Note over Agent,Hub: token, host_id, runtime, labels
Hub->>Store: upsert agent session
Hub-->>Agent: 200 session_id, interval
loop a cada 30s
Agent->>Hub: POST /api/v1/agents/heartbeat
Hub->>Store: touch last_seen
Hub-->>Agent: 200 status ok
end
Sequência — lote que o hub não aceita¶
sequenceDiagram
participant Agent
participant Spool
participant Hub
participant Store
Agent->>Agent: batch_id
Agent->>Hub: POST telemetria
alt falha transitória
Agent->>Agent: backoff, cinco tentativas
Agent->>Spool: persiste path, batch_id e corpo
else tick seguinte, hub aceita
Agent->>Spool: mais antigo primeiro
Spool-->>Agent: mesmo batch_id
Agent->>Hub: POST replay
Hub->>Store: reserva batch_id e grava
Hub-->>Agent: 202
Agent->>Spool: apaga o item
end
Um 202 perdido é seguro: o replay manda o mesmo batch_id e o hub não grava as linhas de novo.
Sequência — desconexão detectada¶
sequenceDiagram
participant Hub
participant Store
participant Bus
Hub->>Store: last_seen anterior a StaleAfter
Hub->>Bus: publish agent.disconnect
Bus->>Store: persist event
Modos de transporte¶
| Modo | Uso | Endpoint |
|---|---|---|
| HTTP | registro, heartbeat, métricas, logs, fleet, eventos | ARGUS_HUB_URL |
Autenticação¶
Authorization: Bearer <ARGUS_AGENT_TOKEN>
Token compartilhado por agent ou por host — configurável no hub. Os POST de telemetria enviam X-Argus-Batch-Id. O mesmo id vale no retry e no replay.
Falhas comuns¶
| Sintoma | Causa provável | Comportamento do agent |
|---|---|---|
| 401, 403 ou outro 4xx exceto 429 | request recusado | falha o POST na hora. O registro encerra o processo; um lote é logado e descartado |
| 429, 5xx, erro de conexão ou timeout | hub ocupado ou fora | até 5 tentativas, backoff de cerca de 250ms dobrando até 8s com jitter. Se o hub continuar fora, o lote fica em disco e sai antes dos lotes novos. Um 401, 403 ou outro 4xx no reenvio descarta esse lote |