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 e 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