Coletores

Containers, clusters e VMs

Docker, Docker Swarm, Kubernetes, Proxmox VE e libvirt são lidos sempre em modo somente leitura. Nada aqui reinicia, remove, escala ou migra container, serviço, pod ou VM.

Docker: saúde por container

Tudo pela API do Docker no socket local. Só container com problema vira check; os demais entram no resumo do host.

SituaçãoQuandoSeveridade
OOMo container foi morto por falta de memóriacrítico
Restart loopreiniciou 3 vezes em 10 min, ou está em restartingcrítico
Unhealthyhealthcheck falhandoalerta; crítico com 5 falhas seguidas
Saiu com erroparado com exit code ≠ 0 nas últimas 24 h (paradas por sinal, como docker stop, não contam)alerta
Preso em createdhá mais de 5 minalerta
RecursosCPU, memória ou PIDs acima de 85/95 %, 85/95 % e 80/95 % do limite por 2 ciclosalerta / crítico

Docker Swarm

Além dos checks de nó, quorum, serviço e rede overlay, os managers reportam:

CheckQuando
Task presatask que deveria estar rodando parada em pending/preparing/starting… há mais de 5 min, com a mensagem do scheduler (ex.: no suitable node). Crítico se o serviço está com 0 réplicas.
Falhas de task3 tasks failed/rejected em 15 min; crítico se as réplicas estão abaixo do desejado.
Quorumtolerância a falhas zero ou número par de managers (alerta).
Resumo do clusternós, managers, leader, serviços degradados e tasks presas, que alimentam a página Clusters.

Por padrão só o leader emite os checks de cluster, para que N managers não gerem N alertas. Use o mesmo cluster_name em todos os nós para o nome aparecer igual no painel.

Kubernetes

O agente lê o cluster pela API com uma ServiceAccount somente leitura: só GET, sem acesso a secrets, logs, exec ou proxy de nó. Um único nó é eleito para reportar o cluster, sem coordenação entre os agentes.

Instalação

O time do Argus aplica o RBAC somente leitura no cluster e instala o token e a CA nos nós que vão reportar, em /etc/argus-agent/k8s/ (modo 0600). No config.yml desses nós:

collectors:
  kubernetes:
    enabled: true
    api_server: https://127.0.0.1:6443   # RKE2/k3s server: apiserver local
    cluster_name: rke2-prod              # nome na página Clusters
    # node_name: cp-1                    # só se o nome do nó K8s for diferente do hostname

Eleição do reporter

  1. Candidatos: nós com a label argus.io/k8s-reporter=true; sem nenhum, os control-planes.
  2. Eleito: o primeiro candidato Ready em ordem de nome.
  3. Sem candidato Ready: o primeiro nó Ready do cluster.

Ligue o coletor em pelo menos dois nós para ter failover. Os alertas são do cluster, não do agente: a troca de reporter atualiza o mesmo alerta, sem duplicar nem notificar de novo.

Checks e alertas

CheckQuando
APItoken ausente, CA inválida, 401/403, apiserver inacessível, listagem com falha
NóNotReady (crítico); MemoryPressure, DiskPressure, PIDPressure, NetworkUnavailable (alerta)
Workloadréplicas disponíveis abaixo do desejado além do tempo limite (fora de rollout) ou ProgressDeadlineExceeded; crítico com zero disponível
PodCrashLoopBackOff, erro de imagem, erro de configuração, OOMKilled recente, Pending sem nó, restart loop; agrupado pelo workload dono
Eventosos 200 eventos mais recentes do cluster, só para a seção “Eventos do cluster” (nunca abre alerta)

Pods são agrupados pelo workload dono: um Deployment com 10 pods em CrashLoop gera um alerta, e um rollout não abre e fecha alertas por nome de pod.

Página do cluster

Proxmox VE, KVM e libvirt

A descoberta identifica hosts de virtualização (/dev/kvm, processos, unidades systemd, /etc/pve, portas 8006/8007) e liga o coletor quando a confiança é suficiente. Todo comando externo (pvesh, qm, pct, virsh, systemctl) passa por uma lista de leitura com timeout, que recusa qualquer verbo de alteração.

O resultado aparece na seção Virtualização do detalhe do host.

Num host sem a plataforma, esses coletores ficam em silêncio mesmo que o perfil do site os ligue (veja Coletores opcionais).