Trang chủ Thủ Thuật Cách giám sát việc sử dụng tài nguyên của bộ chứa Docker

Cách giám sát việc sử dụng tài nguyên của bộ chứa Docker

0
31

Cách giám sát việc sử dụng tài nguyên của bộ chứa Docker

6dc7b5a0

Mặc dù Docker có trọng lượng nhẹ hơn nhiều so với máy ảo truyền thống, nhưng quá nhiều bộ chứa có thể nhanh chóng tiêu thụ tài nguyên của máy chủ của bạn. Dưới đây là cách kiểm tra việc sử dụng phần cứng và theo dõi số lượng quy trình bên trong bộ chứa của bạn.

Lệnh Thống kê Docker

Cơ chế tích hợp của Docker để xem tiêu thụ tài nguyên là docker stats . Lệnh này cung cấp cho bạn chế độ xem được lập bảng của các vùng chứa của bạn. Mỗi vùng chứa hiển thị nguồn cấp dữ liệu trực tiếp về các chỉ số quan trọng của nó.

Đầu ra của lệnh bao gồm mức tiêu thụ CPU và thước đo mức sử dụng mạng và lưu trữ của mỗi vùng chứa trong suốt vòng đời của nó. Cột Bộ nhớ hiển thị việc sử dụng bộ nhớ trực tiếp cũng như giới hạn bộ nhớ được cấu hình trên bộ chứa. Khi không có giới hạn nào được đặt, bạn sẽ thấy dung lượng RAM có sẵn trên máy chủ của mình. Cột cuối cùng, PIDS , là số lượng quy trình được bắt đầu bởi bộ chứa.

88feeaed

Bộ chứa đã dừng được loại trừ theo mặc định. Bạn có thể thêm chúng vào bảng bằng cách -a chuyển cờ ( ) vào --all lệnh. Sử dụng CPU và bộ nhớ sẽ không khả dụng nhưng bạn sẽ có thể xem các chỉ số được tổng hợp trong suốt vòng đời của bộ chứa, chẳng hạn như hoạt động mạng.

Bạn có thể xem số liệu thống kê của một và nhiều bộ chứa giống như các lệnh docker CLI phổ biến khác. Chuyển danh sách id hoặc tên vùng chứa phân tách bằng dấu cách. Đầu ra sẽ hiển thị các chỉ số cho các vùng chứa được chỉ định, xóa mọi thứ khác.

số liệu thống kê docker first-container second-container
Quảng cáo

docker stats hỗ trợ định dạng tùy chỉnh để bạn có thể chọn chỉ các cột bạn cần. Cờ --format chấp nhận chuỗi chỗ dành sẵn Đi cho phép bạn tạo trực quan hóa dữ liệu tùy chỉnh.

Dưới đây là cách hiển thị tên vùng chứa có chỉ số sử dụng CPU và bộ nhớ:

docker stats --format "bảng {{. Tên}}t{{. CPUPerc}}t{{. MemUsage}}"

Loại table định dạng thêm tiêu đề cột vào đầu ra. Bỏ qua điều này nếu bạn muốn dữ liệu thô mà không cần tabulation. Nếu bạn sử dụng cùng một chuỗi định dạng thường xuyên, hãy cân nhắc thêm nó làm bí danh shell để dễ truy cập.

Nhận thêm thông tin

Thông tin chi tiết hơn về việc sử dụng tài nguyên của bộ chứa có thể được lấy bằng cách kiểm tra nhóm kiểm soát (cgroup) của nó. Cơ chế hạt nhân này theo dõi mức tiêu thụ của một nhóm các quy trình, phơi bày các số liệu được thu thập trong một hệ thống tập tin giả.

Hai phiên bản của hệ thống cgroup có sẵn. v2 chỉ được hỗ trợ trên Docker 20.10 trở lên với nhân Linux v4.15. Các bản phát hành cũ hơn sẽ sử dụng v1. Tài liệu về v2 vẫn chưa đầy đủ, vì vậy v1 có thể dễ dàng hơn để làm việc với.

Để tìm cgroup của vùng chứa, bạn cần xác định phiên bản nào đang hoạt động và biết ID đầy đủ của vùng chứa. Đây phải là phiên bản hoàn chỉnh, không phải dạng bị cắt bớt được hiển thị trong docker ps và đầu docker stats ra. Bạn có thể tìm thấy nó bằng cách chạy docker ps --no-trunc .

Quảng cáo

Kết hợp ID vùng chứa với đường dẫn đến thư mục nhóm điều khiển của hệ thống của bạn. Đường dẫn cho v1 và v2 được Docker ghi lại. Sau đó, bạn có thể kiểm tra hệ thống tệp giả để tìm số liệu thống kê tài nguyên chi tiết. Đây là đường dẫn để tìm bộ nhớ của bộ chứa sử dụng khi sử dụng cgroups v1:

cat /sys/fs/cgroup/memory/docker/<full container id>/memory.stat

