Kmind
Documentacao

Infraestrutura em containers

Kmind Agent Docker

Conecte hosts Docker ao Kmind com uma chave de integracao reutilizavel por varios hosts do mesmo servico. O agente se comunica somente com o Gateway Kmind e usa acesso de leitura ao Docker Engine.

Preview tecnico: nao use em producao ainda. A versao atual valida configuracao, identidade, conectividade com o Docker e ativacao. A coleta de containers, metricas, eventos e logs ainda esta em evolucao e sera liberada em uma versao estavel posterior.

Como a integracao funciona

No Console, crie um servico Docker no cluster desejado. A chave kmd_... pertence ao servico, nao a um host: use a mesma chave nos hosts que devem reportar para aquele servico. Cada instalacao mantem apenas um identificador local persistente em /var/lib/kmind-agent.

Nunca coloque a chave em imagens, repositorios ou variaveis expostas no frontend. Entregue-a ao host como segredo ou arquivo com permissao restrita.

Pre-requisitos

  • Docker Engine em execucao e acesso ao socket Docker para o usuario do agente.
  • Uma integracao Docker criada no Console Kmind e sua chave privada kmd_....
  • Saida HTTPS para https://ingest.kmind.com.br.
  • Docker Compose v2 para Compose ou Docker Swarm para a instalacao global.
O socket Docker concede privilegios elevados sobre o host. Trate seu acesso como administrativo e instale o agente somente em hosts autorizados.

Instalacao com Docker Compose

Crie um diretorio restrito, salve a chave e limite a leitura ao administrador do host:

mkdir -p /opt/kmind-agent-docker && cd /opt/kmind-agent-docker
umask 077
printf '%s' 'kmd_COLE_A_CHAVE_DO_CONSOLE' > kmind_api_key.txt

Crie o arquivo compose.yaml abaixo. Ajuste os nomes para identificar o servico no Console.

services:
  kmind-agent-docker:
    image: ghcr.io/fcconsultoria/kmind-agent-docker:latest
    restart: unless-stopped
    user: "${KMIND_AGENT_UID:-0}:${KMIND_AGENT_GID:-0}"
    environment:
      KMIND_API_KEY_FILE: /run/secrets/kmind_api_key
      KMIND_SERVICE_NAME: docker-production
      KMIND_APPLICATION_NAME: infrastructure
      KMIND_ENDPOINT: https://ingest.kmind.com.br
      KMIND_STATUS_ENDPOINT: https://ingest.kmind.com.br/v1/agent/status
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - kmind-agent-data:/var/lib/kmind-agent
    secrets: [kmind_api_key]
    read_only: true
    tmpfs: [/tmp:size=16m,noexec,nosuid]
    cap_drop: [ALL]
    security_opt: [no-new-privileges:true]
    labels: {kmind.monitoring: "disabled"}
secrets:
  kmind_api_key: {file: ./kmind_api_key.txt}
volumes: {kmind-agent-data: {}}
docker compose up -d
docker compose logs -f kmind-agent-docker
Em Docker rootful, o exemplo usa UID e GID 0 por compatibilidade. Quando seu socket permitir, defina KMIND_AGENT_UID e KMIND_AGENT_GID para uma conta sem privilegios extras.

Docker rootless e Swarm

Para Docker rootless, monte o socket do usuario, normalmente em $XDG_RUNTIME_DIR/docker.sock, e execute o container com o mesmo UID/GID desse usuario. Nao monte /var/run/docker.sock quando ele nao for o socket usado pelo Engine.

Em Swarm, use um servico global para executar uma instancia por no. A chave permanece a mesma para todos os nos que pertencem ao servico Docker.

docker secret create kmind_api_key ./kmind_api_key.txt
docker stack deploy -c docker-swarm.yaml kmind

Use como base o arquivo deployments/docker-swarm.yaml do repositorio e crie o segredo antes do deploy. O volume de estado deve ser local a cada no.

Configuracao avancada

O agente le config.yaml e permite sobrescrever os principais valores por variaveis de ambiente. As variaveis tem precedencia sobre YAML, que tem precedencia sobre os valores padrao.

kmind:
  apiKeyFile: /run/secrets/kmind_api_key
  serviceName: docker-production
  applicationName: infrastructure
  endpoint: https://ingest.kmind.com.br
  statusEndpoint: https://ingest.kmind.com.br/v1/agent/status
docker:
  socket: unix:///var/run/docker.sock
  apiVersion: auto
collection:
  metricsInterval: 90s
  diskUsageInterval: 15m
  metadataRefreshInterval: 5m
limits:
  memoryBufferBytes: 2097152
  maxMemoryBufferBytes: 5242880
  maxBatchBytes: 524288
  requestTimeout: 5s
stateDir: /var/lib/kmind-agent
  • KMIND_CONFIG_FILE aponta para um arquivo de configuracao alternativo.
  • KMIND_API_KEY_FILE e preferivel a KMIND_API_KEY, pois evita expor a chave no ambiente.
  • KMIND_COLLECTION_INTERVAL e KMIND_DISK_USAGE_INTERVAL ajustam os intervalos quando essas fontes estiverem disponiveis.
  • limits protege o host com limites de buffer, lote e timeout de rede.

Seguranca, validacao e suporte

O exemplo usa sistema de arquivos somente leitura, remove todas as capacidades Linux, ativa no-new-privileges, usa tmpfs e marca o proprio agente para nao ser monitorado.

Para verificar a instalacao, confirme que o container esta ativo e acompanhe os logs:

docker compose ps
docker compose logs --tail=100 kmind-agent-docker

Uma falha de rede ou indisponibilidade do Kmind nao deve interromper os containers monitorados: o agente limita seus buffers e descarta telemetria quando necessario para preservar o host. Se houver erro de chave, socket ou ativacao, revise a configuracao sem compartilhar a chave com o suporte.

Disponibilidade atual

A liberacao estavel incluira descoberta de containers, metricas de CPU/memoria/rede/I-O, inventario de imagens e volumes, eventos Docker e logs stdout/stderr. Ate essa liberacao, use esta pagina apenas para preparar e validar o ambiente de homologacao.

Precisa monitorar uma VM sem Docker? Consulte o guia do Kmind Agent para VM Linux.