Agente

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

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:

ColetorSó reporta se existir
proxmox_ve/etc/pve ou /usr/bin/pveversion
libvirtlibvirtd/virtqemud ou o socket do libvirt
kuberneteso 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:

FonteO que medeAlerta quando
PSI (/proc/pressure)pressão de CPU, memória e I/Omemória full ≥ 5/20 %, I/O full ≥ 10 %, CPU some ≥ 50 %
/proc/diskstatsIOPS, throughput, await, utilização por discoutilização ≥ 90 % ou await ≥ 100 ms
/proc/vmstatOOM kills, major faultsqualquer OOM novo (lista os serviços afetados)
/proc/netretransmissão TCP, listen drops, socketsretransmissão ≥ 5 % (com volume mínimo) ou listen drops
cgroup v2CPU 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

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

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

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