테스트용 Zabbix 환경이 날아가서 재구성 진행
구성
- OS: Ubuntu 24.04.2 LTS
- DB: psql (PostgreSQL) 16.6 (Ubuntu 16.6-0ubuntu0.24.04.1)
- Docker: Docker version 28.0.0, build f9ced58
- 서버구성
- zdb / 10.0.0.210 (vm)
- docker1 / 10.0.0.200 (vm)
- zabbix-server-pgsql / 172.0.1.2 (container)
- zabbix-web-nginx-pgsql / 172.0.1.3 (container)
- docker2 / 10.0.0.201 (vm)
- grafana / 172.0.2.2 (container)
ZDB
1. 패키지 설치
# cd /tmp
# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
# dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
# apt update
# apt install -y postgresql
# apt install -y zabbix-agent2
# systemctl status postgresql
# systemctl enable postgresql
2. DB 구성
- DB 초기화
# sudo -u postgres createuser --pwprompt zabbix
# sudo -u postgres createdb -O zabbix zabbix
- DB 스키마 생성
# zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
- DB 외부 연동 설정
# vi /etc/postgresql/16/main/postgresql.conf
(변경 전) listen_addresses = 'localhost'
(변경 후) listen_addresses = '*'
# vi /etc/postgresql/16/main/pg_hba.conf
IPv4 local connections: 수정
(변경 전) host all all 127.0.0.1/32 scram-sha-256
(변경 후) host all all 0.0.0.0/0 scram-sha-256
- DB 권한 설정
# sudo -u postgres psql
데이터베이스 목록 확인
postgres=# \l
권한 부여
postgres=# GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
데이터 베이스 목록 확인
postgres=# \l
나가기
postgres=# \q
3. 서비스 재가동
# systemctl restart postgresql
DOCKER1
1. Docker 구성
2. Docker 네트워크 변경
- 기존 172.17.0.0/16 에서 172.0.1.0/24로 변경 (사용하는 환경에 따라 네트워크 대역 선택)
- daemon.json 파일 신규 생성
# vi /etc/docker/daemon.json
----------------------------------
{
"bip":"172.0.1.1/24",
"default-address-pools":
[
{"base":"172.0.1.1/24","size":24}
]
}
- 도커 서비스 재가동
# systemctl restart docker
# systemctl status docker
# systemctl enable docker
3. 계정 설정
- dockeruser 계정 생성 및 sudo 권한 부여
# adduser dockeruser
# echo 'dockeruser ALL=(ALL) NOPASSWD:ALL'|sudo EDITOR='tee -a' visudo
- zabbix 사용자에 대한 Docker 소켓 파일을 액세스 할 수 있도록 docker 그룹에 추가
# usermod -aG docker zabbix
- 도커 서비스 재가동
# systemctl restart docker
4. Zabbix Server 컨테이너 실행
docker run -d --name zabbix-server-pgsql \
-e DB_SERVER_HOST=10.0.0.210 \
-e POSTGRES_USER=zabbix \
-e POSTGRES_PASSWORD=설정한패스워드 \
-e POSTGRES_DB=zabbix \
-e TZ=Asia/Seoul \
-p 10051:10051 \
--restart unless-stopped \
zabbix/zabbix-server-pgsql:ubuntu-7.0.9
5. Zabbix Web 컨테이너 실행
- Zabbix Server 는 IP가 변경되더라도 접속 가능하게 link 옵션을 사용하여 컨테이너 이름으로 연결
docker run -d --name zabbix-web-nginx-pgsql \
-e DB_SERVER_HOST=10.0.0.210 \
-e POSTGRES_USER=zabbix \
-e POSTGRES_PASSWORD=설정한패스워드 \
-e POSTGRES_DB=zabbix \
-e TZ=Asia/Seoul \
-p 80:8080 \
-p 443:8443 \
--link zabbix-server-pgsql:zabbix-server \
--restart unless-stopped \
zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0.6
6. docker1 호스트 서버 zabbix agent2 설치
# cd /tmp
# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
# dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
# apt update
# apt install -y zabbix-agent2
DOCKER2
1. Docker 구성
2. Docker 네트워크 변경
- 기존 172.17.0.0/16 에서 172.0.2.0/24로 변경 (사용하는 환경에 따라 네트워크 대역 선택)
- daemon.json 파일 신규 생성
# vi /etc/docker/daemon.json
----------------------------------
{
"bip":"172.0.2.1/24",
"default-address-pools":
[
{"base":"172.0.2.1/24","size":24}
]
}
- 도커 서비스 재가동
# systemctl restart docker
# systemctl status docker
# systemctl enable docker
3. 계정 설정
- dockeruser 계정 생성 및 sudo 권한 부여
# adduser dockeruser
# echo 'dockeruser ALL=(ALL) NOPASSWD:ALL'|sudo EDITOR='tee -a' visudo
- zabbix 사용자에 대한 Docker 소켓 파일을 액세스 할 수 있도록 docker 그룹에 추가
# usermod -aG docker zabbix
- 도커 서비스 재가동
# systemctl restart docker
4. Grafana 컨테이너 실행
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
5. Zabbix 플러그인 설치
# docker exec -it grafana grafana cli plugins install alexanderzobnin-zabbix-app
# docker restart grafana
6. docker2 호스트 서버 zabbix agent2 설치
# cd /tmp
# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
# dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
# apt update
# apt install -y zabbix-agent2
Zabbix Agent2 설정
1. docker1
- passive 모드 구성이라 Server 부분만 수정
- zabbix server 컨테이너 IP 등록 (도커 서비스 재가동 시 변경 될 수 있음)
- zabbix server 컨테이너가 운영중인 도커 호스트 서버의 경우 다른 서버와 동일하게 도커 호스트 서버 IP 등록 시 에이전트 연결이 되지 않음. (Get value from agent failed: cannot read response: cannot read from socket: [104] Connection reset by peer)
- active 모드 설정 부분의 ServerActive=, Hostname= 부분은 주석 처리 (불필요한 로그 제거)
vi /etc/zabbix/zabbix_agent2.conf
---------------------------------
Server=172.0.1.2
2. 그 외 서버
- passive 모드 구성이라 Server 부분만 수정
- zabbix server 컨테이너가 설치 된 도커 호스트 서버 IP 등록
- active 모드 설정 부분의 ServerActive=, Hostname= 부분은 주석 처리 (불필요한 로그 제거)
vi /etc/zabbix/zabbix_agent2.conf
---------------------------------
Server=10.0.0.200
3. agent2 서비스 재가동
# systemctl restart zabbix-agent2.service
Zabbix 웹 접속, 호스트 등록 및 추가 설정
1. 호스트 등록 테스트
- 접속- http://10.0.0.200
- 계정 - Admin / zabbix (초기 패스워드)
모니터링 대상 및 항목은 필요 시 천천히 진행...
Grafana 웹 접속 및 Zabbix 연동
1. 웹 접속
- 접속 - http://10.0.0.201:3000
- 계정 - admn / admin (초기 패스워드)
2. Zabbix plugins 활성화
- Administration - Plugins and data - Plugins
- zabbix 검색 후 오른쪽 상단 enable 클릭
3. Zabbix 연동
- Connections - Data sources
- Zabbix 선택 후 연결 정보 등록 후 "Save &test" 클릭
- URI - http://10.0.0.200/api_jsonrpc.php
- Zabbix Connection - Admin / 설정한 패스워드
이 후 마음에 드는 대시보드를 선택하여 생성하면 됨.
- Grafana dashboards: https://grafana.com/grafana/dashboards/