Tệp bộ nhớ cung cấp thông tin chi tiết về mức tiêu thụ, giới hạn, phân trang và sử dụng hoán đổi.

Tìm số liệu tài nguyên với API Docker

Một cách đơn giản hơn để truy cập thông tin này là thông qua Docker API. Điều này được bật theo mặc định thông qua ổ cắm Unix của docker daemon. Điểm /containers/{id}/stats cuối cung cấp chi tiết sử dụng tài nguyên chuyên sâu. Thay {id} thế bằng giấy tờ tùy thân của vùng chứa.

curl --unix-socket /var/run/docker.sock "http://localhost/v1.41/containers/{id}/stats" | jq

Chúng tôi đang sử dụng curl trong ví dụ này. Nó được hướng dẫn sử dụng ổ cắm daemon Docker thông qua --unix-socket cờ. Api Docker sẽ trả về dữ liệu ở định dạng JSON; điều này được bắt đầu để jq làm cho nó dễ đọc hơn trong thiết bị đầu cuối.

4e6fc47e

Mỗi phản hồi API chứa thông tin chi tiết về việc sử dụng tài nguyên hiện tại và quá khứ của bộ chứa. Đó là dữ liệu số dành cho tiêu dùng bằng máy công cụ. Các giá trị được trình bày “thô” và có thể không được hiểu ngay lập tức mà không cần xử lý thêm hoặc ăn vào một công cụ bảng điều khiển.

Xem quy trình đang chạy

Một lệnh riêng biệt, docker top , cho phép bạn xem danh sách quy trình hiện tại của một vùng chứa được chỉ định:

docker đầu my-container
Quảng cáo

Nó liệt kê danh sách quá trình của bộ chứa tại thời điểm lệnh được chạy. Không stats giống như , nó không cung cấp luồng dữ liệu trực tiếp. Bạn có thể xem ID của từng quy trình, người dùng đã khởi động nó và lệnh đang được chạy.

5e6d4b7d

Bạn cũng có thể lấy thông tin này từ API. Sử dụng cách tiếp cận tương tự như được mô tả ở trên, thay /containers/{id}/stats thế điểm cuối cho /containers/{id}/top .

Docker không cung cấp cách tích hợp để xem việc sử dụng tài nguyên theo quy trình. Nếu bạn muốn thông tin này, tốt nhất là đính kèm vào bộ chứa và cài đặt top hoặc htop . Những công cụ này sẽ cung cấp cho bạn một cái nhìn sâu sắc hơn nhiều về hoạt động của container.

docker exec -it my-container sh

# thay thế lệnh của trình quản lý gói của bạn apt update
&& apt install htop -y

htop

Tóm tắt

Trình nền Docker thu thập và tiết lộ số liệu thống kê tiêu thụ tài nguyên theo thời gian thực và lịch sử về các bộ chứa của bạn. Bạn có thể truy cập chế độ xem đồ họa cơ bản của dữ liệu bằng cách sử dụng nhưng để đọc nâng docker stats cao hơn, DOCKER API hoặc kiểm tra nhóm điều khiển thủ công là cần thiết.

Bạn cũng có thể liệt kê các quy trình đang chạy của bộ chứa nhưng lệnh docker top không cung cấp bất kỳ dấu hiệu nào về số liệu tài nguyên. Điều này có nghĩa là nó được sử dụng hạn chế khi kiểm tra lý do tại sao một bộ chứa đang giữ CPU hoặc bộ nhớ quá mức. Bạn sẽ cần phải đính kèm vào nó theo cách thủ công và kiểm tra từ bên trong.

Các công cụ của Docker nhắm mục tiêu giám sát và quan sát chung, không kiểm tra chi tiết để tạo điều kiện giải quyết các vấn đề. Hầu hết thời gian, chúng hoàn toàn đầy đủ nhưng kiến thức tốt về các công cụ giám sát Linux rộng hơn hoạt động bên trong các bộ chứa sẽ hiệu quả hơn khi giải quyết vấn đề.

How to Develop on a Remote SSH Server With Visual Studio Code

Cách phát triển trên máy chủ SSH từ xa với mã Visual Studio

How to Run Puppeteer and Headless Chrome in a Docker Container

Cách chạy Puppeteer và Chrome không đầu trong Docker Container

What Does Git Cherry Pick Do, And When Should You Use It?

Git Cherry Pick làm gì, và khi nào bạn nên sử dụng nó?

How to Automate MySQL Database Migrations With Skeema

Cách tự động di chuyển cơ sở dữ liệu MySQL với Skeema

How to Create C# Client Web Apps With Microsoft’s Blazor Web Framework

Cách tạo ứng dụng web C# Client với Khung web Blazor của Microsoft

What Is SQLite and Why Is It So Popular?

SQLite là gì và tại sao nó lại phổ biến như vậy?

Dịch từ: https://www.cloudsavvyit.com/13715/how-to-monitor-the-resource-usage-of-docker-containers/

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây