Sysdig: Nó là gì và làm thế nào để sử dụng nó

Sysdig là một công cụ hiển thị hệ thống phổ quát với sự hỗ trợ cho các container. Điều làm cho Sysdig trở nên đặc biệt, là nó tự móc vào nhân của máy và tách biệt thông tin trên cơ sở mỗi container. Đối với phạm vi của hướng dẫn này, chúng tôi sẽ tập trung vào phiên bản nguồn mở của Sysdig.

Trong các phần tiếp theo, bạn sẽ:

  • Cài đặt Sysdig
  • Quay lên bản cài đặt Wordpress bằng cách sử dụng docker-compose
  • Sử dụng Sysdig để thu thập các sự kiện và phân tích chúng sau
  • Sử dụng Sysdig để phân tích dữ liệu trong thời gian thực

Điều kiện tiên quyết

  • Docker được cài đặt trên hệ thống của bạn. Để biết chi tiết về việc cài đặt Docker, hãy tham khảo trang Cài đặt Docker.
  • Docker Compose được cài đặt trên hệ thống của bạn. Tham khảo trang Cài đặt Docker Compose để biết hướng dẫn về cách cài đặt Docker Compose.
  • Các tiêu đề kernel được cài đặt trên hệ thống máy chủ.

Cài đặt Sysdig

Thực hiện theo các bước sau để cài đặt Sysdig bên trong bộ chứa Docker:

  1. Trong cửa sổ terminal, thực hiện lệnh sau để kéo hình ảnh Sysdig Docker:
docker kéo sysdig / sysdig
Sử dụng thẻ mặc định: mới nhất: mới nhất: Kéo từ sysdig / sysdig 2967486b0658: Kéo xong hoàn thành Kéo hoàn thành 6de86c8ed6e9: Kéo hoàn thành 8d1825f8be4b: Kéo hoàn thành Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84

2. Chạy Sysdig trong một container bằng cách nhập:

docker run -i -t --name sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v / dev: / host / dev -v / Proc: / host / Proc: ro -v / boot: / host / boot: ro -v / lib / mô-đun: / host / lib / mô-đun: ro -v / usr: / host / usr: ro sysdig / sysdig
* Thiết lập liên kết / usr / src từ máy chủ * Hủy tải sysdig-thăm dò, nếu có * Chạy dkms cài đặt cho sysdig Error! echo Tiêu đề kernel của bạn cho kernel 3.10.0-957.12.2.el7.x86_64 không thể tìm thấy tại /lib/modules/3.10.0-957.12.2.el7.x86_64/build hoặc /lib/modules/3.10.0-957.12 .2.el7.x86_64 / nguồn. * Chạy dkms xây dựng không thành công, không thể tìm thấy /var/lib/dkms/sysdig/0.26.4/build/make.log * Cố gắng tải đầu dò sysdig của hệ thống, nếu có * Cố gắng tìm đầu dò sysdig được biên dịch trước cho 3.10 .0-957.12.2.el7.x86_64 Đã tìm thấy cấu hình kernel tại /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Đang cố tải xuống mô-đun được biên dịch trước từ https://s3.amazonaws.com/doad .draios.com / ổn định / sysdig-thăm dò-nhị phân / sysdig-thăm dò-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Tải xuống thành công, mô-đun

Một số điều cần lưu ý về lệnh trên:

  • Cờ -i giữ STDIN mở.
  • Tham số --privileged cung cấp quyền truy cập vào tất cả các thiết bị trên máy chủ. Ngoài ra, nó thiết lập SELinux để cho phép các tiến trình đang chạy bên trong container có cùng quyền truy cập vào máy chủ như một tiến trình đang chạy trên máy chủ.
  • Cờ -v chỉ định danh sách các tệp (trên máy chủ) mà Sysdig có thể truy cập.

Cài đặt Wordpress

Trong phần này, bạn sẽ cài đặt Wordpress bằng lệnh docker-compose.

  1. Trong cửa sổ terminal mới, di chuyển vào thư mục dự án của bạn và gõ các lệnh sau:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Tạo một tệp có tên là docker-compose với nội dung sau:

phiên bản: '3.3' services: db: image: mysql: 5.7 volume: - db_data: / var / lib / mysql restart: always môi trường: MYSQL_ROOT_PASSWORD: cách nào đó nhấn MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSW: wordpress wordpress: cổng mới nhất: - "8000: 80" khởi động lại: luôn môi trường: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volume: db_data:

