Cách giám sát Docker bằng Zabbix trên Ubuntu 20.04

Tác giả NetworkEngineer, T.Mười 21, 2021, 12:58:29 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Cách giám sát Docker bằng Zabbix trên Ubuntu 20.04


Docker là một ứng dụng phổ biến giúp đơn giản hóa việc quản lý các quy trình ứng dụng trong các containers. Các containers tương tự như máy ảo, nhưng vì chúng phụ thuộc nhiều hơn vào hệ điều hành máy chủ, nên chúng có tính di động và thân thiện với tài nguyên hơn.

Khi sử dụng các containers trong môi trường sản phẩm, bạn nên biết liệu chúng có đang chạy hay không và chúng đang tiêu thụ tài nguyên nào. Zabbix là một hệ thống giám sát có thể giám sát trạng thái của hầu hết mọi yếu tố trong cơ sở hạ tầng CNTT của bạn, chẳng hạn như mạng, máy chủ, máy ảo và ứng dụng.

Zabbix gần đây đã giới thiệu một dịch vụ mới (Zabbix agent 2) với các khả năng nâng cao. Một trong những lợi thế chính của Agent mới là khả năng mở rộng chức năng bằng cách sử dụng các plugin. Hiện tại, có một số plugin có sẵn, bao gồm một plugin để giám sát Docker.

Trong hướng dẫn này, bạn sẽ thiết lập giám sát Docker trong Zabbix bằng cách sử dụng Zabbix agent 2 trên Ubuntu 20.04. Bạn sẽ khám phá các chỉ số và mô phỏng sự cố để tạo thông báo. Cuối cùng, bạn sẽ có một hệ thống giám sát cho ứng dụng Docker của mình, hệ thống này sẽ thông báo cho bạn về bất kỳ vấn đề nào với containers.

Để làm theo hướng dẫn này, bạn sẽ cần:

  • Hai máy chủ Ubuntu 20.04 bao gồm người dùng không phải root có quyền sudo và tường lửa được cấu hình bằng UFW.
  • Máy chủ đầu tiên, nơi bạn sẽ cài đặt Zabbix, sẽ là máy chủ Zabbix. Cài đặt các thành phần sau: Nginx, MySQL và PHP, Zabbix
  • Máy chủ thứ hai, nơi bạn sẽ cài đặt Docker (và Zabbix Agent ), sẽ là máy chủ Docker.
  • Tên miền đã đăng ký đầy đủ.
  • Bản ghi A với việc trỏ đến địa chỉ IP công cộng của máy chủ Zabbix của bạn.

1. Cài đặt và cấu hình Zabbix Agent 2.

Zabbix Agent là một ứng dụng rất nhỏ phải được cài đặt trên mọi máy chủ hoặc máy ảo mà bạn muốn theo dõi. Nó sẽ gửi dữ liệu giám sát đến máy chủ Zabbix. Zabbiх đề nghị sử dụng một trong hai Agent: Zabbix Agent hoặc đại lý Zabbix 2. Bạn có thể tìm hiểu về sự khác biệt của chúng trong tài liệu trên trang chủ của Zabbix.

Đối với hướng dẫn này, chúng ta sẽ sử dụng Zabbix Agent 2, vì nó có thể hoạt động với Docker. Trong bước này, bạn sẽ học cách cài đặt và cấu hình nó.

Bắt đầu bằng cách cài đặt Zabbix Agent. Đăng nhập vào máy chủ Docker:

Mã nguồn [Chọn]
# ssh vietnetwork@docker_server_ip_address
Chạy các lệnh sau để cài đặt gói 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 gói:

Mã nguồn [Chọn]
# sudo apt update
Sau đó cài đặt Zabbix Agent:

Mã nguồn [Chọn]
# sudo apt install zabbix-agent2
Tiếp theo, bạn sẽ cần chỉnh sửa tập tin cấu hình Zabbix Agent, tập tin 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ỉ để truyền dữ liệu, cổng sử dụng cho các kết nối đến và đi từ máy chủ, có sử dụng kết nối an toàn hay không, v.v. Trong hầu hết các trường hợp, cài đặt mặc định sẽ ổn. Tất cả các cài đặt trong tập tin này được hướng dẫn thông qua các bình luận # trong toàn bộ tập tin.

Đối với hướng dẫn này, bạn sẽ cần chỉnh sửa cài đặt Zabbix Agent để thiết lập kết nối của nó với máy chủ Zabbix. Mở tập tin cấu hình Agent trong trình soạn thảo văn bản của bạn:

Mã nguồn [Chọn]
# sudo nano /etc/zabbix/zabbix_agent2.conf
Theo mặc định, Agent được cấu hình để gửi dữ liệu đến máy chủ trên cùng một máy chủ với Agent, vì vậy bạn sẽ cần thêm địa chỉ IP của máy chủ Zabbix. Tìm phần sau:

Mã nguồn [Chọn]
Server=127.0.0.1

Thay đổi giá trị mặc định thành IP của máy chủ Zabbix của bạn:

