Việc giám sát hiệu năng và tình trạng của các container Docker là vô cùng quan trọng để đảm bảo ứng dụng hoạt động ổn định và hiệu quả. Zabbix, một công cụ giám sát mã nguồn mở mạnh mẽ, cung cấp khả năng theo dõi toàn diện cho hạ tầng CNTT, bao gồm cả Docker. Trong bài viết này, mình sẽ hướng dẫn theo dõi Docker bằng Zabbix trên Ubuntu 20.04 dễ dàng và hiệu quả.
Những điểm chính
- Biết được các điều kiện cơ bản để thiết lập hệ thống giám sát Docker bằng Zabbix.
- Hiểu rõ các bước thiết lập hệ thống giám sát Docker bằng Zabbix trên Ubuntu 20.04 như cài đặt và cấu hình Zabbix Agent 2, thêm một host mới vào Zabbix Server, truy cập Docker Metric, tạo một cảnh báo để kiểm tra.
- Gợi ý giải pháp VPS tối ưu để triển khai hệ thống giám sát hiệu quả với Vietnix.
Yêu cầu để theo dõi Docker bằng Zabbix trên Ubuntu 20.04
- 2 máy chủ Ubuntu 20.04 với user không phải root có quyền
sudo
. Tường lửa được cấu hình bằngufw
. - Một máy chủ cài đặt Zabbix và cần cài đặt các thành phần Nginx, PHP, MySQL.
- Một máy chủ cài đặt Docker và Zabbix Agent 2.
- Tên miền đã được đăng ký.
- Một bản ghi A trỏ đến địa chỉ IP công khai của máy chủ Zabbix.