3. Chạy lệnh docker-compose up ở chế độ tách rời với:

docker-soạn lên -d
Tạo mạng "wordpress-sysdig_default" bằng trình điều khiển mặc định Tạo âm lượng "wordpress-sysdig_db_data" với trình điều khiển mặc định Kéo wordpress (wordpress: mới nhất) ... mới nhất: Kéo từ thư viện / wordpress 8ec398bc0356: Kéo hoàn thành 85cf4fc8647 Kéo xong 8c04561117a4 Kéo hoàn thành kéo dài ecda5b7aad12: Kéo hoàn toàn nhấn_1 ... xong

4. Bạn có thể xác minh trạng thái của các thùng chứa của mình bằng:

docker ps

Nếu tất cả đều ổn, bạn sẽ thấy một cái gì đó tương tự như đầu ra sau:

ID CONTAINER HÌNH ẢNH TÌNH TRẠNG TÌNH TRẠNG TÌNH TRẠNG TÊN TÊN Nnam f390eec29f52 wordpress: mới nhất "docker-entrypoint.s." Khoảng một phút trước Up Khoảng một phút 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844848 sio "Khoảng một phút trước Up Khoảng một phút 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint. của "13 phút trước Lên 13 phút sysdig

5. Bây giờ Wordpress đã hoạt động. Trỏ trình duyệt của bạn tới http: // localhost: 8000 để bắt đầu trình hướng dẫn cài đặt:

6. Khi trình hướng dẫn cài đặt kết thúc, hãy tiếp tục và tạo một bài đăng mẫu:

Thu thập dữ liệu vào một tệp

Trong phần này, chúng tôi sẽ chỉ ra cách bạn có thể sử dụng Sysdig để thu thập các sự kiện và phân tích chúng sau đó.

  1. Để kết xuất tất cả các sự kiện đã chụp vào một tệp, di chuyển đến vùng chứa Sysdig và nhập lệnh sau:
sysdig -w theo dõi-wordpress.scap

2. Trong cửa sổ terminal mới, sử dụng ab để thực hiện 10000 yêu cầu với tối đa 100 yêu cầu chạy đồng thời:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Đây là ApacheBench, Phiên bản 2.3 <$ Sửa đổi: 1430300 $> Bản quyền 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Được cấp phép cho Quỹ phần mềm Apache, http://www.apache.org/ Điểm chuẩn localhost (kiên nhẫn) Đã hoàn thành 100 yêu cầu Hoàn thành 200 yêu cầu Hoàn thành 300 yêu cầu Hoàn thành 400 yêu cầu Hoàn thành 500 yêu cầu Hoàn thành 600 yêu cầu Hoàn thành 800 yêu cầu Hoàn thành 800 yêu cầu Hoàn thành 1000 yêu cầu Hoàn thành 1000 yêu cầu Hoàn thành 1000 yêu cầu

Lưu ý rằng đầu ra ở trên đã bị cắt bớt cho ngắn gọn.

3. Di chuyển trở lại để tham quan vùng chứa Sysdig và dừng thu thập dữ liệu bằng cách nhập vào CTRL + CÊ.

Phân tích dữ liệu

Bây giờ, nếu bạn nhìn vào kích thước của tệp giám sát-wordpress.scap, bạn sẽ nhận thấy Sysdig thu được không dưới 80M dữ liệu:

ls -lh giám sát-wordpress.scap
-rw-r - r--. 1 root 80M ngày 7 tháng 1 16:28 theo dõi-wordpress.scap

Để tìm đường đi qua núi dữ liệu này, bạn sẽ sử dụng thứ gọi là cái đục.

Một cái đục về cơ bản là một kịch bản Lua để phân tích luồng sự kiện và thực hiện các hành động hữu ích.

Bạn có thể chạy lệnh sau để hiển thị danh sách các mũi đục:

sysdig -cl
Thể loại: Ứng dụng --------------------- httplog Nhật ký yêu cầu HTTP Nhật ký yêu cầu HTTP hàng đầu memcachelog Nhật ký yêu cầu ghi nhớ Danh mục: Sử dụng CPU ---------- --------- Spectrogram Trực quan hóa độ trễ của hệ điều hành trong thời gian thực. subsecoffset Hình dung thời gian thực hiện bù phụ thứ hai. topcontainers_cpu Các bộ chứa hàng đầu theo cách sử dụng CPU topprocs_cpu Các quy trình hàng đầu theo cách sử dụng CPU Danh mục: Lỗi ---------------- topcontainftimeerror Các bộ chứa hàng đầu theo số lỗi topfiles_errors Các tập tin hàng đầu theo số lượng lỗi topprocs_errors quy trình hàng đầu theo số lỗi

