Coletores

APM

Rastreamento distribuído, métricas RED (taxa, erros e duração) e mapa de dependências dos serviços dos seus hosts. O nível 1 usa eBPF e não muda nada na aplicação; o nível 2 carrega o instrumentador oficial da linguagem e só entra com plano aprovado e reinício feito por você.

Níveis de instrumentação

NívelComoMudança no serviço
0 — descobertao agente identifica serviços, runtime, versão, portas e compatibilidade, só lendonenhuma
1 — eBPFo argus-apm observa chamadas HTTP, gRPC, SQL, Redis e Kafka de entrada e saídanenhuma
2 — runtimeo instrumentador oficial do OpenTelemetry é carregado por variável de ambientedrop-in systemd aprovado e reinício feito por você

Um processo que já tem SDK ou agente OpenTelemetry nunca recebe o nível 2, mas continua no eBPF: o SDK segue mandando para o destino atual (Elastic, Jaeger...) e o argus-apm observa o processo de fora, sem interferir. Serviços sem requisições de entrada (workers, jobs) mostram o RED das chamadas que fazem.

Enviar de um OpenTelemetry Collector que já existe

Acrescente um exporter ao pipeline traces do collector, mantendo o exporter atual. Use o token do site e o agent_id de um host do mesmo site:

exporters:
  otlphttp/argus:
    endpoint: https://<api-do-argus>/otlp
    compression: gzip
    headers:
      Authorization: "Bearer ${env:ARGUS_SITE_TOKEN}"
      X-Argus-Agent-Id: "<agent_id>"
service:
  pipelines:
    traces:
      exporters: [seu-exporter-atual, otlphttp/argus]

Só traces são aceitos, e a sanitização é a mesma do agente. Se o serviço também é observado pelo eBPF, o RED conta só o eBPF; para ficar só com o SDK, exclua o serviço na política.

Linguagens

LinguagemNível 1Nível 2 a partir de
Gosim— (o eBPF já cobre)
JavasimJava 8
Node.jssimNode 22.15 (validado com CommonJS)
PythonsimPython 3.10
RubysimRuby 3.3, aplicação com Bundler (Bundler.require; Rails, Sinatra, pg, mysql2, Redis, Sidekiq). App que já trava gems opentelemetry-api/-sdk fica no nível 1
PHPparcial (cliente e nginx)não distribuído pelo Argus

Abaixo da versão mínima o serviço continua no nível 1.

Instalação

O APM é instalado junto com o agente, com um token de site. Nada é coletado até a política do site ligar o APM no painel (APM → Configuração).

curl -fsSL https://argus-homolog.eulabs.net.br/install-argus-agent.sh | sudo bash -s -- \
  --token <token-do-site> --with-apm

No painel, Admin → Projetos e sites → Adicionar nó gera esse comando: marque APM (eBPF) e, para ligar os traces entre serviços, Propagação de contexto (--apm-propagation). Em Docker Swarm, rode o comando em cada nó: o eBPF do host instrumenta os containers sem mudar as imagens. O receiver local do APM usa 127.0.0.1:14317/14318, sem conflito com um OpenTelemetry Collector já publicado em 4317/4318.

O componente roda como argus-apm.service, com capabilities mínimas, até 1,5 GiB de memória (contando os mapas eBPF) e meio core. Kernel Linux 5.8 ou mais novo com BTF (RHEL/derivados 4.18 com backports), amd64 ou arm64. O agente confere a compatibilidade do host e mostra o resultado no painel.

O agente se protege sozinho para o APM nunca derrubar um servidor. Em kernel sem uprobe_multi (anterior ao 6.6), os serviços Go são observados pelo rastreador genérico do kernel, mais leve, com menos detalhe de rota e SQL. Se a carga do host subir demais com o APM ligado, o agente suspende o APM por 15 minutos (dobrando até 4 horas) e o painel mostra "Suspenso (carga)". Ao ligar o APM, cada nó começa num momento diferente, em até 5 minutos.

Ativação do nível 2

Três condições, todas obrigatórias:

  1. o host permite: instale com --allow-apm-activation;
  2. o administrador do Argus habilitou a ativação;
  3. existe um plano aprovado para o serviço: por um operador, na janela de manutenção, ou automaticamente para os serviços que a política do site autoriza.

O agente baixa o instrumentador por https, confere a assinatura, grava /etc/systemd/system/<serviço>.d/90-argus-apm.conf e roda só systemctl daemon-reload. O Argus nunca reinicia o seu serviço: o painel mostra “aguardando reinício” até você reiniciar. Se a unit já define a mesma variável, o plano é recusado. Para desfazer, use o botão de rollback do plano ou, no host, argus-agent apm rollback <serviço>; vale no próximo reinício.

Perfil de CPU (profiling contínuo)

Mostra quais funções gastam CPU em cada serviço, para Go e para as outras linguagens, sem mudar código e sem reiniciar a aplicação. Em Go os nomes das funções aparecem mesmo em binário compilado com -ldflags="-s -w". O recurso está em fase inicial (alpha), vem desligado e é ligado por política.

Containers e clusters

Privacidade

Antes de sair do host: query string das URLs removida, headers de autorização, cookie e token removidos, SQL sem literais (os valores viram ?) e atributos truncados. O envio usa o token do site; a empresa e o site dos dados vêm do token, nunca do que a aplicação declara. Cada pessoa vê só os traces do seu escopo.

Logs, bancos e infraestrutura

Desligar

Mude a política do site para “somente descoberta” com eBPF desligado: o agente para o argus-apm. Os drop-ins do nível 2 saem pelo rollback dos planos e os dados expiram pela retenção configurada.