VM으로 구성되어 있던 Zabbix 일부 환경을 컨테이너로 변경
현재
- Windows 머신에 Hyper-V를 설치하여 Zabbix를 VM으로 구성
- VM 구성
- zabbix - zabbix web(zweb), zabbix proxy(zproxy), zabbix server(zserver), zabbix db(zdb)
- grafana - grafana(grafana)
- VM 구성
변경
- Windows 머신에 Docker(WSL 포함)를 설치하고 Zabbix 일부를 컨테이너로 이전
- VM 구성 - zabbix server(zserver), zabbix db(zdb) -> 기존 장비 사용
- 컨테이너 구성 - zabbix web, grafana
- 구성 제외 - zabbix proxy (postgresql 용 zabbix proxy 컨테이너 이미지가 없어 제외)
작업 진행 전 기존 VM의 서버는 모두 중지 (zweb, zproxy, zserver)
zabbxi server를 컨테이너로 구성을 했더니 모니터링 대상 zabbix agent passive 모드에서 zabbix server를 찾지 못함.
- 포트 포워딩, 라우팅 설정등을 해 봤으나 컨테이너 zabbix server 에서 모니터링 대상 VM을 찾지 못함.
1. 사전 준비
- Zabbix 7.0.6, Grafana 11.4.0 버전의 공식 Docker 이미지 가져오기 (WSL 실행 후 진행)
# docker pull zabbix/zabbix-server-pgsql:ubuntu-7.0.6- # docker pull zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0.6
- # docker pull grafana/grafana:11.4.0
# docker pull zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0.6
ubuntu-7.0.6: Pulling from zabbix/zabbix-web-nginx-pgsql
8f2b9db5249a: Download complete
9514c38a94af: Download complete
4f4fb700ef54: Already exists
95879bcb689f: Download complete
0ed3954940b2: Download complete
Digest: sha256:55d1c6361d8937d114e2a93d2f9b529f8c6487ff467e740dcdd1481869d752cf
Status: Downloaded newer image for zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0.6
docker.io/zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0.6
# docker pull grafana/grafana:11.4.0
11.4.0: Pulling from grafana/grafana
9b4925e32b92: Download complete
ebcbc122b722: Download complete
d7013a437817: Download complete
b2ddcf85da57: Download complete
e0862465767a: Download complete
00a90dd48f56: Download complete
8964b0551c55: Download complete
1739eaecb10c: Download complete
da9db072f522: Download complete
989e41ffb5ca: Download complete
Digest: sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb
Status: Downloaded newer image for grafana/grafana:11.4.0
docker.io/grafana/grafana:11.4.0
2. Zabbix 서버 컨테이너 실행
zabbix db IP, 사용자명, DB 패스워드는 현재 구성되어 있는 VM 정보 입력
docker run -d --name zabbix-server-pgsql \
-e DB_SERVER_HOST=<자빅스 DB IP> \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD=<DB 패스워드> \
-e POSTGRES_DB="zabbix" \
-e ZBX_SNMPTRAPPERFILE="/var/lib/zabbix/snmptraps/snmptraps.log" \
-e ZBX_STARTSNMPTRAPPER=1 \
-p 10051:10051 \
-p 162:162/udp \
-p 9999:9999 \
--restart unless-stopped \
zabbix/zabbix-server-pgsql:ubuntu-7.0.6
2. Zabbix 웹 인터페이스 컨테이너 실행
- zabbix db IP, 사용자명, DB 패스워드는 현재 구성되어 있는 VM 정보 입력
docker run -d --name zabbix-web-nginx-pgsql \
-e DB_SERVER_HOST="<자빅스 DB IP>" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="<DB 패스워드>" \
-e POSTGRES_DB="zabbix" \
-e ZBX_SERVER_HOST="<자빅스 Server IP>" \
-e TZ=Asia/Seoul \
-p 80:8080 \
-p 443:8443 \
--restart unless-stopped \
zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0.6
3. Grafana 컨테이너 실행
- zabbix db IP, 사용자명, DB 패스워드는 현재 구성되어 있는 VM 정보 입력
docker run -d --name grafana \
-e TZ=Asia/Seoul \
-p 3000:3000 \
-v grafana-storage:/var/lib/grafana \
--restart unless-stopped \
grafana/grafana:11.4.0
4. SNMP 설정
zabbix 서버 컨터이너에 SNMP 커뮤니티 설정 추가 (SNMP 커뮤니티 - zpub)
docker exec -it zabbix-server-pgsql bash
echo "zpub" > /var/lib/zabbix/snmptraps/snmp.community
chmod 0600 /var/lib/zabbix/snmptraps/snmp.community
exit
4. 컨테이너 실행 확인
- # docker ps
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e8800cbea11 grafana/grafana:11.4.0 "/run.sh" About a minute ago Up About a minute 0.0.0.0:3000->3000/tcp grafana
ac95c32a14b1 zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0.6 "docker-entrypoint.sh" 27 minutes ago Up 27 minutes 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp zabbix-web-nginx-pgsql
Docker Desktop 에서도 확인 가능
6. 포트 포워딩
WSL2가 구성되어 있는 윈도우 머신 모니터링을 위해 컨테이너 자빅스 서버와 포트 포워딩 설정IP 정보윈도우 머신 - 192.168.80.1 / 이더넷 어댑터 vEthernet (WSL (Hyper-V firewall))WSL 리눅스 - 192.168.84.210 / eth0컨테이너 zabbix 서버 - 172.17.0.2# docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 컨테이너 ID
Powershell 관리자 권한으로 실행포트 포워딩 설정은 시스템 재시작 시 초기화 될 수 있음 (리부팅 시 자동 실행되도록 스케줄러 등록)
netsh interface portproxy add v4tov4 listenport=10051 listenaddress=192.168.80.1 connectport=10051 connectaddress=192.168.84.210
Windows 인바운드 방화벽 규칙 추가
New-NetFirewallRule -DisplayName "Zabbix Server" -Direction Inbound -LocalPort 10051 -Protocol TCP -Action Allow
윈도우 머신 Zabbix agent2 설정 파일(zabbix_agent2.conf) 수정위치 - C:\Program Files\Zabbix Agent 2ServerActive, Server IP 정보 수정 후 zabbix agent2 서비스 재시작
ServerActive=192.168.80.1
Server=192.168.80.1
5. Zabbix 플러그인 설치
- 컨테이너에 zabbix 플로그인 설치
# docker exec -it grafana grafana cli plugins install alexanderzobnin-zabbix-app
# docker restart grafana
6. 접속 확인
- 윈도우 머신 IP(192.168.80.1)로 접속
- Zabbix web - http://192.168.80.1
- Grafana web - http://192.168.80.1:8080
- 로그인
- Zabbix web - 접속 ID/Password는 기존 장비에서 설정 했던 값 사용 (초기 접속 패스워드 아님)
- Grafana web - 초기 패스워드 사용(admin/admin)