Configuração do agente
Tudo fica em /etc/argus-agent/config.yml. O token e a URL do servidor ficam separados, em
/etc/argus-agent/argus-agent.env (modo 0600). Depois de editar, reinicie com
sudo systemctl restart argus-agent.
Princípios
- Seguro por padrão: coletores opcionais ficam em
auto(ligam só se a tecnologia for detectada) ou desligados; nenhuma rotina de correção vem liberada. - Sem valores fictícios: se algo não pode ser lido, a métrica é omitida, nunca enviada como 0 %.
- Coletor com problema não derruba o agente: o erro vira um check, e o resto continua.
- Credenciais nunca no YAML: use arquivos protegidos (0600) ou variáveis de ambiente.
Identidade e tags
Tags no formato chave=valor são usadas pelos host groups dinâmicos do Admin (permissões, dashboards e roteamento de notificações):
agent:
tags:
- sistema=ecommerce
- papel=frontend
- legado # tag sem "=" também vale
O servidor guarda chave e valor em minúsculas, sem espaços nas pontas: Sistema = Ecommerce vira
sistema=ecommerce. Um grupo pode casar a tag exata ou qualquer valor de uma chave.
Coletores opcionais
collectors:
docker:
enabled: auto
docker_swarm:
enabled: auto
nginx:
enabled: auto
status_url: http://127.0.0.1/nginx_status
proxmox_ve:
enabled: auto
mode: local_readonly
Com o perfil do site, um coletor pode ficar ligado em todos os hosts do site, inclusive nos que não rodam aquela plataforma. Nesse caso os coletores de Proxmox VE, libvirt e Kubernetes ficam em silêncio em vez de abrir um alerta falso; cada um só reporta se encontrar sinais de instalação:
| Coletor | Só reporta se existir |
|---|---|
proxmox_ve | /etc/pve ou /usr/bin/pveversion |
libvirt | libvirtd/virtqemud ou o socket do libvirt |
kubernetes | o token do agente, um api_server próprio ou marcadores de nó (/etc/kubernetes, /var/lib/kubelet, /etc/rancher, /var/lib/rancher). Num nó de verdade sem token, o alerta de token ausente continua. |
Sinais de saturação
Lidos direto de /proc e /sys, sem subprocessos:
| Fonte | O que mede | Alerta quando |
|---|---|---|
PSI (/proc/pressure) | pressão de CPU, memória e I/O | memória full ≥ 5/20 %, I/O full ≥ 10 %, CPU some ≥ 50 % |
/proc/diskstats | IOPS, throughput, await, utilização por disco | utilização ≥ 90 % ou await ≥ 100 ms |
/proc/vmstat | OOM kills, major faults | qualquer OOM novo (lista os serviços afetados) |
/proc/net | retransmissão TCP, listen drops, sockets | retransmissão ≥ 5 % (com volume mínimo) ou listen drops |
| cgroup v2 | CPU e memória por serviço systemd (top 10) | OOM por serviço |
Pressão estendida (PSI)
Opcional e desligado por padrão. Liga médias de 10 s e 300 s, taxa de stall e o estado da leitura no host e, em nós Kubernetes com cgroup v2, a pressão por pod e por container:
agent:
load_shedding:
enabled: true
mode: shadow # shadow só informa o nível; enforce aplica os cortes
collectors:
host_signals:
enabled: true # num perfil/overlay, sempre junto das flags abaixo
psi_extended: true
cgroup_pressure:
enabled: true # só em nós Kubernetes
top_pods: 5
max_pods: 20
- Kernel sem PSI (anterior ao 4.20 ou com
psi=0) aparece como não suportado, nunca como zero. - Com o agente em container, monte o
/proce o/sys/fs/cgroupdo host somente leitura e aponteproc_rootecgroup_rootpara eles. - O histórico estendido fica no armazenamento analítico; sem ele, o painel mostra só os valores atuais de 60 s.
load_sheddingreduz a coleta opcional quando o próprio host está sob pressão; o painel mostra coleta reduzida.
Rede e gateway
O card Rede e Conectividade do detalhe do host usa o coletor network_probe, que testa o
gateway detectado. Para testar um IP fixo:
collectors:
network_probe:
enabled: true
target_mode: manual
target_ip: 203.0.113.10
target_name: gateway-principal
ping_enabled: true
mtr_enabled: false
traceroute_enabled: false
O tráfego de rede é enviado como contador por interface; o servidor calcula a taxa em bit/s (ignorando lo,
reset de contador e lacunas longas), o que alimenta os painéis de rede em tempo real.
Descoberta de serviços
A descoberta identifica serviços e tecnologias do host com nível de confiança e sugere coletores. É somente leitura: não instala pacotes, não inicia nem reinicia serviços e não altera configuração.
discovery:
enabled: true
mode: safe
local_only: true
network_scan_enabled: false
auto_enable_collectors: true
auto_enable_requires_credentials: false
Logs
Opcional e desligado por padrão. Os logs aparecem no Log Explorer do painel.
logs:
enabled: true
journald:
enabled: true
files:
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
minimum_severity: info
- Instalação nova começa do fim: o histórico antigo não é reenviado. O ponto de leitura sobrevive a restart.
- Stack traces viram um evento só; repetições são agregadas com contagem.
- Senhas, tokens,
Authorization: Bearer, cookies e senhas em DSN são mascarados no host, antes do envio. - A fila de logs é limitada em disco; erros e críticos têm prioridade quando ela enche.
Evidências para a Análise por IA
Em alertas de containers e do Swarm, o painel pode pedir ao agente do próprio host uma coleta somente leitura no
Docker. Ligado por padrão; só atua quando o servidor pede e quando o coletor docker ou
docker_swarm está ligado.
ai_investigation:
enabled: true # false desliga a coleta neste host
log_tail_lines: 60 # máximo 200
Detalhes do que é lido e do que sai do host em Análise por IA.
Testes sintéticos (Playwright)
O agente envia os relatórios do Playwright gerados pelo reporter json que estiverem nos
diretórios configurados. Ligado por padrão. Sem dirs, o agente encontra sozinho os monitores
instalados em /home/<usuário>/<empresa>/argus-results com run-monitor.sh ao lado; com
dirs, usa só os listados. O bloco fica na raiz do config, não dentro de collectors:. Cada teste ganha histórico,
linha do tempo e SLA na tela Testes sintéticos, e uma falha abre alerta crítico que
resolve sozinho quando a próxima execução passar.
playwright:
enabled: true
dirs:
- /opt/testes-e2e/results # onde o reporter json grava
No playwright.config: reporter: [['json', { outputFile: 'results/results.json' }]].
Se houver um run-monitor.sh na pasta acima do diretório de resultados, a IA do argus-noc pode
rodar a suíte quando alguém pedir no chat (basico ou completo). O agente só executa
esse script, como o dono dele, e o resultado de cada teste volta na mesma conversa.
Envio, compressão e spool offline
server:
compression: auto # auto | off | always
spool:
max_size_mb: 64
max_age_hours: 1
max_items: 500
replay_batch: 50
- O ciclo padrão é de 30 s. O primeiro ciclo espera um atraso aleatório para que hosts reiniciados juntos não batam no servidor ao mesmo tempo.
- Com servidor compatível, heartbeat, inventário, métricas e checks saem num único envio compactado (gzip).
- Se o servidor está fora ou pede para esperar (pico de ingestão), o que falhou vai para o spool e é reenviado depois, com backoff de 30 s até 10 min, sem duplicar o host. Quando o servidor volta, o reenvio começa já no ciclo seguinte.
- Itens além do limite ou mais velhos que
max_age_hourssão descartados, os mais antigos primeiro.
Testar o agente na mão
argus-agent status rodado direto no shell pode responder missing_agent_token, porque o token
fica no arquivo de ambiente do systemd. Para usar o mesmo ambiente do serviço:
sudo env $(sudo cat /etc/argus-agent/argus-agent.env | xargs) argus-agent status