01 Zabbix Server 설치 via Docker

공식 설명서에 기반한 Zabbix Server 설치방법 안내

사전 설치

https://docs.docker.com/engine/install/ubuntu/

https://docs.docker.com/engine/install/centos/


버전 확인

# git ls-remote --tags https://github.com/zabbix/zabbix-docker.git
# git ls-remote --heads https://github.com/zabbix/zabbix-docker.git
f44498998f6efb042f8fd1990f58c1e09121860c	refs/heads/5.0
e506a524f0757d1fc8b502a9cb8e0ee3576d9f8b	refs/heads/6.0
54af5dbeb0328daf41fe58e7fa32214cc8139d86	refs/heads/7.0
0bc97ea57cfa9b1522dcdcaef8b8bb494abaa258	refs/heads/7.2


클론

git clone --branch 7.2 --depth 1 https://github.com/zabbix/zabbix-docker.git /opt/zabbix


DB 암호 변경

openssl rand -base64 64 | tr -dc 'a-zA-Z0-9' | head -c 32 > /opt/zabbix/env_vars/.MYSQL_ROOT_PASSWORD
openssl rand -base64 64 | tr -dc 'a-zA-Z0-9' | head -c 32 > /opt/zabbix/env_vars/.MYSQL_PASSWORD
openssl rand -base64 64 | tr -dc 'a-zA-Z0-9' | head -c 32 > /opt/zabbix/env_vars/.POSTGRES_PASSWORD


TZ 변경

sed -i 's/# PHP_TZ=.*/PHP_TZ=Asia\/Seoul/g' /opt/zabbix/env_vars/.env_web


변경사항 확인

# cd /opt/zabbix
# git diff --name-only | cat
env_vars/.MYSQL_PASSWORD
env_vars/.MYSQL_ROOT_PASSWORD
env_vars/.POSTGRES_PASSWORD
env_vars/.env_web


실행

cd /opt/zabbix
docker compose up -d
# wait 2 minutes


비고

레포 구조

# cd /opt/zabbix

# ls -al *compose*
compose.yaml -> docker-compose_v3_alpine_mysql_latest.yaml
compose_additional_components.yaml
compose_databases.yaml
compose_zabbix_components.yaml
docker-compose_v3_alpine_mysql_latest.yaml
docker-compose_v3_alpine_pgsql_latest.yaml
docker-compose_v3_centos_mysql_latest.yaml
docker-compose_v3_centos_pgsql_latest.yaml
docker-compose_v3_ol_mysql_latest.yaml
docker-compose_v3_ol_pgsql_latest.yaml
docker-compose_v3_ubuntu_mysql_latest.yaml
docker-compose_v3_ubuntu_pgsql_latest.yaml

# ls -al env_vars/
chrome_dp.json
.env_web
...
mysql_init/
.MYSQL_PASSWORD
.MYSQL_ROOT_PASSWORD
.POSTGRES_PASSWORD
...

# tree -F zbx_env/
zbx_env/
├── etc/
│   └── ssl/
│       └── nginx/
├── usr/
│   ├── lib/
│   │   └── zabbix/
│   │       ├── alertscripts/
│   │       └── externalscripts/
│   └── share/
│       └── zabbix/
│           └── modules/
└── var/
    └── lib/
        ├── mysql/
        │     ...
        └── zabbix/
            ├── dbscripts/
            ├── enc/
            ├── export/
            ├── mibs/
            ├── modules/
            ├── ssh_keys/
            └── ssl/
                ├── certs/
                ├── keys/
                └── ssl_ca/


실행 컨테이너 목록

컨테이너 2개는 종료 되어 있어야 정상

# docker ps -a
...  STATUS                   PORTS                                        NAMES
...  Up 3 hours               0.0.0.0:10051->10051/tcp,                    zabbix-zabbix-server-1
...  Up 3 hours (healthy)     0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp  zabbix-zabbix-web-nginx-mysql-1
...  Exited (0) 3 hours ago                                                zabbix-server-db-init-1
...  Exited (0) 3 hours ago                                                zabbix-db-data-mysql-1
...  Up 3 hours                                                            zabbix-mysql-server-1


잘못 설정했을 때 삭제

## revert file if needed
git checkout HEAD -- /opt/zabbix/env_vars/.env_web

cd /opt/zabbix
docker compose down
docker volume rm zabbix_snmptraps
yes | docker volume prune
rm -rf /opt/zabbix/zbx_env