Lưu ý rằng đầu ra ở trên đã bị cắt bớt cho ngắn gọn.

Để lấy thông tin chi tiết về cái đục, hãy chạy lệnh sysdig theo sau là cờ -i và tên của cái đục, như trong ví dụ sau:

sysdig -i omeptop
Thể loại: Ứng dụng --------------------- omeptop Yêu cầu HTTP hàng đầu Hiển thị các yêu cầu HTTP hàng đầu theo: ncalls, thời gian hoặc byte Đối số: [chuỗi] bởi - Hiển thị các giao dịch HTTP hàng đầu bởi: ncalls, thời gian hoặc bởi tes, mặc định là ncalls

Tiếp tục ví dụ của chúng tôi, đây là cách bạn có thể sử dụng máy đục lỗ để hiển thị các yêu cầu HTTP hàng đầu:

sysdig -r theo dõi-wordpress.scap -c omeptop
url phương thức ncalls ----------------------------------------------- --------------------------------- 2001 NHẬN localhost: 8000 /? P = 7 14 TÙY CHỌN * 2 NHẬN localhost: 8000 / favicon.ico 1 GET /wp-content/theme/toventoven/assets/fonts/inter/Inter-upright-var.woff2 1 NHẬN localhost / v1.24 / container / 6bd8418eb03f / json 1 GET localhost / v1.24 / thùng / 06def7875617 / json 1

Bạn có thể thấy thông tin tương tự ở định dạng thân thiện với container với cờ -pcontainer:

sysdig -r theo dõi-wordpress.scap -c omeptop -pcontainer
ncalls url phương thức container ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo NHẬN localhost: 8000 /? P = 7 1000 máy chủ GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo TÙY CHỌN * 1 sysdig TÌM KIẾM * 1 sysdig NHẬN cd06093bbbbb1

Đào sâu hơn

Sysdig nắm bắt thông tin giàu nội dung cho phép bạn có được thông tin chi tiết về hoạt động bên trong của các thùng chứa của bạn. Giả sử bạn đang chạy một vài container và muốn biết quá trình nào tiêu tốn nhiều CPU nhất.

  1. Liệt kê các thùng chứa đã hoạt động trong khoảng thời gian bạn chụp các sự kiện:
sysdig -r giám sát-wordpress.scap -c lscontainers

2. Bạn có thể xác định vùng chứa nhiều CPU nhất:

sysdig -r theo dõi-wordpress.scap -c topcontainers_cpu
CPU% container.name --------------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 0,84% máy chủ 0,51% hệ thống

3. Bạn có thể đào sâu hơn nữa và xác định quy trình sử dụng nhiều CPU nhất bằng máy đục topprocs_cpu:

sysdig -r theo dõi-wordpress.scap -c topprocs_cpu container.name chứa wordpress_1
CPU% quá trình PID ---------------------------------------------- ---------------------------------- 0.12% apache2 8383 0.11% apache2 9413 0.11% apache2 9300 0.11% apache2 9242 0,11% apache2 8897 0,11% apache2 8422 0,10% apache2 9372 0,10% apache2 9241 0,10% apache2 8424 0,09% apache2 9429

Nếu bạn muốn xem chi tiết hơn, máy đục lỗ cung cấp một sự thay thế dài dòng hơn:

sysdig -r theo dõi-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID TÀI LIỆU SỬ DỤNG 8897 dữ liệu của dữ liệu 22,89M 429496729 apache2 9372 9372 www-data 235,44M 22,89M 429496729 apache2 9413 9413 www-data 233,44M 20,77M 429496729 apache2

Lời khuyên hữu ích

Nếu bạn chạy Sysdig để chụp các sự kiện như trong ví dụ trên (sysdig -w theo dõi-wordpress.scap), tệp sự kiện sẽ phát triển liên tục cho đến khi nó tiêu tốn hết dung lượng có sẵn. Có một vài phương pháp có thể giúp ngăn chặn điều này xảy ra:

  • Chỉ định số lượng sự kiện Sysdig sẽ nắm bắt bằng cách chuyển cho nó cờ -n. Khi Sysdig nắm bắt được số lượng sự kiện đã chỉ định, nó sẽ tự động thoát:
