Docker giúp cho việc quản lý các quy trình ứng dụng trong các container đơn giản hơn. Zabbix là một hệ thống dùng để giám sát trạng thái của hầu hết các thành phần trong cơ sở hạ tầng công nghệ thông tin (CNTT) của bạn như mạng, các server, máy ảo và các ứng dụng. Bài viết này sẽ hướng dẫn theo dõi Docker bằng Zabbix trên Ubuntu 20.04.
Yêu cầu để theo dõi Docker bằng Zabbix trên Ubuntu 20.04
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 11 Yêu cầu để theo dõi Docker bằng Zabbix trên Ubuntu 20.04](https://static-xf1.vietnix.vn/wp-content/uploads/2023/11/huong-dan-theo-doi-docker-bang-zabbix-tren-ubuntu-20-04.png)
- 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.
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 thuận lợi, không gặp trục trặc nào thì bạn cần đảm bảo máy chủ đáp ứng được các yêu cầu cấu hình cần thiết để chạy Zabbix Agent 2. VPS Vietnix, đặc biệt là VPS Việt Nam là một giải pháp phù hợp để đảm bảo yêu cầu này. Với dịch vụ VPS tại Vietnix, bạn có thể dễ dàng tùy chỉnh tài nguyên cấu hình máy chủ của mình để đáp ứng cài đặt hệ thống, ứng dụng. Các gói VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe, VPS GPU đều sở hữu khả năng mở rộng và nâng cấp tài nguyên linh hoạt theo nhu cầu sử dụng.
Liên hệ để được tư vấn chi tiết về các gói VPS Vietnix.
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).
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 12 Giao diện của web server Zabbix](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/giao-dien-web-server-zabbix.png)
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:
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 13 Trang cấu hình host](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/trang-cau-hinh-host.webp)
Đ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.
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 14 Tab Templates của Hosts](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/tab-templates-cua-hosts.webp)
Để 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.
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 15 Thêm một host mới vào server](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/them-mot-host-moi-vao-server.webp)
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.
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 16 Xem danh sách tất cả các metric](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/xem-danh-sach-tat-ca-cac-metric.webp)
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.
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 17 Tìm tất cả các metric liên quan đến test_container](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/tim-tat-ca-cac-metric-lien-qua-den-test-container.webp)
Để 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.
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 18 Xem lịch sử thay đổi của metric](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/xem-lich-su-thay-doi-cua-metric.webp)
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 19 Xem nhiều biểu đồ cùng lúc](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/xem-nhieu-bieu-do-cung-luc.webp)
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“.
![Cách theo dõi Docker bằng Zabbix trên Ubuntu 20.04 20 Xem các cảnh báo từ container](https://static-xf1.vietnix.vn/wp-content/uploads/2023/06/xem-canh-bao-tu-container.webp)
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.
Nếu bạn gặp vấn đề khi thực hiện các thao tác trên hoặc cảm thấy chúng quá phức tạp thì có thể sử dụng VPS Vietnix để được hỗ trợ cài đặt nhanh chóng. Nhờ vậy, bạn sẽ có nhiều thời gian hơn để tập trung vào các công việc khác trong quá trình kinh doanh trên internet, thay vì phải lo lắng về các vấn đề kỹ thuật phức tạp. Với 11 năm kinh nghiệm phục vụ cho hơn 50.000 khách hàng và kích hoạt hơn 100.000 dịch vụ, đội ngũ Vietnix cam kết sẽ mang tới cho bạn dịch vụ chất lượng nhất. Sử dụng dịch vụ VPS Vietnix để giải quyết các vấn đề kỹ thuật và tăng năng suất công việc của bạn ngay hôm nay!
Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng 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.
Lời kết
Trong bài viết này, bạn đã thiết lập một giải pháp giám sát đơn giản giúp theo dõi tình trạng của Docker container. Giờ đây bạn có thể nhận được cảnh báo về các sự cố và phân tích quy trình diễn ra trong Docker của mình. Với Zabbix, bạn có thể giám sát không chỉ các container mà còn cả host, cơ sở dữ liệu và ứng dụng web bằng các template chính thức của Zabbix. Hi vọng qua bài viết này bạn đã biết cách giám sát Docker của mình bằng Zabbix Agent 2.