O Zabbix fornece Docker imagens para cada componente do Zabbix como containers portáveis e autosufiencientes, acelerando o procedimento de implantação e atualização.
Os componentes do Zabbix vêm com suporte para banco de dados MySQL e PostgreSQL, e suporte para servidores web Apache2 e Nginx. Essas imagens são dividas em diferentes imagens.
Desde a versão do Zabbix 6.0, os triggers determinísticos precisam ser criados durante a instalação. Se o log binário estiver habilitado para MySQL/MariaDB, isso requer privilégios de superuser ou a configuração da variable/configuration parameter log_bin_trust_function_creators = 1. Para instruções sobre como configurar a variável, consulte Database creation scripts
Observe que, se estiver executando a partir de um console, a variável será definida apenas temporariamente e será removida quando um Docker for reiniciado. Nesse caso, mantenha o serviço SQL rodando, apenas pare o serviço zabbix-server executando 'docker compose down zabbix-server' e, em seguida, 'docker compose up -d zabbix-server'.
Se preferir, você pode definir essa variável no arquivo de configuração.
Os componentes Zabbix são disponibilizados em imagens construídas sobre Ubuntu, Alpine Linux e CentOS:
Todas as imagens são configuradas para reconstruir as últimas imagens caso alguma das imagens base receba atualização.
Todos podem acompanhar alterações nos arquivos Docker através do repositório oficial no github.com. Você também pode realizar um fork do projeto ou criar suas próprias imagens baseadas nos arquivos Docker oficiais.
Todos os componentes Zabbix estão disponíveis nos seguintes repositórios Docker:
Adicionalmente há suporte para SNMP Trap. Ele é fornecido através de repositório adicional (zabbix/zabbix-snmptraps) baseado apenas em Ubuntu Trusty. Tal solução pode ser associada com Zabbix Server e Zabbix Proxy.
Cada repositório de componentes Zabbix contém as seguintes tags:
latest
- versão estável mais recente de um componente Zabbix baseado em imagem Alpine Linuxalpine-latest
- versão estável mais recente de um componente Zabbix baseado em imagem Alpine Linuxubuntu-latest
- versão estável mais recente de um componente Zabbix baseado em imagem Ubuntualpine-5.4-latest
- versão secundária (minor version) mais recente de um componente Zabbix 5.4 baseado em imagem Alpine Linuxubuntu-5.4-latest
- versão secundária (minor version) mais recente de um componente Zabbix 5.4 baseado em imagem Ubuntualpine-5.4.*
- diferentes versões secundárias (minor versions) de um componente Zabbix 5.4 baseado em imagem Alpine Linux, onde *
representa a versão secundária do componente Zabbixubuntu-5.4.*
- diferentes versões secundárias (minor versions) de um componente Zabbix 5.4 baseado em imagem Ubuntu, onde *
representa a versão secundária do componente ZabbixAfter downloading the images, start the containers by executing docker run
command followed by additional arguments to specify required environment variables and/or mount points. Some configuration examples are provided below.
Zabbix must not be run as PID1/as an init process in containers.
Todas as imagens de componentes Zabbix fornecem variáveis de ambiente para controlar a configuração. Estas variáveis de ambiente estão listadas em cada repositório dos componentes. Tais variáveis são opções vindas dos arquivos de configuração do Zabbix, mas com método de nomenclatura diferenciado. Por exemplo, ZBX_LOGSLOWQUERIES
é o mesmo que a opção LogSlowQueries
dos arquivos de configuração do Zabbix Server e Zabbix Proxy.
Algumas opções de configuração não podem ser alteradas. Por exemplo, PIDFile
and LogType
.
Alguns dos componentes possuem variáveis de ambiente específicas, que não existem nos arquivos de configuração oficiais do Zabbix:
Variável | Componentes | Descrição |
DB_SERVER_HOST |
Server Proxy Web interface |
Esta variável representa o IP ou nome DNS do servidor MySQL ou PostgreSQL. Por padrão, seu valor é mysql-server ou postgres-server para MySQL ou PostgreSQL, respectivamente. |
DB_SERVER_PORT |
Server Proxy Web interface |
Esta variável representa a porta do servidor MySQL ou PostgreSQL. Por padrão, seu valor é '3306' ou '5432', respectivamente. |
MYSQL_USER |
Server Proxy Web-interface |
Usuário do banco de dados MySQL. Por padrão, seu valor é 'zabbix'. |
MYSQL_PASSWORD |
Server Proxy Web interface |
Senha do banco de dados MySQL. Por padrão, seu valor é 'zabbix'. |
MYSQL_DATABASE |
Server Proxy Web interface |
Nome do banco de dados do Zabbix. Por padrão, seu valor é 'zabbix' para Zabbix Server e 'zabbix_proxy' para Zabbix Proxy. |
POSTGRES_USER |
Server Web interface |
Usuário do banco de dados PostgreSQL. Por padrão, seu valor é 'zabbix'. |
POSTGRES_PASSWORD |
Server Web interface |
Senha do banco de dados PostgreSQL. Por padrão, seu valor é 'zabbix'. |
POSTGRES_DB |
Server Web interface |
Nome do banco de dados do Zabbix. Por padrão, seu valor é 'zabbix' para Zabbix Server e 'zabbix_proxy' para Zabbix Proxy. |
PHP_TZ |
Web-interface | Timezone no formato PHP. Lista completa de timezones suportados disponível em php.net. Por padrão, seu valor é 'Europe/Riga'. |
ZBX_SERVER_NAME |
Web interface | Nome de instalação visível no canto superior direito da interface web. Por padrão, seu valor é 'Zabbix Docker' |
ZBX_JAVAGATEWAY_ENABLE |
Server Proxy |
Habilita comunicação com Zabbix Java Gateway para coleta de verificações relacionadas ao Java. Por padrão, seu valor é "false" |
ZBX_ENABLE_SNMP_TRAPS |
Server Proxy |
Habilita a funcionalidade SNMP Trap. Requer instância zabbix-snmptraps e volume /var/lib/zabbix/snmptraps compartilhado para Zabbix Server ou Zabbix Proxy. |
As imagens permitem utilizar alguns pontos de montagem. Estes pontos de montagem são diferentes e dependem do tipo de componente Zabbix:
Volume | Descrição |
Zabbix Agent | |
/etc/zabbix/zabbix_agentd.d | O volume permite incluir arquivos *.conf e estende o Zabbix Agent usando a funcionalidade UserParameter |
/var/lib/zabbix/modules | O volume permite carregar módulos adicionais e estende o Zabbix Agent usando a funcionalidade LoadModule |
/var/lib/zabbix/enc | O volume é usado para armazenar arquivos relacionados a TLS. Estes nomes de arquivo são especificados usando as variáveis de ambiente ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE e ZBX_TLSPSKFILE |
Zabbix Server | |
/usr/lib/zabbix/alertscripts | O volume é usado para scripts de alerta customizados. É o parâmetro AlertScriptsPath no zabbix_server.conf |
/usr/lib/zabbix/externalscripts | O volume é usado por verificações externas. É o parâmetro ExternalScripts no zabbix_server.conf |
/var/lib/zabbix/modules | O volume permite carregar módulos adicionais e estende o Zabbix Server usando a funcionalidade LoadModule |
/var/lib/zabbix/enc | O volume é usado para armazenar arquivos relacionados a TLS. Estes nomes de arquivo são especificados usando as variáveis de ambiente ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE e ZBX_TLSPSKFILE |
/var/lib/zabbix/ssl/certs | O volume é usado como local para os arquivos de certificado de cliente SSL para autenticação de cliente. É o parâmetro SSLCertLocation no zabbix_server.conf |
/var/lib/zabbix/ssl/keys | O volume é usado como local para os arquivos de chave privada SSL para autenticação de cliente. É o parâmetro SSLKeyLocation no zabbix_server.conf |
/var/lib/zabbix/ssl/ssl_ca | O volume é usado como local para arquivos de certificado de autoridade (CA) para verificação SSL de certificado de servidor. É o parâmetro SSLCALocation no zabbix_server.conf |
/var/lib/zabbix/snmptraps | O volume é usado como local para o arquivo snmptraps.log. Ele pode ser compartilhado pelo conteiner zabbix-snmptraps e herdado usando a opção volumes_from do Docker durante a criação de uma nova instância do Zabbix Server. A funcionalidade de processamento de SNMP Trap pode ser habilitada pelo uso do volume compartilhado e alterando a variável de ambiente ZBX_ENABLE_SNMP_TRAPS para 'true' |
/var/lib/zabbix/mibs | O volume permite adicionar novos arquivos MIB. Ele não suporta subdiretórios, assim todas as MIBs devem estar em /var/lib/zabbix/mibs |
Zabbix Proxy | |
/usr/lib/zabbix/externalscripts | O volume é usado por verificações externas. É o parâmetro ExternalScripts no zabbix_proxy.conf |
/var/lib/zabbix/modules | O volume permite carregar módulos adicionais e estender o Zabbix Proxy usando a funcionalidade LoadModule |
/var/lib/zabbix/enc | O volume é usado para armazenar arquivos relacionados a TLS. Estes nomes de arquivo são especificados usando as variáveis de ambiente ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE e ZBX_TLSPSKFILE |
/var/lib/zabbix/ssl/certs | O volume é usado como local para os arquivos de certificado de cliente SSL para autenticação de cliente. É o parâmetro SSLCertLocation no zabbix_proxy.conf |
/var/lib/zabbix/ssl/keys | O volume é usado como local para os arquivos de chave privada SSL para autenticação de cliente. É o parâmetro SSLKeyLocation no zabbix_proxy.conf |
/var/lib/zabbix/ssl/ssl_ca | O volume é usado como local para arquivos de certificado de autoridade (CA) para verificação SSL de certificado de servidor. É o parâmetro SSLCALocation no zabbix_proxy.conf |
/var/lib/zabbix/snmptraps | O volume é usado como local para o arquivo snmptraps.log. Ele pode ser compartilhado pelo conteiner zabbix-snmptraps e herdado usando a opção volumes_from do Docker durante a criação de uma nova instância do Zabbix Server. A funcionalidade de processamento de SNMP Trap pode ser habilitada pelo uso do volume compartilhado e alterando a variável de ambiente ZBX_ENABLE_SNMP_TRAPS para 'true' |
/var/lib/zabbix/mibs | O volume permite adicionar novos arquivos MIB. Ele não suporta subdiretórios, assim todas as MIBs devem estar em /var/lib/zabbix/mibs |
Zabbix Web Interface baseada em Apache2 Web Server | |
/etc/ssl/apache2 | O volume permite habilitar o protocolo HTTPS para o Zabbix Web Interface. O volume deve conter os dois arquivos ssl.crt e ssl.key preparados para conexões Apache2 SSL |
Zabbix Web Interface baseada em Nginx Web Server | |
/etc/ssl/nginx | O volume permite habilitar o protocolo HTTPS para o Zabbix Web Interface. O volume deve conter os arquivos ssl.crt , ssl.key e dhparam.pem preparados para conexões Nginx SSL |
Zabbix snmptraps | |
/var/lib/zabbix/snmptraps | O volume contém o arquivo de log snmptraps.log nomeado com os SNMP Traps recebidos |
/var/lib/zabbix/mibs | O volume permite adicionar novos arquivos MIB. Ele não suporta subdiretórios, assim todas as MIBs devem estar em /var/lib/zabbix/mibs |
Para informação adicional utilize os repositórios oficiais do Zabbix no Docker Hub.
Exemplo 1
O exemplo demonstra como executar o Zabbix Server com suporte a banco de dados MySQL, Zabbix Web Interface baseada em Nginx Web Server e Zabbix Java Gateway.
1. Crie uma rede dedicada aos contêineres dos componentes Zabbix:
2. Inicie uma instância vazia de MySQL Server
# docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-d mysql:8.0 \
--restart unless-stopped \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
3. Inicie uma instância do Zabbix Java Gateway
# docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-5.4-latest
4. Inicie a instância do Zabbix Server e a associe à instância do MySQL Server recém-criada
# docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-5.4-latest
A instância do Zabbix Server expõe a porta 10051/TCP (Zabbix trapper) para máquina local.
5. Inicie o Zabbix Web Interface e o associe às instâncias do MySQL Server e Zabbix Server
# docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest
A instância do Zabbix Web Interface expõe a porta 80/TCP (HTTP) para a máquina local.
Exemplo 2
O exemplo demonstra como executar o Zabbix Server com suporte a PostgreSQL, Zabbix Web Interface baseada em Nginx Web Server e funcionalidade SNMP Trap.
1. Crie uma rede dedicada para os contêineres dos componentes Zabbix:
2. Inicie uma instância vazia do PostgreSQL Server
# docker run --name postgres-server -t \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
--restart unless-stopped \
-d postgres:latest
3. Inicie uma instância do Zabbix snmptraps
# docker run --name zabbix-snmptraps -t \
-v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw \
-v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro \
--network=zabbix-net \
-p 162:1162/udp \
--restart unless-stopped \
-d zabbix/zabbix-snmptraps:alpine-5.4-latest
A instância do Zabbix snmptrap expõe a porta 162/UDP (SNMP traps) para a máquina local.
4. Inicie a instância do Zabbix Server e a associe com a instância do PostgreSQL Server
# docker run --name zabbix-server-pgsql -t \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
-e ZBX_ENABLE_SNMP_TRAPS="true" \
--network=zabbix-net \
-p 10051:10051 \
--volumes-from zabbix-snmptraps \
--restart unless-stopped \
-d zabbix/zabbix-server-pgsql:alpine-5.4-latest
A instância do Zabbix Server expõe a porta 10051/TCP (Zabbix trapper) para a máquina local.
5. Inicie o Zabbix Web Interface e o associe às instâncias do PostgreSQL Server e Zabbix Server
# docker run --name zabbix-web-nginx-pgsql -t \
-e ZBX_SERVER_HOST="zabbix-server-pgsql" \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
-p 443:8443 \
-p 80:8080 \
-v /etc/ssl/nginx:/etc/ssl/nginx:ro \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-pgsql:alpine-5.4-latest
A instância do Zabbix Web Interface expõe a porta 443/TCP (HTTPS) para a máquina local.
O diretório /etc/ssl/nginx deve conter certificado com o nome requerido.
Exemplo 3
O exemplo demonstra como executar o Zabbix Server com suporte a MySQL, Zabbix Web Interface baseada em Nginx Web Server e Zabbix Java Gateway usando podman
em Red Hat 8.
1. Crie um novo pod com o nome zabbix
e exponha as portas (web-interface, Zabbix server trapper):
2. (optional) Inicie o contêiner do Zabbix Agent no pod zabbix
:
podman run --name zabbix-agent \
-eZBX_SERVER_HOST="127.0.0.1,localhost" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-agent-50:latest
3. Crie o diretório ./mysql/
na máquina e inicie o Oracle MySQL Server 8.0:
podman run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-v ./mysql/:/var/lib/mysql/:Z \
--restart=always \
--pod=zabbix \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
3. Inicie o contêiner do Zabbix Server:
podman run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="127.0.0.1" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-server-mysql-50
4. Inicie o contêiner do Zabbix Java Gateway:
podman run --name zabbix-java-gateway -t \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-java-gateway-50
5. Inicie o contêiner do Zabbix Web-Interface:
podman run --name zabbix-web-mysql -t \
-e ZBX_SERVER_HOST="127.0.0.1" \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-web-mysql-50
O Pod zabbix
expõe a porta 80/TCP (HTTP) para a máquina local a partir da porta 8080/TCP do contêiner zabbix-web-mysql
.
A Zabbix também fornece arquivos compose para definição e execução multi-container dos componentes Zabbix em Docker. Estes arquivos compose estão disponíveis no repositório oficial do Zabbix no github.com: https://github.com/zabbix/zabbix-docker. Estes arquivos compose estão disponíveis como exemplos, e estão sobrecarregados. Por exemplo, eles contém proxies com suporte a MySQL e SQLite3.
Há algumas versões diferentes de arquivos compose:
Nome do arquivo | Descrição |
docker-compose_v3_alpine_mysql_latest.yaml |
O arquivo compose executa a versão mais recente dos componentes do Zabbix 5.4 em Alpine Linux com suporte a MySQL. |
docker-compose_v3_alpine_mysql_local.yaml |
O arquivo compose constrói localmente a versão mais recente do Zabbix 5.4 e executa os componentes Zabbix em Alpine Linux com suporte a MySQL. |
docker-compose_v3_alpine_pgsql_latest.yaml |
O arquivo compose executa a versão mais recente dos componentes do Zabbix 5.4 em Alpine Linux com suporte a PostgreSQL. |
docker-compose_v3_alpine_pgsql_local.yaml |
O arquivo compose constrói localmente a versão mais recente do Zabbix 5.4 e executa os componentes Zabbix em Alpine Linux com suporte a PostgreSQL. |
docker-compose_v3_centos_mysql_latest.yaml |
O arquivo compose executa a versão mais recente dos componentes do Zabbix 5.4 em CentOS 8 com suporte a MySQL. |
docker-compose_v3_centos_mysql_local.yaml |
O arquivo compose constrói localmente a versão mais recente do Zabbix 5.4 e executa os componentes Zabbix em CentOS 8 com suporte a MySQL. |
docker-compose_v3_centos_pgsql_latest.yaml |
O arquivo compose executa a versão mais recente dos componentes do Zabbix 5.4 em CentOS 8 com suporte a PostgreSQL. |
docker-compose_v3_centos_pgsql_local.yaml |
O arquivo compose constrói localmente a versão mais recente do Zabbix 5.4 e executa os componentes Zabbix em CentOS 8 com suporte a PostgreSQL. |
docker-compose_v3_ubuntu_mysql_latest.yaml |
O arquivo compose executa a versão mais recente dos componentes do Zabbix 5.4 em Ubuntu 20.04 com suporte a MySQL. |
docker-compose_v3_ubuntu_mysql_local.yaml |
O arquivo compose constrói localmente a versão mais recente do Zabbix 5.4 e executa os componentes Zabbix em Ubuntu 20.04 com suporte a MySQL. |
docker-compose_v3_ubuntu_pgsql_latest.yaml |
O arquivo compose executa a versão mais recente dos componentes do Zabbix 5.4 em Ubuntu 20.04 com suporte a PostgreSQL. |
docker-compose_v3_ubuntu_pgsql_local.yaml |
O arquivo compose constrói localmente a versão mais recente do Zabbix 5.4 e executa os componentes Zabbix em Ubuntu 20.04 com suporte a PostgreSQL. |
Os arquivos compose disponíveis suportam a versão 3 do Docker Compose.
Os arquivos compose são configurados para suportar armazenamento na máquina local. O Docker Compose criará um diretório zbx_env
na pasta com o arquivo compose quando você executar os componentes do Zabbix utilizando um arquivo compose. O diretório conterá a mesma estrutura como descrita acima na seção de Volumes e diretório para armazenamento de banco de dados.
Há também volumes no modo somente-leitura para os arquivos /etc/localtime
e /etc/timezone
.
No mesmo diretório com os arquivos compose no github.com você pode encontrar arquivos com variáveis de ambiente padrão para cada componente no arquivo compose. Estes arquivos de ambiente são nomeados como .env_<type of component>
.
Exemplo 1
O comando fará o download das imagens mais recentes do Zabbix 5.4 para cada componente Zabbix e os executará de forma individual (detach mode).
Não esqueça de baixar os arquivos .env_<type of component>
do repositório oficial do Zabbix no github.com com os arquivos compose.
Exemplo 2
Este comando fará o download da imagem base Ubuntu 20.04 (focal), então construirá os componentes do Zabbix 5.4 localmente e os executará de forma individual (detach mode).