Hướng dẫn triển khai Zabbix 8 trên Docker

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.

Các bạn có thể tìm hiểu các docker's image được hỗ trợ chính thức bởi Zabbix tại link này: https://hub.docker.com/u/zabbix

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 Compose
Kiể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: 

✅ Use bridge network (zabbix_net)
✅ Put Nginx reverse proxy in front of Zabbix frontend
✅ Expose Zabbix via host port 8026
✅ PostgreSQL 
✅ zabbix-agent2 


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:8026

Zabbix Server 8.0
Đăng nhập với thông tin mặc định như sau: Admin/zabbix


Thành quả nè!!

Zabbix Server 8.0

Mộ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

ComponentRoleContainer/Image
Zabbix ServerCollects metrics from agentszabbix/zabbix-server-pgsql:ubuntu-trunk
Database (PostgreSQL)Stores monitoring datapostgres:17
Frontend (Web UI)Displays metricszabbix/zabbix-web-nginx-pgsql:ubuntu-trunk
AgentCollects data from systemszabbix/zabbix-agent2:ubuntu-trunk
Nginx Reverse proxy / Web server nginx:latest

Bài viết tiếp theo, tôi sẽ hướng dẫn triển khai thêm Zabbix Proxy trên Docker.




Viết nhận xét

Các bạn có thể viết lời nhận xét cho bài viết, nhưng cần tuân thủ một số quy tắc sau:

» Các nhận xét/bình luận phải nghiêm túc, không dung tục, không spam.
» Nội dung phải liên quan tới chủ đề bài viết.
» Viết bằng tiếng việt có dấu hoặc tiếng Anh. Nội dung viết không dấu sẽ bị xóa.
» Hãy để lại tên của bạn khi nhận xét/bình luận, để tôi có thể dễ dàng trả lời bạn khi cần.