Tình hình là bữa giờ có một số bạn học viên nhờ hướng dẫn triển khai Zabbix 8.0 trên Docker.
Sau khi tôi tìm hiểu qua thì phiên bản Zabbix 8.0 này có nhiều tính năng hay ho quá. Thôi nay tranh thủ quất thử luôn :))
Bài viết này sẽ hướng dẫn các bạn triển khai Zabbix 8.0 trên Docker, việc cài đặt Zabbix Server trở nên cực kỳ dễ dàng, nhanh chóng chỉ trong vòng vài phút.
Zabbix 8.0 LTS (dự kiến phát hành vào Q2 năm 2026) là một phiên bản rất được mong đợi, đánh dấu bước mở rộng quan trọng của Zabbix từ hệ thống giám sát truyền thống sang nền tảng quan sát toàn diện (full observability). Phiên bản này mang đến hỗ trợ OpenTelemetry, khả năng giám sát logs real time, Core hệ thống được thiết kế lại và khả năng mở rộng được cải thiện. Các nâng cấp đáng chú ý khác bao gồm ứng dụng di động, xử lý sự kiện theo kiểu SIEM, giám sát mạng dựa trên NetFlow, tăng cường kiểm soát bảo mật và hệ thống dashboard mới trực quan với các báo cáo chi tiết hơn. Phiên bản này định vị Zabbix như một giải pháp observability mã nguồn mở toàn diện.
>>> Tham khảo chi tiết: https://www.zabbix.com/roadmap#v8_0_LTS
Zabbix là một trong những giải pháp giám sát mã nguồn mở đã được kiểm chứng, đáng tin cậy, cung cấp khả năng giám sát cho máy chủ, ứng dụng, mạng và môi trường đám mây.
Docker cung cấp các môi trường cô lập, cập nhật đơn giản và kiểm soát phiên bản dễ dàng.
Khi kết hợp với Docker + Zabbix, toàn bộ hệ thống Zabbix (server, frontend, database(PostgreSQL/MySQL) và agent) có thể được triển khai chỉ với vài lệnh.
Việc kết hợp này mang đến một giải pháp giám sát nhẹ, linh hoạt và dễ triển khai, giúp cung cấp khả năng giám sát có thể mở rộng mà không phải đau đầu với việc cài đặt thủ công.
Hướng dẫn này sẽ mô tả Zabbix Docker là gì, cách triển khai Zabbix Docker bằng Docker Compose, và cách Zabbix Docker giúp việc giám sát trở nên dễ dàng hơn trong các môi trường được container hóa.
Zabbix Docker là gì?
Zabbix Docker là phiên bản được container hóa của nền tảng giám sát Zabbix. Nó cho phép bạn chạy các thành phần của Zabbix như server, frontend và agent trong các container Docker thay vì cài đặt theo cách truyền thống trên máy vật lý (bare metal) hoặc máy ảo (VM). Giải pháp này triển khai nhanh, dễ cấu hình và quản lý, là lựa chọn tuyệt vời cho các nhà phát triển hoặc đội ngũ IT làm việc trong môi trường container.
Tại sao nên sử dụng Zabbix với Docker?
Có nhiều lợi ích khi chạy Zabbix trong Docker:
- Triển khai nhanh: Chỉ trong vài phút, bạn có thể khởi chạy toàn bộ hệ thống giám sát và đưa Zabbix vào hoạt động.
- Dễ mở rộng: Thêm agent hoặc server một cách đơn giản mà không cần thiết lập phức tạp.
- Cập nhật nhanh và dễ dàng: Chỉ cần tải image Zabbix mới nhất và cập nhật trong vài phút.
- Nhẹ, ít tốn tài nguyên: So với cài đặt truyền thống, Zabbix chạy trên Docker tiêu thụ ít tài nguyên hơn trên máy chủ (nhưng vẫn đảm bảo đủ tài nguyên cần thiết cho toàn bộ Zabbix Stack).
- Môi trường cô lập: Mỗi container chạy trong không gian riêng, nhưng vẫn có thể giao tiếp với các container khác trên cùng máy chủ.
Cách triển khai Zabbix Docker bằng Docker Compose
Việc triển khai Zabbix bằng Docker Compose tương đối đơn giản và dễ thực hiện. Chỉ với một tệp cấu hình YAML đơn giản, trong đó định nghĩa các dịch vụ như Zabbix server, giao diện web (frontend) và cơ sở dữ liệu (DB), toàn bộ hệ thống sẽ được cài đặt nhanh chóng.
Bước 1: Cài đặt Docker and Docker Compose
Cài đặt Docker:
sudo apt update
sudo apt install docker.io -y
Cài đặt Docker ComposeKiểm tra phiên bản Docker Compose Binary: https://github.com/docker/compose/releases
Trong bài viết này sử dụng docker-compose-v5.0.1
sudo curl -L "https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
Bước 2: Tạo file cấu hình docker-compose.yml
File cấu hình dành cho hệ điều hành Ubuntu nha (vì Docker Zabbix-8 chưa hỗ trợ nhiều OS), dùng nội dung như sau:
# zabbix8-v2 with zabbix-web-nginx-pgsql
# zabbix-agent2 not need publish port 10050 for active-only.
networks:
zabbix_net:
driver: bridge
services:
postgres:
image: postgres:17
container_name: zabbix-postgres
environment:
POSTGRES_DB: zabbix
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: zabbix
volumes:
- /opt/docker/zabbix/zabbix-postgres/data:/var/lib/postgresql/data
restart: unless-stopped
networks:
- zabbix_net
zabbix-server:
image: zabbix/zabbix-server-pgsql:ubuntu-trunk
container_name: zabbix-server
depends_on:
- postgres
environment:
DB_SERVER_HOST: postgres
POSTGRES_DB: zabbix
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: zabbix
ports:
- "10051:10051"
volumes:
- /opt/docker/zabbix/zabbix-server/alertscripts:/usr/lib/zabbix/alertscripts
- /opt/docker/zabbix/zabbix-server/externalscripts:/usr/lib/zabbix/externalscripts
- /opt/docker/zabbix/zabbix-server/snmptraps:/var/lib/zabbix/snmptraps
restart: unless-stopped
networks:
- zabbix_net
zabbix-frontend:
image: zabbix/zabbix-web-nginx-pgsql:ubuntu-trunk
container_name: zabbix-frontend
depends_on:
- postgres
- zabbix-server
environment:
DB_SERVER_HOST: postgres
POSTGRES_DB: zabbix
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: zabbix
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Ho_Chi_Minh
restart: unless-stopped
networks:
- zabbix_net
zabbix-agent2:
image: zabbix/zabbix-agent2:ubuntu-trunk
container_name: zabbix-agent2
environment:
ZBX_SERVER_HOST: zabbix-server
# hostname: ZabbixServer
ZBX_HOSTNAME: ZabbixServer
volumes:
- /opt/docker/zabbix/zabbix-agent2/logs:/var/log/zabbix
restart: unless-stopped
networks:
- zabbix_net
nginx:
image: nginx:latest
container_name: zabbix-nginx
depends_on:
- zabbix-frontend
ports:
- "8026:80"
volumes:
- /opt/docker/zabbix/nginx/conf.d:/etc/nginx/conf.d:ro
restart: unless-stopped
networks:
- zabbix_net
Thông tin từ cấu hình như trên: Vì docker-compose ở trên dùng Nginx Reverse Proxy nên cần thêm file cầu hình cho Nginx như sau:
mkdir -p /opt/docker/zabbix/nginx/conf.d
vim /opt/docker/zabbix/nginx/conf.d/zabbix.conf
✅ Sử dụng nội dung sau:
# Default catch-all: BLOCK IP access
server {
listen 80 default_server;
server_name _;
return 444;
}
# Allow ONLY domain access
server {
listen 80;
server_name zabbix.lecuong.info;
location / {
proxy_pass http://zabbix-frontend:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Với nội dung cấu hình Nginx như trên thì:
- Cấm truy cập Zabbix bằng IP nhằm bảo mật.
- Chỉ cho phép truy cập qua url: zabbix.lecuong.info
Bước 3: Khởi chạy các Containers
sudo docker-compose up -d
Sau khi chạy xong, mở trình duyệt vào địa chỉ: http://zabbix.lecuong.info:8026Một số lệnh để kiểm tra Docker, quản lý Containers
| Task | Command |
|---|---|
| Check container status | docker ps |
| View logs | docker logs <container> -f |
| View log | docker-compose logs -f |
| Start containers | docker-compose up -d |
| Stop containers | docker-compose down |
| Remove all containers | docker-compose down -v |
Overview: Docker Zabbix Architecture
| Component | Role | Container/Image |
|---|---|---|
| Zabbix Server | Collects metrics from agents | zabbix/zabbix-server-pgsql:ubuntu-trunk |
| Database (PostgreSQL) | Stores monitoring data | postgres:17 |
| Frontend (Web UI) | Displays metrics | zabbix/zabbix-web-nginx-pgsql:ubuntu-trunk |
| Agent | Collects data from systems | zabbix/zabbix-agent2:ubuntu-trunk |
| Nginx | Reverse proxy / Web server | nginx:latest |