Hướng dẫn theo dõi Docker bằng Zabbix trên Ubuntu 20.04
Bước 1: Cài đặt và cấu hình Zabbix Agent 2
Zabbix Agent là một ứng dụng bắt buộc trên các máy chủ hoặc máy ảo mà bạn muốn giám sát. Ứng dụng này sẽ gửi dữ liệu giám sát đến máy chủ Zabbix. Hướng dẫn này sẽ sử dụng Zabbix Agent 2 vì phiên bản này có thể hoạt động với Docker.
Bước đầu tiên bạn sẽ cài đặt và cấu hình Zabbix Agent 2 bằng cách đăng nhập vào máy chủ Docker:
$ ssh vietnix@docker_server_ip_address
Chạy các lệnh sau để cài đặt package cấu hình kho lưu trữ:
$ wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
$ sudo dpkg -i zabbix-release_5.0-1+focal_all.deb
Tiếp theo, cập nhật chỉ mục của package:
$ sudo apt update
Sau đó cài đặt Zabbix Agent 2:
$ sudo apt install zabbix-agent2
Tiếp theo, bạn cần chỉnh sửa tệp cấu hình Agent, tệp này chứa tất cả các cài đặt của Agent. Các cài đặt này chỉ định địa chỉ mà dữ liệu được truyền đến, cổng sử dụng cho các kết nối đến máy chủ, độ an toàn của kết nối,…
Hầu hết các trường hợp sử dụng cài đặt mặc định. Tất cả các cài đặt trong tệp này được ghi lại thông qua các comment trong toàn bộ tệp. Trong hướng dẫn này, bạn cần chỉnh sửa cài đặt Zabbix Agent để thiết lập kết nối đến máy chủ Zabbix. Mở tệp cấu hình Agent trong trình soạn thảo văn bản của bạn:
$ sudo nano /etc/zabbix/zabbix_agent2.conf
Theo mặc định, Agent được cấu hình để gửi dữ liệu đến server, server này cùng một máy chủ với Agent, vì vậy bạn cần thêm địa chỉ IP của máy chủ Zabbix. Tìm phần sau:
/etc/zabbix/zabbix_agent2.conf
...
### Option: Server
# List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
# Incoming connections will be accepted only from the hosts listed here.
# If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
# and '::/0' will allow any IPv4 or IPv6 address.
# '0.0.0.0/0' can be used to allow any IPv4 address.
# Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=
Server=127.0.0.1
...
Thay đổi giá trị mặc định 127.0.0.1
thành địa chỉ IP của máy chủ Zabbix:
/etc/zabbix/zabbix_agent2.conf
...
Server=zabbix_server_ip_address
...
Theo mặc định, máy chủ Zabbix kết nối với Agent. Nhưng trong một số trường hợp, ví dụ theo dõi các lịch sử đăng nhập, cần có kết nối ngược lại. Để kết nối hoạt động chính xác, bạn cần chỉ định địa chỉ và tên của máy chủ Zabbix.
Tìm phần cấu hình để kiểm tra hoạt động và thay đổi các giá trị như hình bên dưới:
...
##### Active checks related
### Option: ServerActive
# List of comma delimited IP:port (or DNS name:port) pairs of Zabbix servers and Zabbix proxies for active checks.
# If port is not specified, default port is used.
# IPv6 addresses must be enclosed in square brackets if port for that host is specified.
# If port is not specified, square brackets for IPv6 addresses are optional.
# If this parameter is not specified, active checks are disabled.
# Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
#
# Mandatory: no
# Default:
# ServerActive=
ServerActive=zabbix_server_ip_address
### Option: Hostname
# Unique, case sensitive hostname.
# Required for active checks and must match hostname as configured on the server.
# Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname=Docker server
...
Lưu và đóng tập tin.
Để Zabbix Agent giám sát Docker, bạn cần thêm zabbix
user vào group docker
:
$ sudo usermod -aG docker zabbix
Bây giờ bạn có thể khởi động lại và kích hoạt Zabbix Agent:
$ sudo systemctl restart zabbix-agent2
$ sudo systemctl enable zabbix-agent2
Để kiểm tra Zabbix Agent có chạy chính xác không, sử dụng lệnh:
$ sudo systemctl status zabbix-agent2
Nếu Agent đang chạy thì sẽ có output sau:
Output
● zabbix-agent2.service - Zabbix Agent 2
Loaded: loaded (/lib/systemd/system/zabbix-agent2.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-09-03 07:05:05 UTC; 1min 23s ago
...
Agent sẽ lắng nghe trên cổng 10050
để nhận biết các kết nối từ server. Cấu hình UFW để cho phép kết nối với cổng 10050
:
$ sudo ufw allow 10050/tcp
Trong bước này, bạn đã cài đặt Zabbix Agent 2 để cho phép kết nối từ máy chủ Zabbix và chuẩn bị kết nối tới Docker. Agent của bạn hiện đã sẵn sàng để gửi dữ liệu đến máy chủ Zabbix, nhưng để sử dụng Agent, bạn cần liên kết Agent với console của web server và kích hoạt Docker template. Ở bước tiếp theo, bạn sẽ hoàn thành cấu hình Zabbix.
Để quá trình cài đặt và cấu hình Zabbix Agent 2 diễn ra suôn sẻ, bạn cần đảm bảo rằng máy chủ đáp ứng đầy đủ các yêu cầu về tài nguyên và hiệu suất. Một lựa chọn tối ưu là sử dụng VPS Vietnix, giúp bạn dễ dàng tùy chỉnh cấu hình theo nhu cầu sử dụng.
Vietnix cung cấp nhiều gói VPS đa dạng như VPS Giá Rẻ, VPS SSD, VPS AMD, VPS NVMe,… tất cả đều có khả năng mở rộng linh hoạt, đảm bảo hiệu suất ổn định cho quá trình cài đặt và vận hành hệ thống.
Liên hệ ngay với Vietnix để được tư vấn và lựa chọn gói VPS phù hợp nhất!
Bước 2: Thêm một host mới vào Zabbix Server
Sau khi cài đặt một Agent trên server, bạn cần đăng ký cho host mà bạn muốn theo dõi trên máy chủ Zabbix. Điều này có thể thực hiện thông qua một giao diện web và cần kế nối với một template thích hợp. Sử dụng các template, bạn có thể áp dụng các mục giám sát, trình kích hoạt, biểu đồ và các quy tắc khám phá cấp thấp cho nhiều host. Khi một template được liên kết với host, tất cả các mục, trình kích hoạt, đồ thị,… của template sẽ được thêm vào host.
Đăng nhập vào giao diện của web server Zabbix bằng cách điều hướng đến địa chỉ http: //zabbix_server_name
hoặc https: //zabbix_server_name
(user mặc định là Admin và mật khẩu là zabbix).

Khi bạn đã đăng nhập, hãy nhấp vào Configuration và Hosts trong thanh điều hướng bên trái. Sau đó bấm vào nút Create host ở góc bên phải màn hình. Thao tác này sẽ mở ra trang cấu hình host:

Điều chỉnh Host name và địa chỉ IP thành tên và địa chỉ IP của máy chủ Docker, sau đó thêm các máy chủ vào một nhóm. Bạn có thể chọn nhóm hiện có, chẳng hạn như Linux servers hoặc tạo một nhóm mới như Docker servers. Mỗi host có thể nằm trong một nhóm hoặc nhiều nhóm. Nhập tên của nhóm mới hoặc nhóm hiện có vào mục Groups và chọn giá trị mong muốn từ danh sách nhóm được đề xuất.
Sau khi thêm nhóm, kích vào tab Template.

Để kích hoạt các xác minh cần thiết, bạn cần thêm một template. Template bao gồm tất cả các xác minh, trình kích hoạt và biểu đồ cần thiết. Một host có thể chứa nhiều template. Nhập tên của template vào mục Search và chọn template. Tiếp đến, hãy nhập Template App Docker rồi chọn template từ danh sách đề xuất để thêm vào host. Thao tác này sẽ đính kèm vào host tất cả các mục, trình kích hoạt và biểu đồ cần thiết để giám sát Docker được cấu hình sẵn trong template.
Cuối cùng, nhấn vào nút Add để tạo host.
Bạn sẽ thấy host mới trong danh sách. Tải lại trang, nếu các label đều có màu xanh lá cây thì mọi thứ đang hoạt động tốt.

Trong bước này, bạn đã thêm một host mới vào server và sử dụng các template có sẵn để thêm các xác minh bắt buộc.
Máy chủ Zabbix hiện đang theo dõi máy chủ Docker. Trong bước tiếp theo, bạn sẽ khởi chạy container thử nghiệm và xem những metric mà Zabbix có thể thu thập.
Bước 3: Truy cập Docker Metric
Nếu bạn chưa có container nào đang chạy và chưa có gì để theo dõi, hãy bắt đầu với một container thử nghiệm và xem những metric nào có sẵn. Trong hướng dẫn này, bạn sẽ tạo một container thử nghiệm dựa trên ubuntu
.
Chạy lệnh sau trên máy chủ Docker:
$ sudo docker run --name test_container -it ubuntu bash
Lệnh trên sẽ khởi chạy một container thử nghiệm có tên test_container
sử dụng ubuntu:latest
. Cờ - it
hướng dẫn Docker phân bổ một TTY giả được kết nối với input của container, tạo ra một bash
tương tác trong container .
Output của thao tác trên như sau:
Output
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
35807b77a593: Pull complete
Digest: sha256:9d6a8699fb5c9c39cf08a0871bd6219f0400981c570894cd8cbea30d3424a31f
Status: Downloaded newer image for ubuntu:latest
Lưu ý
Không được bỏ shell vì bạn sẽ cần shell trong các bước tiếp theo.
Một vài phút sau khi khởi động container, Zabbix sẽ tự động tìm container mới và thêm các metric thích hợp.
Để xem danh sách tất cả các metric, nhấp vào Monitoring và Hosts trên thanh điều hướng bên trái. Sau đó nhấp vào Latest data.

Bạn sẽ thấy một bảng có chứa tất cả các metric mà Zabbix Agent thu thập cho một host nhất định. Đối với mỗi mục, bạn có thể xem tên, lịch sử lưu trữ, lần kiểm tra cuối cùng và giá trị cuối. Cuộn để xem các metric liên quan đến test_container
. Bạn có thể nhập tên của container vào mục Name và click vào Apply để tìm tất cả các metric có liên quan.

Để xem lịch sử thay đổi cho một metric cụ thể, hãy nhấp vào Graph (đối với giá trị số) hoặc History (đối với giá trị văn bản). Bạn có thể chọn một hoặc nhiều metric trong danh sách và nhấn vào nút Display graph ở cuối danh sách để xem nhiều biểu đồ cùng lúc.


Trong bước này, bạn đã khởi chạy container thử nghiệm và xem metric của container đó trong giao diện web Zabbix. Tiếp theo, bạn sẽ kích hoạt thông báo.
Bước 4: Tạo một cảnh báo để kiểm tra
Ở đây, bạn sẽ thấy cách Zabbix giám sát hoạt động của các container và kích hoạt thông báo khi có sự cố.
Bắt đầu bằng cách mô phỏng sự cố ở container. Thực hiện lệnh sau trong container shell:
root@c9b8a264c2e1:/# exit 1
Với lệnh này, bạn đã đóng container có mã lỗi 1
. Mã này được chuyển đến docker_run
và được ghi lại trong metadata của container thử nghiệm.
Để xem cảnh báo, hãy nhấp vào Monitoring, rồi nhấp Dashboard trong thanh điều hướng bên trái của giao diện web Zabbix. Bạn sẽ thấy thông báo “Container has been stopped with error code“.

Nếu bạn đã cấu hình email hoặc các cách thông báo khác, bạn sẽ nhận được thông báo tương tự như sau:
Problem started at 11:17:31 on 2021.09.03
Problem name: Container /test_container: Container has been stopped with error code
Host: Docker Server
Severity: Average
Operational data: 1
Original problem ID: 103
Sau khi kiểm tra các thông báo, bạn có thể khởi động lại container và sự cố sẽ tự động biến mất.
Để khởi động lại container, hãy chạy lệnh sau trên máy chủ Docker:
$ sudo docker start test_container
Bạn có thể kiểm tra container có chạy hay không bằng lệnh sau:
$ sudo docker ps
Lệnh trên sẽ có output:
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9b8a264c2e1 ubuntu "bash" 23 minutes ago Up 7 seconds test_container
Để xem lịch sử của tất cả các cảnh báo trong giao diện web Zabbix, hãy nhấp vào Monitoring và tiếp đến là Problems trong thanh điều hướng bên trái. Bạn có thể sử dụng các tùy chọn và bộ lọc để xem diễn biến trong một khoảng thời gian cụ thể ở các host. Để xem lịch sử, nhấp vào tùy chọn Show: History.
Vietnix – Giải pháp VPS tốc độ cao, ổn định và bảo mật hàng đầu
Vietnix là nhà cung cấp dịch vụ VPS uy tín tại Việt Nam, được hơn 90.000 khách hàng tin dùng với hơn 100.000 dịch vụ đã được kích hoạt. Với hơn 12 năm kinh nghiệm, Vietnix không ngừng cải tiến chất lượng dịch vụ, mang đến hệ thống máy chủ mạnh mẽ, tốc độ cao, ổn định và bảo mật.
Vietnix cung cấp đa dạng các gói VPS đáp ứng mọi nhu cầu sử dụng từ cá nhân đến doanh nghiệp. Đặc biệt, Vietnix đạt chứng nhận ISO 9001 & ISO 27001, đảm bảo tiêu chuẩn chất lượng và an toàn thông tin.
Với đội ngũ hỗ trợ 24/7 chuyên môn giỏi, Vietnix sẽ là lựa chọn tối ưu giúp bạn triển khai và vận hành hệ thống hiệu quả. Liên hệ ngay để trải nghiệm dịch vụ VPS chất lượng cao!
Thông tin liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Website: https://vietnix.vn/
Trên đây là hướng dẫn theo dõi Docker bằng Zabbix trên Ubuntu 20.04. Bằng việc theo dõi các metrics quan trọng của container, bạn có thể nắm bắt được hiệu suất hoạt động của ứng dụng, từ đó chủ động phát hiện và xử lý các sự cố tiềm ẩn. Việc tích hợp Zabbix và Docker không chỉ giúp đơn giản hóa quá trình giám sát mà còn nâng cao hiệu quả quản lý hệ thống, đảm bảo ứng dụng luôn hoạt động ổn định và đạt hiệu suất tối ưu. Hy vọng bài viết này hữu ích và giúp bạn dễ dàng triển khai Zabbix để giám sát Docker một cách hiệu quả.