Mã nguồn [Chọn]
Server=zabbix_server_ip_address
Theo mặc định, máy chủ Zabbix kết nối với Agent. Nhưng đối với một số kiểm tra (ví dụ: theo dõi nhật ký), cần phải có kết nối ngược lại. Để hoạt động chính xác, bạn cần chỉ định địa chỉ máy chủ Zabbix và một tên máy chủ duy nhất.

Tìm phần cấu hình các kiểm tra hoạt động và thay đổi các giá trị mặc định như được hiển thị bên dưới:

Mã nguồn [Chọn]
ServerActive=zabbix_server_ip_address

Hostname=Docker server


Lưu và đóng tập tin.

Để Zabbix Agent giám sát Docker, bạn sẽ cần thêm người dùng zabbix vào nhóm docker:

Mã nguồn [Chọn]
# sudo usermod -aG docker zabbix
Bây giờ bạn có thể khởi động lại Zabbix Agent và cấu hình nó bắt đầu lúc khởi động cùng hệ điều hành:

Mã nguồn [Chọn]
# sudo systemctl restart zabbix-agent2
# sudo systemctl enable zabbix-agent2

Để có biện pháp tốt, hãy kiểm tra xem Zabbix Agent có đang chạy chính xác hay không:

Mã nguồn [Chọn]
# sudo systemctl status zabbix-agent2
Đầu ra sẽ trông giống như sau, cho biết rằng Agent đang chạy:

Mã nguồn [Chọn]
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
  ...


Zabbix Agent sẽ lắng nghe trên cổng 10050 với các kết nối từ máy chủ. Cấu hình tường lửa UFW để cho phép kết nối với cổng này:

Mã nguồn [Chọn]
# sudo ufw allow 10050/tcp
Bạn có thể tìm hiểu thêm về cách thiết lập tường lửa với UFW trong Ubuntu 20.04.

Trong bước này, bạn đã cài đặt Zabbix agent 2, cấu hình nó để cho phép các kết nối từ máy chủ Zabbix của bạn và chuẩn bị để giám sát Docker.

Zabbix 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 nó, bạn phải liên kết đến nó từ bảng điều khiển web của máy chủ và kích hoạt template giám sát Docker. Trong bước tiếp theo, bạn sẽ hoàn thành cấu hình này.

2. Thêm máy chủ mới vào máy chủ Zabbix.

Cài đặt một Agent trên máy chủ mà bạn muốn theo dõi chỉ là một nửa của quá trình. Mỗi máy chủ lưu trữ bạn muốn theo dõi cần phải được đăng ký trên máy chủ Zabbix , bạn có thể thực hiện việc này thông qua giao diện web. Bạn cũng cần kết nối template giám sát thích hợp với nó. Bằng cách sử dụng các template giám sát, bạn có thể áp dụng cùng một mục giám sát, trình kích hoạt, biểu đồ và quy tắc khám phá cấp thấp cho nhiều máy chủ. Khi một template giám sát được liên kết với máy chủ lưu trữ, tất cả các thực thể (mục, trình kích hoạt, đồ thị, v.v.) của mẫu sẽ được thêm vào máy chủ lưu trữ.

Đăng nhập vào giao diện web của máy chủ Zabbix bằng cách điều hướng đến địa chỉ http://zabbix_server_name hoặc https://zabbix_server_name. Như đã đề cập trong hướng dẫn cách cài đặt và cấu hình Zabbix để máy chủ từ xa trên Ubuntu 20.04, người dùng 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à sau đó nhấp vào Hosts trong thanh điều hướng bên trái. Sau đó nhấp vào nút Create host ở góc trên cùng bên phải của màn hình. Thao tác này sẽ mở trang cấu hình máy chủ lưu trữ.


Điều chỉnh Host name và địa chỉ IP để phản ánh tên máy chủ và địa chỉ IP của máy chủ Docker của bạn , sau đó thêm máy chủ vào một nhóm. Bạn có thể chọn một nhóm hiện có, chẳng hạn như máy chủ Linux hoặc tạo nhóm của riêng bạn, chẳng hạn như máy chủ Docker . Mỗi máy chủ lưu trữ phải ở trong một nhóm và nó cũng có thể ở nhiều nhóm. Để thực hiện việc này, hãy nhập tên của nhóm hiện có hoặc nhóm mới vào trường Nhóm và chọn giá trị mong muốn từ danh sách được đề xuất.

Sau khi thêm nhóm, hãy nhấp vào tab Templates.


Để kích hoạt các kiểm tra cần thiết, bạn cần thêm Templates. Templates bao gồm tất cả các kiểm tra, trình kích hoạt và đồ thị cần thiết. Host có thể có nhiều Templates. Để thực hiện việc này, hãy nhập tên của Templates vào trường Tìm kiếm và chọn nó từ danh sách được đề xuất.

Đối với hướng dẫn này, hãy nhập Template App Docker và sau đó chọn nó từ danh sách để thêm Template này vào Host. Điều 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 cho việc giám sát Docker đã được cấu hình trước trong Template.

Cuối cùng, nhấp vào nút Add ở cuối biểu mẫu để tạo Host.

