Docker Compose

Escrito por Hitfy

Template: Template_DockerCompose_Padrao

As coletas para monitoramento do Docker são feitas via API REST exposta pelo Docker Engine na porta 4243/TCP, a partir do Zabbix Proxy ou Zabbix Server.


Configuração do Servidor Docker

Expor a API do Docker Engine

Por padrão, a API REST do Docker não fica disponível na porta TCP.

Será necessário habilitá-la alterando o serviço do Docker.


Antes de iniciar, valide que a porta não está acessível:

curl http://IP_DO_SERVIDOR:4243/version


Retorno esperado:

curl: (7) Failed connect to IP:4243; Conexão recusada


Configuração do Serviço Docker

Editar o arquivo docker.service

Edite o arquivo de unidade do systemd:

vi /lib/systemd/system/docker.service


Observação: Em algumas distribuições o arquivo pode estar em:

/usr/lib/systemd/system/docker.service


Localize a linha:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock


E substitua por:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock


Para validar a localização exata do docker.sock:

find / -name docker.sock


Aplicar alterações

Atenção: o Docker será reiniciado todos os containers serão interrompidos temporariamente.

Recomenda-se combinar uma janela com o cliente.


Execute:

sudo systemctl daemon-reload
sudo systemctl restart docker


Validar a API Docker após habilitar

Teste novamente via CURL:

curl http://IP_DO_SERVIDOR:4243/version


Se configurado corretamente, haverá retorno em JSON semelhante a:

{
  "Version": "20.10.7",
  "ApiVersion": "1.41",
  "MinAPIVersion": "1.12",
  ...
}


Configuração do Zabbix Agent / Proxy

Script de Monitoramento

Fazer o download do arquivo:

wget https://app.hitfy.io/downloads/monitoramento/Docker/docker.sh


Colocar no diretório:

/etc/zabbix


Após habilitar a API, reinicie o Zabbix Agent e o Proxy:

systemctl restart zabbix-agent

systemctl restart zabbix-proxy


Configuração do Host

Padrão de nomenclatura: DockerCompose_HostnameSO

Grupo: Docker


Macros Necessárias

Configure as macros conforme o padrão:

{$IP} - IP do docker

{$PORTA} - Porta do Docker


Erros Conhecidos

Erro: curl: (7) Failed connect to IP:4243; Connection refused

Causa:

A porta 4243 não está exposta ou o Docker não foi reiniciado.

Solução:

Rever configuração do /lib/systemd/system/docker.service e reiniciar o serviço.


Erro: permission denied while trying to connect to the Docker socket

Causa:

Processo do Zabbix não tem permissão no docker.sock.

Solução:

Adicionar o usuário do Zabbix ao grupo docker:

usermod -aG docker zabbix
systemctl restart zabbix-agent