sysdig -n 5000 -w theo dõi-wordpress.scap
  • Sử dụng cờ -C để định cấu hình Sysdig để nó chia bản chụp thành các tệp nhỏ hơn có kích thước được chỉ định. Ví dụ sau liên tục lưu các sự kiện vào các tệp <10MB:
sysdig -C 10 -w theo dõi-wordpress.scap

Điều này sẽ tạo ra một loạt các tệp không lớn hơn 10 MB:

ls -lh giám sát-wordpress *
-rw-r - r--. 1 root 9,6M Ngày 7 tháng 1 17:13 theo dõi-wordpress.scap0 -rw-r - r--. 1 root 9,6M ngày 7 tháng 1 17:14 theo dõi-wordpress.scap1 -rw-r - r--. 1 root 9,6M Ngày 7 tháng 1 17:14 theo dõi-wordpress.scap2 -rw-r - r--. 1 root 9,6M 7 tháng 1 17:14 theo dõi-wordpress.scap3 -rw-r - r--. 1 gốc 9,6M Ngày 7 tháng 1 17:14 theo dõi-wordpress.scap4 -rw-r - r--. 1 root 9,6M Ngày 7 tháng 1 17:14 theo dõi-wordpress.scap5 -rw-r - r--. 1 root 9,6M 7 tháng 1 17:14 theo dõi-wordpress.scap6 -rw-r - r--. 1 root 9,6M Ngày 7 tháng 1 17:14 theo dõi-wordpress.scap7 -rw-r - r--. 1 root 6.4M ngày 7 tháng 1 17:14 theo dõi-wordpress.scap8
  • Chỉ định số lượng tệp tối đa Sysdig nên giữ với cờ -W. Ví dụ: bạn có thể kết hợp các cờ -C và -W như vậy:
sysdig -C 10 -W 4 -w theo dõi-wordpress.scap

Lệnh trên sẽ chỉ giữ bốn tệp chụp cuối cùng:

ls -lh giám sát-wordpress *
-rw-r - r--. 1 root 7.2M ngày 7 tháng 1 17:21 theo dõi-wordpress.scap0 -rw-r - r--. 1 root 9,6M Ngày 7 tháng 1 17:21 theo dõi-wordpress.scap1 -rw-r - r--. 1 root 9,6M Ngày 7 tháng 1 17:21 theo dõi-wordpress.scap2 -rw-r - r--. 1 root 9,6M 7 tháng 1 17:21 theo dõi-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w theo dõi-wordpress.scap

Giám sát thời gian thực

Với Sysdig, bạn cũng có thể phân tích dữ liệu theo thời gian thực. Thoạt nhìn, điều này có vẻ như là một nhiệm vụ khó khăn bởi vì theo mặc định, tất cả các sự kiện được in liên tục ra bàn điều khiển. May mắn thay, đục là ở đây để giúp đỡ.

Hãy lấy một ví dụ.

Phân tích quy trình của bạn trên cơ sở mỗi container

  1. Chạy lệnh sau để liệt kê các thùng chứa của bạn:
docker ps
ID CONTAINER HÌNH ẢNH TÌNH TRẠNG TÌNH TRẠNG TÌNH TRẠNG TÊN TÊN TÊN 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint." "9 phút trước Lên 9 phút -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s." 3 giờ trước Up 3 giờ 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Bạn có thể phân tích các quy trình đang chạy trong bộ chứa WordPress với:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_wordpress_1

3. Tương tự, bạn có thể phân tích các quy trình đang chạy trong bộ chứa MySQL:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_db_1

Lưu ý rằng, không khác nhiều so với ví dụ này, Sysdig có thể giám sát lưu lượng mạng, sử dụng đĩa, v.v.

Trong hướng dẫn này, bạn đã tìm hiểu các nguyên tắc cơ bản của việc sử dụng Sysdig để hiểu rõ hơn về hoạt động được tạo bởi các thùng chứa của bạn. Các ví dụ trong bài đăng trên blog này đã giúp bạn bắt đầu và, trong các hướng dẫn trong tương lai, chúng tôi sẽ chỉ cho bạn cách sử dụng Csysdig và Sysdig Inspect.