Atualizado em: 12 de janeiro de 2021
Neste repositório do GitHub tem várias informações sobre o uso das imagens oficiais do Zabbix no Docker.
Se você não sabe o que é Docker, recomendo começar lendo os links abaixo. Vale a pena conhecer essa tecnologia.
http://blog.aeciopires.com/palestra-transportando-as-aplicacoes-entre-varios-ambientes-com-docker/
http://blog.aeciopires.com/primeiros-passos-com-docker/
Também realizo curso de Docker: http://blog.aeciopires.com/curso-docker
Neste tutorial, será mostrado como executar o Zabbix usando conteineres Docker, o que deixa a instalação bem simples e rápida. Será mostrado como iniciar os conteineres Zabbix e MySQL persistindo os dados.
0) Instale o Docker seguindo um dos tutoriais abaixo.
1) Crie um diretório para persistir os dados do MySQL.
sudo mkdir -p /docker/mysql/zabbix/data
2) OPCIONAL – Crie o diretório de certificado para uso do Zabbix via HTTPS (isso é recomendado por questões de segurança). Depois disso, copie o arquivo do certificado, da autoridade certificadora chave pública e privada para esse diretório.
sudo mkdir -p /docker/zabbix/ssl
3) Baixe a última versão das imagens docker do MySQL, Zabbix-Agent, Zabbix-Proxy, Zabbiz-Server e Zabbix-Web.
VERSAO_ZABBIX=5.2 docker pull mysql:8 docker pull zabbix/zabbix-agent:ubuntu-$VERSAO_ZABBIX-latest docker pull zabbix/zabbix-proxy-sqlite3:ubuntu-$VERSAO_ZABBIX-latest docker pull zabbix/zabbix-server-mysql:ubuntu-$VERSAO_ZABBIX-latest docker pull zabbix/zabbix-web-apache-mysql:ubuntu-$VERSAO_ZABBIX-latest
4) Inicie o conteiner docker do MySQL criando o banco de dados para o Zabbix. Altere os dados em negrito conforme as necessidades do seu ambiente.
docker run -d --name mysql-zabbix \ --restart always \ -p 3306:3306 \ -v /docker/mysql/zabbix/data:/var/lib/mysql \ -e MYSQL_HOST=172.17.0.1 \ -e MYSQL_ROOT_PASSWORD=secret \ -e MYSQL_DATABASE=zabbix \ -e MYSQL_USER=zabbix \ -e MYSQL_PASSWORD=zabbix \ mysql:8 \ --default-authentication-plugin=mysql_native_password \ --character-set-server=utf8 \ --collation-server=utf8_bin
Para ver o log, use o seguinte comando.
docker logs -f mysql-zabbix
5) Inicie o conteiner docker do Zabbix-Server acessando o banco de dados criado no MySQL. Altere os dados em negrito conforme as necessidades do seu ambiente.
docker run -d --name zabbix-server \ --restart always \ -p 10051:10051 \ -e MYSQL_ROOT_PASSWORD="secret" \ -e DB_SERVER_HOST="172.17.0.1" \ -e DB_SERVER_PORT="3306" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix" \ -e MYSQL_DATABASE="zabbix" \ zabbix/zabbix-server-mysql:ubuntu-$VERSAO_ZABBIX-latest
Para ver o log, use o seguinte comando.
docker logs -f zabbix-server
6) Inicie o conteiner Zabbix-Web SEM HTTPS. Altere os dados em negrito conforme as necessidades do seu ambiente.
docker run -d --name zabbix-web \ --restart always \ -p 80:8080 \ -e DB_SERVER_HOST="172.17.0.1" \ -e DB_SERVER_PORT="3306" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix" \ -e MYSQL_DATABASE="zabbix" \ -e ZBX_SERVER_HOST="172.17.0.1" \ -e PHP_TZ="America/Sao_Paulo" \ zabbix/zabbix-web-apache-mysql:ubuntu-$VERSAO_ZABBIX-latest
Ou inicie o conteiner docker do Zabbix-Web COM HTTPS acessando o banco de dados criado no MySQL e o conteiner Zabbix-Server. Altere os dados em negrito conforme as necessidades do seu ambiente.
docker run -d --name zabbix-web \
--restart always \
-p 80:8080 -p 443:8443 \
-v /docker/zabbix/ssl/file_certificado.crt:/etc/ssl/apache2/ssl.crt \
-v /docker/zabbix/ssl/file_certificado.key:/etc/ssl/apache2/ssl.key \
-e DB_SERVER_HOST="172.17.0.1" \
-e DB_SERVER_PORT="3306" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-e ZBX_SERVER_HOST="172.17.0.1" \
-e PHP_TZ="America/Sao_Paulo" \
zabbix/zabbix-web-apache-mysql:ubuntu-$VERSAO_ZABBIX-latest
Para ver o log, use o seguinte comando.
docker logs -f zabbix-web
7) Inicie o conteiner docker do Zabbix-Agent. Altere os dados em negrito e em vermelho conforme as necessidades do seu ambiente.
docker run -d --name zabbix-agent \
--net=host \
--hostname "$(hostname)" \
--privileged \
-v /:/rootfs \
-v /var/run:/var/run \
--restart always \
-p 10050:10050 \
-e ZBX_HOSTNAME="$(hostname)" \
-e ZBX_SERVER_HOST="IP_OU_NOME_DNS_ZABBIX_SERVER" \
zabbix/zabbix-agent:ubuntu-$VERSAO_ZABBIX-latest
Para ver o log, use o seguinte comando.
docker logs -f zabbix-agent
8) OPCIONAL – Inicie o conteiner docker do Zabbix-Proxy. Altere os dados em negrito e em vermelho conforme as necessidades do seu ambiente.
docker run -d --name zabbix-proxy \
--restart always \
-p 10053:10050 \
-e ZBX_HOSTNAME="$(hostname)" \
-e ZBX_SERVER_HOST="IP_OU_NOME_DNS_ZABBIX_SERVER" \
zabbix/zabbix-proxy-sqlite3:ubuntu-$VERSAO_ZABBIX-latest
Para ver o log, use o seguinte comando.
docker logs -f zabbix-proxy
9) Acesse o Zabbix na URL http://IP-Servidor (com HTTP) ou https://IP-Servidor (com HTTPS). O login é Admin e a senha padrão é zabbix.
10) Se quiser parar o conteiner, é só executar o seguinte comando.
docker stop nome-conteiner
11) Para iniciá-lo novamente, execute o seguinte comando.
docker start nome-conteiner
12) Para remover um conteiner, use os seguintes comandos.
docker stop nome-conteiner docker rm nome-conteiner
13) Para obter mais informações sobre o Zabbix, sobre as imagens docker e como customizar parâmetros de configuração, acesse os links abaixo.
docker exec mysql-zabbix sh -c 'exec mysqldump zabbix -uroot -p"MYSQL_ROOT_PASSWORD"' > /home/zabbix.sql
docker exec -i -t mysql-zabbix /bin/bash root@4f39b60a2dde:/# mysql -u root -p Enter password: mysql> drop database zabbix; mysql> create database zabbix; mysql> quit root@4f39b60a2dde:/# exit
Restaure o dump no banco novo. Altere os dados em negrito e em vermelho conforme as necessidades do seu ambiente.
docker stop zabbix-web
docker stop zabbix-server
docker exec -i mysql-zabbix /usr/bin/mysql -uroot -pMYSQL_ROOT_PASSWORD --database=zabbix < /home/zabbix.sql
docker start zabbix-server
docker start zabbix-web
ou
docker stop zabbix-web
docker stop zabbix-server
cat /home/zabbix.sql | docker exec mysql-zabbix sh -c 'exec /usr/bin/mysql -u root --password="MYSQL_ROOT_PASSWORD" zabbix'
docker start zabbix-server
docker start zabbix-web
Depois de instalado o zabbix não está monitorando o server.
Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused
como posso resolver ?
Bom dia, Bruno!
Provavelmente, este erro está ocorrendo porque você está utilizando o endereço 127.0.0.1 para que o contêiner do zabbix-agent acesse o contêiner do zabbix-server (onde ambos estão sendo executados no mesmo servidor físico/virtual).
Se este for o seu caso, troque o 127.0.0.1 pelo IP 172.17.0.1 (IP da interface docker0 criado automaticamente pelo Docker no servidor que executa os contêineres ou troque por outro IP que aparece na interface de rede do servidor físico/virtual). Dessa forma um contêiner tentará se comunicar com outro usando a interface de rede do servidor físico/virtual.
Do ponto de vista do contêiner, se você usar 127.0.0.1, ele tentará acessar usando a interface localhost do próprio contêiner e não do servidor físico/virtual que executa os contêineres. Isso geralmente causa confusão quando estamos trabalhando com contêineres.
Abraço.
Fiz isso e agora está com outro erro.
Received empty response from Zabbix Agent at [172.17.0.1]. Assuming that agent dropped connection because of access permissions
Aécio, não estou conseguindo monitorar o zabbix via agent, baseado nas informações que adicionei abaixo, consegue me dizer o que pode ser ?
docker run -d –name zabbix-agent \
–net=host \
–hostname “$(hostname)” \
–privileged \
-v /:/rootfs \
-v /var/run:/var/run \
–restart always \
-p 10050:10050 \
-e ZBX_HOSTNAME=”$(hostname)” \
-e ZBX_SERVER_HOST=”192.168.31.78″ \
zabbix/zabbix-agent:centos-$VERSAO_ZABBIX-latest
[root@zabbix_frontend_srv01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
71dd8a0c690b zabbix/zabbix-agent:centos-5.0-latest “/sbin/tini — /usr/…” 6 minutes ago Up 2 minutes zabbix-agent
5bf997930c3c zabbix/zabbix-web-apache-mysql:centos-5.0-latest “docker-entrypoint.sh” About an hour ago Up 2 minutes 8443/tcp, 0.0.0.0:80->8080/tcp zabbix-web
14062eaf6e85 zabbix/zabbix-server-mysql:centos-5.0-latest “/sbin/tini — /usr/…” 2 hours ago Up 2 minutes 0.0.0.0:10051->10051/tcp zabbix-server
Starting Zabbix Agent [zabbix_frontend_srv01]. Zabbix 5.0.9 (revision 4d07aaa).
Press Ctrl+C to exit.
7:20210323:182908.938 Starting Zabbix Agent [zabbix_frontend_srv01]. Zabbix 5.0.9 (revision 4d07aaa).
7:20210323:182908.954 **** Enabled features ****
7:20210323:182908.954 IPv6 support: YES
7:20210323:182908.954 TLS support: YES
7:20210323:182908.954 **************************
7:20210323:182908.955 using configuration file: /etc/zabbix/zabbix_agentd.conf
7:20210323:182908.957 agent #0 started [main process]
74:20210323:182908.959 agent #1 started [collector]
75:20210323:182908.961 agent #2 started [listener #1]
76:20210323:182908.973 agent #3 started [listener #2]
77:20210323:182908.977 agent #4 started [listener #3]
78:20210323:182908.984 agent #5 started [active checks #1]
78:20210323:182909.553 active check configuration update from [192.168.31.78:10051] started to fail (cannot connect to [[192.168.31.78]:10051]: [111] Connection refused)
78:20210323:183009.625 active check configuration update from [192.168.31.78:10051] is working again
78:20210323:183009.625 no active checks on server [192.168.31.78:10051]: host [zabbix_frontend_srv01] not found
Oi, Edgar!
Você cadastrou na interface web do zabbix o host zabbix_frontend_srv01 com o IP 192.168.31.78?
Outro detalhe é que talvez o contêiner esteja enviando a requisição ao Zabbix usando outro IP de interface de rede, por exemplo o IP do contêiner.
Vocẽ consegue pegar o IP do conteiner do zabbix-agent com o seguinte comando:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' CONTAINER_NAME-OR-ID_CONTAINER
Em todo caso, se o problema for esse, o IP do contêiner é dinâmico, muda toda vez que você recriá-lo e por isso não adianta cadastrar um host com este IP na interface web do Zabbix.
Uma alternativa é instalar no host do server o agente da forma tradicional mesmo ou pedir ajudar na comunidade Zabbix-BR em um dos canais citados na página: http://zabbixbrasil.org/?page_id=2151
Abraço.