Criação do Zabbix Server usando o docker-compose
Quero compartilhar aqui um projeto em docker compose que fiz para subir um servidor Zabbix Server 6.4 que utiliza um banco de dados Postgres. Também habilitei o https no servidor de frontend do zabbix, já utilizando uma feature que foi colocada pelos mantenedores da imagem. Esse recurso não tem uma documentação falando no site da imagem, o que dificultou um pouco a minha vida.
A seguir alguns detalhes que vou esclarecer melhor para quem for usar esse arquivo.
Para habilitar o https no frontend do Zabbix o recurso que eu falei que foi feito pelos desenvolvedores e que não achei a documentação no site da imagem é bem simples de uar, só precisa mapear como volume as chaves públicas e privadas com os nomes de ssl.key e ssl.crt para o diretório /etc/ssl/apache2/ que ao subir o container e localizar esses arquivos o container do frontend vai automaticamente habilitar no apache o https. uma coisa que não achei para fazer de forma automática é habilitar o redirecionamento automático das conexões de http para o https, caso eu identifique uma forma simples eu volto a atualizar o post.
Eu gosto de sempre criar uma rede separada para cada projeto que estou subindo em Docker, por isso tem essa criação de uma rede 10.200.0.0/24, isso não chega a ser necessário ou obrigatório, mas na minha opinião é bem util.
Vale lembrar que o Zabbix suporta tanto o Apache como o nginx como Servidores Web, e como banco de dados ele suporta MySQL e Postgres como bancos de dados, por isso se voce deseja usar uma versão deferente das versões que eu estou usando, é bem fácil de realizar a toda, apenas selecionando uma imagem diferente.
Alem dos servidores e bancos de dados diferentes que o Zabbix mantem, eles também mantem imagens de sistemas operacionais diferentes, voce pode escolher imagens usando o Oracle Linux, Ubuntu ou Alpine essa escolha fica a critério de cada um que for gerenciar o Servidor Zabbix.
Arquivo docker-compose para o Zabbix Server
- POSTGRES_PASSWORD=SENHA
volumes:
- /srv/volumes/zabbix-server-module:/var/lib/zabbix/modules
networks:
zabbix-rede:
ipv4_address: 10.200.0.7
zabbix-frontend:
container_name: zabbix-frontend
image: zabbix/zabbix-web-apache-pgsql:ubuntu-trunk
restart: always
pull_policy: always
environment:
- DB_SERVER_HOST=10.200.0.10
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=SENHA
- ZBX_SERVER_HOST=10.200.0.7
- PHP_TZ=America/Sao_Paulo
networks:
zabbix-rede:
ipv4_address: 10.200.0.8
ports:
- 8080:8080
- 443:8443
volumes:
- /srv/volumes/zabbix-frontend/ssl.key:/etc/ssl/apache2/ssl.key
- /srv/volumes/zabbix-frontend/ssl.crt:/etc/ssl/apache2/ssl.crt
zabbix-pgsql:
container_name: zabbix-pgsql
image: postgres:15.1-bullseye
restart: always
environment:
- POSTGRES_PASSWORD=SENHA
volumes:
- /srv/volumes/zabbix-pgsql:/var/lib/postgresql/data
networks:
zabbix-rede:
ipv4_address: 10.200.0.10
ports:
- 5432:5432
networks:
zabbix-rede:
driver: bridge
ipam:
config:
- subnet: 10.200.0.0/24
gateway: 10.200.0.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
version
:
'2.4'
services
:
zabbix
-
server
:
container_name
:
zabbix
-
server
image
:
zabbix
/
zabbix
-
server
-
pgsql
:
ol
-
trunk
restart
:
always
pull_policy
:
always
environment
:
-
DB_SERVER_HOST
=
10.200.0.10
-
POSTGRES_USER
=
postgres
-
POSTGRES_PASSWORD
=
SENHA
volumes
:
-
/
srv
/
volumes
/
zabbix
-
server
-
module
:
/
var
/
lib
/
zabbix
/
modules
networks
:
zabbix
-
rede
:
ipv4_address
:
10.200.0.7
zabbix
-
frontend
:
container_name
:
zabbix
-
frontend
image
:
zabbix
/
zabbix
-
web
-
apache
-
pgsql
:
ubuntu
-
trunk
restart
:
always
pull_policy
:
always
environment
:
-
DB_SERVER_HOST
=
10.200.0.10
-
POSTGRES_USER
=
postgres
-
POSTGRES_PASSWORD
=
SENHA
-
ZBX_SERVER_HOST
=
10.200.0.7
-
PHP_TZ
=
America
/
Sao_Paulo
networks
:
zabbix
-
rede
:
ipv4_address
:
10.200.0.8
ports
:
-
8080
:
8080
-
443
:
8443
volumes
:
-
/
srv
/
volumes
/
zabbix
-
frontend
/
ssl
.key
:
/
etc
/
ssl
/
apache2
/
ssl
.key
-
/
srv
/
volumes
/
zabbix
-
frontend
/
ssl
.crt
:
/
etc
/
ssl
/
apache2
/
ssl
.crt
zabbix
-
pgsql
:
container_name
:
zabbix
-
pgsql
image
:
postgres
:
15.1
-
bullseye
restart
:
always
environment
:
-
POSTGRES_PASSWORD
=
SENHA
volumes
:
-
/
srv
/
volumes
/
zabbix
-
pgsql
:
/
var
/
lib
/
postgresql
/
data
networks
:
zabbix
-
rede
:
ipv4_address
:
10.200.0.10
ports
:
-
5432
:
5432
networks
:
zabbix
-
rede
:
driver
:
bridge
ipam
:
config
:
-
subnet
:
10.200.0.0
/
24
gateway
:
10.200.0.1
Também estou disponibilizando no meu repositório do gitlab esse projeto: https://gitlab.com/publicos-adonai/docker-compose-zabbix-server
Referências
Site do Zabbix que mostra a lista de imagem Docker:
https://www.zabbix.com/container_images
Docker imagem do Servidor Zabbix com Postgresl: https://hub.docker.com/r/zabbix/zabbix-server-pgsql
Imagem Docker do Zabbix Frontend com Apache e Postgresl:
https://hub.docker.com/r/zabbix/zabbix-web-apache-pgsql
Banco de Dados Postgresl:
https://hub.docker.com/_/postgres
Projeto do Zabbix que contêm vários Docker compose muito mais completos que o meu para usuários mais experientes:
https://github.com/zabbix/zabbix-docker
Para visualizar mais conteúdo do meu site sobre Zabbix:
https://www.adonai.eti.br/category/zabbix
Mais conteúdo sobre Docker:
https://www.adonai.eti.br/category/docker
Olá Adonai!
Muito obrigado pelo seu post aqui, me ajudou muito!
Estou tentando subir o mesmo docker-compose que o seu, mas o meu zabbix-server está dando este problema: “cannot use database “zabbix”: its “users” table is empty (is this the Zabbix proxy database?)”
Sabe o que pode ser?
A única diferença é que estou usando o MySQL para banco de dados.
Obrigado!