Bạn sẽ thấy Host mới của mình trong danh sách. Chờ một phút và tải lại trang sẽ thấy các nhãn màu xanh lục cho biết rằng 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 máy chủ Zabbix và sử dụng các Template tạo sẵn để thêm các kiểm tra bắt buộc.

Máy chủ Zabbix hiện đang giám sát máy chủ Docker của bạn. Trong bước tiếp theo, bạn sẽ khởi chạy container thử nghiệm và khám phá những chỉ số mà Zabbix có thể thu thập.

3. Truy cập số liệu Docker.

Nếu bạn đang chạy hướng dẫn này trong một môi trường mới, thì bạn không có container nào đang chạy và chưa có gì để theo dõi. Trong bước này, bạn sẽ khởi động container thử nghiệm và xem những chỉ số nào có sẵn. Trong hướng dẫn này, bạn sẽ chạy một container thử nghiệm dựa trên Ubuntu.

Chạy lệnh sau trên máy chủ Docker:

Mã nguồn [Chọn]
# sudo docker run --name test_container -it ubuntu bash
Thao tác này sẽ khởi chạy container thử nghiệm có tên test_container bằng cách sử dụng hình ảnh ubuntu:latest. Cờ chỉ thị Docker để phân bổ một pseudo-TTY kết nối với của containers đầu vào tiêu chuẩn, tạo ra một tương tác bash shell trong container.

Đầu ra sẽ giống như sau:
 
Mã nguồn [Chọn]
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 rời vị trí cửa sổ dòng lệnh này vì bạn sẽ cần đến nó ở bước tiếp theo.

Vài phút sau khi khởi động container, Zabbix sẽ tự động tìm container mới và thêm các chỉ số thích hợp.

Để xem danh sách tất cả các chỉ số, hãy nhấp vào Monitoring, sau đó nhấp vào Hosts trong thanh điều hướng bên trái. Sau đó nhấp vào Latest data ở dòng tương ứng.


Bạn sẽ thấy một bảng với tất cả các chỉ số mà Zabbix Agent thu thập cho một máy chủ nhất định. Đối với mỗi mục, bạn có thể thấy tên, khoảng thời gian lưu trữ lịch sử, thời gian kiểm tra lần cuối và giá trị cuối cùng.

Bạn có thể cuộn qua danh sách và xem các chỉ số liên quan đến test_container. Bạn cũng có thể nhập tên của container vào trường Name và nhấp vào Apply để tìm tất cả các chỉ số có liên quan.


Để xem lịch sử thay đổi cho một số liệu 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ũng có thể chọn một hoặc nhiều số liệu trong danh sách và nhấp vào nút Display graph ở cuối danh sách để xem một số biểu đồ cùng nhau.



Trong bước này, bạn đã khởi chạy container thử nghiệm và xem các chỉ số của nó trong giao diện web Zabbix. Tiếp theo, bạn sẽ kích hoạt một thông báo.

4. Tạo thông báo kiểm tra.

Trong bước này, bạn sẽ thấy cách giám sát hoạt động bằng cách mô phỏng việc container bị tắt đột ngột, điều này sẽ kích hoạt thông báo từ Zabbix.

Bắt đầu bằng cách mô phỏng một vụ tắt đi container. Thực thi lệnh sau trong cửa sổ dòng lệnh của container:

Mã nguồn [Chọn]
# exit 1
Với lệnh này, bạn đã tắt đi container bằng mã lỗi 1. Mã thoát này được chuyển cho người gọi docker run và được ghi lại trong siêu dữ liệu của container thử nghiệm.

Để xem cảnh báo, hãy nhấp vào Monitoring và sau đó nhấp vào Dashboard trong thanh điều hướng bên trái của giao diện web Zabbix. Trong một phút hoặc ít hơn, 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 thông báo khác trước đó, bạn cũng sẽ nhận được một thông báo tương tự như sau:

Mã nguồn [Chọn]
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.

Mã nguồn [Chọn]
# sudo docker start test_container
Bạn có thể kiểm tra xem vùng chứa đang chạy bằng lệnh này:

Mã nguồn [Chọn]
# sudo docker ps
Đầu ra sẽ giống như sau:
       
Mã nguồn [Chọn]
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 Zabbix, nhấp Monitoring và sau đó 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 các sự kiện trong một khoảng thời gian cụ thể, cho các máy chủ cụ thể, v.v. Để xem lịch sử, hãy chọn tùy chọn Hiển thị: History


Trong bước này, bạn đã mô phỏng sự cố container và nhận được thông báo trong Zabbix.

Trong hướng dẫn này, bạn đã học cách thiết lập một giải pháp giám sát đơn giản để giúp bạn theo dõi tình trạng của các container Docker của mình. Giờ đây, nó có thể cảnh báo bạn về các vấn đề và bạn có thể phân tích các quy trình đang diễn ra trong ứng dụng Docker của mình.

Với Zabbix, bạn có thể giám sát không chỉ container mà còn cả máy chủ, cơ sở dữ liệu, ứng dụng web và nhiều hơn thế nữa bằng cách sử dụng các Template giám sát chính thức của Zabbix được tạo sẵn.