Sysdig: มันคืออะไรและวิธีการใช้งาน

Sysdig เป็นเครื่องมือที่มองเห็นระบบสากลด้วยการสนับสนุนสำหรับภาชนะบรรจุ สิ่งที่ทำให้ Sysdig มีความพิเศษคือมันเชื่อมโยงตัวเองเข้ากับเคอร์เนลของเครื่องและแยกข้อมูลตามแต่ละคอนเทนเนอร์ สำหรับขอบเขตของบทช่วยสอนนี้เราจะเน้นที่ Sysdig เวอร์ชันโอเพนซอร์ส

ในส่วนถัดไปคุณจะ:

  • ติดตั้ง Sysdig
  • หมุนการติดตั้ง Wordpress โดยใช้นักแต่งเพลง
  • ใช้ Sysdig เพื่อรวบรวมเหตุการณ์และวิเคราะห์ในภายหลัง
  • ใช้ Sysdig เพื่อวิเคราะห์ข้อมูลแบบเรียลไทม์

ข้อกำหนดเบื้องต้น

  • ติดตั้งนักเทียบท่าบนระบบของคุณ สำหรับรายละเอียดเกี่ยวกับการติดตั้ง Docker ให้ดูหน้าการติดตั้ง Docker
  • มีการติดตั้ง Docker Compose ในระบบของคุณ อ้างถึงหน้าการติดตั้ง Docker Compose สำหรับคำแนะนำเกี่ยวกับวิธีการติดตั้ง Docker Compose
  • ส่วนหัวเคอร์เนลถูกติดตั้งบนระบบโฮสต์

ติดตั้ง Sysdig

ทำตามขั้นตอนเหล่านี้เพื่อติดตั้ง Sysdig ภายในคอนเทนเนอร์ Docker:

  1. ในหน้าต่างเทอร์มินัลรันคำสั่งต่อไปนี้เพื่อดึงอิมเมจ Sysdig Docker:
นักเทียบท่า pull sysdig / sysdig
ใช้แท็กเริ่มต้น: ล่าสุดล่าสุด: การดึงจาก sysdig / sysdig 2967486b0658: ดึงสมบูรณ์ 78101b780c72: f8 สมบูรณ์ f8fd635f8: ดึงสมบูรณ์ 650327159ca8: ดึงสมบูรณ์ bf51ac76a6d9: ดึงสมบูรณ์ 78101b780c72f8: ดึงสมบูรณ์ ดึงเสร็จสมบูรณ์ 6de86c8ed6e9: ดึงสมบูรณ์ 8d1825f8be4b: ดึงข้อมูลสรุปที่สมบูรณ์: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 สถานะ: ดาวน์โหลดใหม่แล้วสำหรับรุ่น sysdig: sddig258f6be9fd8d6ecdeed84ce0

2. เรียกใช้ Sysdig ในคอนเทนเนอร์โดยป้อน:

นักเทียบท่าวิ่ง -i -t - ชื่อ sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v / dev: / โฮสต์ / dev -v / proc: / host / proc: ro -v / boot: / host / boot: ro -v / lib / modules: / host / lib / modules: ro -v / usr: / โฮสต์ / usr: ro sysdig / sysdig
* การตั้งค่าลิงค์ / usr / src จากโฮสต์ * ยกเลิกการโหลด sysdig-probe ถ้ามี * กำลังเรียกใช้ dkms ติดตั้งสำหรับ sysdig Error! echo ส่วนหัวเคอร์เนลของคุณสำหรับเคอร์เนล 3.10.0-957.12.2.el7.x86_64 ไม่พบที่ /lib/modules/3.10.0-957.12.2.el7.x86_64/build หรือ /lib/modules/3.10.0-957.12 .2.el7.x86_64 / แหล่งที่มา * การรัน dkms build ล้มเหลวไม่พบ /var/lib/dkms/sysdig/0.26.4/build/make.log * พยายามโหลดระบบ sysdig-probe ถ้ามี * พยายามค้นหา sysdig-probe ที่คอมไพล์แล้วสำหรับ 3.10 .0-957.12.2.el7.x86_64 พบการกำหนดค่าเคอร์เนลที่ /host/boot/config-3.10.0-957.12.2.el7.x86_64 * พยายามดาวน์โหลดโมดูลที่คอมไพล์แล้วจาก https://s3.amazonaws.com/download .draios.com / เสถียร / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko ดาวน์โหลดสำเร็จโหลดโมดูลรูต @ 7b14a23eb22 #:

บางสิ่งที่ควรทราบเกี่ยวกับคำสั่งด้านบน:

  • แฟล็ก -i เปิด STDIN ไว้
  • --privileged พารามิเตอร์ให้การเข้าถึงอุปกรณ์ทั้งหมดในโฮสต์ นอกจากนี้ยังตั้งค่า SELinux เพื่อให้กระบวนการทำงานภายในคอนเทนเนอร์เข้าถึงแบบเดียวกับโฮสต์เหมือนกับกระบวนการที่ทำงานบนโฮสต์
  • แฟล็ก -v ระบุรายการไฟล์ (บนโฮสต์) ที่ Sysdig สามารถเข้าถึงได้

หมุนการติดตั้ง Wordpress

ในส่วนนี้คุณจะติดตั้ง Wordpress โดยใช้คำสั่ง docker-compose

  1. ในหน้าต่างเทอร์มินัลใหม่ย้ายไปที่ไดเรกทอรีโครงการของคุณและพิมพ์คำสั่งต่อไปนี้:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. สร้างไฟล์ชื่อนักเทียบท่าเขียนด้วยเนื้อหาต่อไปนี้:

รุ่น: บริการ '3.3': db: อิมเมจ: mysql: 5.7 วอลุ่ม: - db_data: / var / lib / mysql รีสตาร์ท: สภาพแวดล้อมเสมอ: MYSQL_ROOT_PASSWORD: WORLDORDpress MYSQL_DATABASE: wordpress MYSQL_PASSWORD: wordpress MYSQL_PASSWORD wordpress: พอร์ตล่าสุด: - "8000: 80" รีสตาร์ท: สภาพแวดล้อมเสมอ: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: เวิร์ดเพรส WORDPRESS_DB_NAME: วอลุ่ม WordPress: {}

3. รันคำสั่ง docker-compose up ในโหมดเดี่ยวด้วย:

นักเทียบท่าเขียนขึ้น -d
การสร้างเครือข่าย "wordpress-sysdig_default" ด้วยไดรเวอร์เริ่มต้นการสร้างไดรฟ์ข้อมูล "wordpress-sysdig_db_data" พร้อมไดรเวอร์เริ่มต้นการดึง wordpress (wordpress: ล่าสุด) ... ล่าสุด: การดึงจากไลบรารี / wordpress 8ec398bc0356: Pull complete 85cf4fc86478: Pull complete 970dadf4cc6 8c04561117a4: ดึงเสร็จสมบูรณ์ d6b7434b63a2: ดึงสมบูรณ์ 83d8859e9744: ดึงสมบูรณ์ 9c3d824d8247f8: ดึงสมบูรณ์ 9e316fd5b3b3: ดึงสมบูรณ์ 88ae7711d3c: ดึงสมบูรณ์ ดึงสมบูรณ์ ecda5b7aad12: ดึงสมบูรณ์ 84256a6b6b44: ดึงสมบูรณ์ 35d4f385efb7c8a8b8c8b8f8a7f8a8f8a7f8a7f9a8f0a7f0f0a0f0f0f0a7f0f0f0a7f0f0f0 สำหรับการดาวน์โหลดทั้งหมด: กด_1 ... เสร็จแล้ว

4. คุณสามารถตรวจสอบสถานะของคอนเทนเนอร์ด้วย:

นักเทียบท่า ps

หากทุกอย่างเป็นไปด้วยดีคุณควรเห็นบางสิ่งที่คล้ายกับผลลัพธ์ต่อไปนี้:

รหัสคอนเทนเนอร์ภาพคำสั่งสร้างสถานะพอร์ตชื่อ f390eec29f52 เวิร์ดเพรส: ล่าสุด "รายการนักเทียบท่า -point ... " ประมาณหนึ่งนาทีก่อนขึ้นไปประมาณนาทีที่หนึ่ง 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint.s ... s … "ประมาณหนึ่งนาทีก่อนขึ้นไปประมาณหนึ่งนาที 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" / 13 นาทีที่แล้วขึ้น sysdig

5. ตอนนี้ Wordpress เปิดใช้งานแล้ว ชี้เบราว์เซอร์ของคุณไปที่ http: // localhost: 8000 เพื่อเริ่มตัวช่วยสร้างการติดตั้ง:

6. เมื่อวิซาร์ดการติดตั้งเสร็จสิ้นเรามาสร้างโพสต์ตัวอย่าง:

การรวบรวมข้อมูลไปยังไฟล์

ในส่วนนี้เราจะแสดงวิธีที่คุณสามารถใช้ Sysdig เพื่อรวบรวมกิจกรรมและวิเคราะห์ในภายหลัง

  1. หากต้องการดัมพ์เหตุการณ์ที่ดักจับทั้งหมดไปยังไฟล์ให้ย้ายไปยังคอนเทนเนอร์ Sysdig และป้อนคำสั่งต่อไปนี้:
sysdig -w การตรวจสอบ - wordpress.scap

2. ในหน้าต่างเทอร์มินัลใหม่ให้ใช้ ab เพื่อสร้างคำขอ 10,000 รายการโดยมีคำขอสูงสุด 100 คำขอที่ทำงานพร้อมกัน:

ab -n 1,000 -c 100 http: // localhost: 8000 /? p = 7
นี่คือ ApacheBench, เวอร์ชัน 2.3 <$ การแก้ไข: $ 1430300> ลิขสิทธิ์ 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ ได้รับอนุญาตให้ใช้กับมูลนิธิ Apache Software, http://www.apache.org/ การเปรียบเทียบ localhost (อดทนรอ) เสร็จ 100 คำขอเสร็จ 200 คำขอเสร็จ 300 คำขอเสร็จสมบูรณ์ 400 คำขอเสร็จ 500 คำขอเสร็จสมบูรณ์ 600 คำขอเสร็จสมบูรณ์ 700 คำขอเสร็จสมบูรณ์ 700 คำขอเสร็จสมบูรณ์ 800 คำขอเสร็จสมบูรณ์ร้องขอ 800 เสร็จแล้วร้องขอ 1000 เสร็จแล้ว 1000 คำขอ

โปรดทราบว่าการส่งออกดังกล่าวถูกตัดทอนความกะทัดรัด

3. ย้ายกลับไปที่ทัวร์ Sysdig container และหยุดการเก็บข้อมูลโดยการป้อน“ CTRL + C”

กำลังวิเคราะห์ข้อมูล

ตอนนี้ถ้าคุณดูขนาดของไฟล์ monitoring-wordpress.scap คุณจะสังเกตเห็นว่า Sysdig บันทึกข้อมูลได้ไม่น้อยกว่า 80M:

ls -lh การตรวจสอบ - wordpress.scap
-rw-R - r-- 1 รูทราก 80M 7 ม.ค. 16:28 monitoring-wordpress.scap

ในการค้นหาเส้นทางผ่านภูเขาแห่งข้อมูลคุณจะต้องใช้สิ่งที่เรียกว่าสิ่ว

สิ่วนั้นเป็นสคริปต์ Lua ที่วิเคราะห์สตรีมเหตุการณ์และดำเนินการที่เป็นประโยชน์

คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อแสดงรายการของสิ่ว:

sysdig -cl
หมวดหมู่: แอปพลิเคชัน --------------------- httplog บันทึกการร้องขอ HTTP httptop คำขอ HTTP สูงสุด memcachelog บันทึกคำขอ memcached หมวดหมู่: การใช้งาน CPU ---------- --------- spectrogram เห็นภาพความล่าช้าของระบบปฏิบัติการในเวลาจริง subsecoffset แสดงภาพเวลาการดำเนินการออฟเซ็ต subsecond topcontainers_cpu ตู้คอนเทนเนอร์ยอดนิยมโดยการใช้งาน CPU topprocs_cpu กระบวนการสูงสุดโดยการใช้งาน CPU หมวดหมู่: ข้อผิดพลาด ---------------- topcontainers_error ตู้คอนเทนเนอร์ด้านบนตามจำนวนข้อผิดพลาด topfiles_errors ไฟล์ด้านบนตามจำนวนข้อผิดพลาด topprocs_errors กระบวนการด้านบนตามจำนวน ของข้อผิดพลาด

โปรดทราบว่าการส่งออกดังกล่าวถูกตัดทอนความกะทัดรัด

ในการดึงข้อมูลโดยละเอียดเกี่ยวกับสิ่วออกให้รันคำสั่ง sysdig ตามด้วยแฟล็ก -i และชื่อของสิ่วดังในตัวอย่างต่อไปนี้:

sysdig -i httptop
หมวดหมู่: แอปพลิเคชัน --------------------- httptop คำขอ HTTP สูงสุดแสดงคำขอ HTTP สูงสุดโดย: ncalls เวลาหรือไบต์ Args: [string] โดย - แสดงธุรกรรม HTTP ด้านบน โดย: ncalls เวลาหรือโดย tes ค่าเริ่มต้นคือ ncalls

ทำตามตัวอย่างของเราต่อไปนี้เป็นวิธีที่คุณสามารถใช้สิ่วงู Kamptop เพื่อแสดงคำขอ HTTP ด้านบน:

sysdig -r การตรวจสอบ-wordpress.scap -c httptop
ncalls url ของเมธอด ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? p = 7 14 ตัวเลือก * 2 รับ localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / ภาชนะ / 6bd8418eb03f / json 1 GET localhost / v1.24 / ตู้คอนเทนเนอร์ / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6a7469897897897469897899469897479797897898998997

คุณสามารถดูข้อมูลเดียวกันในรูปแบบที่เป็นมิตรกับคอนเทนเนอร์ด้วยแฟล็ก -pcontainer:

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
ncalls url ของเมธอดคอนเทนเนอร์ ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? p = 7 1,000 โฮสต์ GET localhost: 8000 /? p = 7 43 ตัวเลือก wordpress-sysdig_wo OPTIONS * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET /v1.24/images1s6gd6 / s8d4 / s8d4 / ท้องถิ่น cd06093b141b / JSON 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901

ขุดลึก

Sysdig รวบรวมข้อมูลที่มีเนื้อหาหลากหลายซึ่งช่วยให้คุณได้รับข้อมูลเชิงลึกโดยละเอียดเกี่ยวกับการทำงานภายในของคอนเทนเนอร์ของคุณ สมมติว่าคุณกำลังใช้งานคอนเทนเนอร์บางตัวและต้องการทราบว่ากระบวนการใดใช้ CPU มากที่สุด

  1. รายการภาชนะบรรจุที่ใช้งานในช่วงเวลาที่คุณบันทึกเหตุการณ์:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. คุณสามารถระบุคอนเทนเนอร์ที่ใช้ CPU มากที่สุดด้วย:

sysdig -r monitoring-wordpress.scap -c topcontainers_cpu
CPU% container.name --------------------------------------------- ----------------------------------- 5.37% wordpress-sysdig_wordpress_1 1.35% wordpress-sysdig_db_1 0.84% ​​โฮสต์ 0.51% sysdig

3. คุณสามารถขุดได้ลึกขึ้นและระบุกระบวนการที่ใช้ CPU มากที่สุดด้วยสิ่ว topprocs_cpu:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name มี wordpress_1
CPU% Process 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

หากคุณต้องการดูรายละเอียดเพิ่มเติม ps สิ่วให้ทางเลือกที่ละเอียดมากขึ้น:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID ผู้ใช้ VIRT RES FDLIMIT CMD 5896 5896 รูท 232.82M 22.32M 429496729 apache2 8383 8383 8383 www-data 307.44M 25.46M 429496729 apache2 8422 8422 www-data 235.44M 22.90M 429496729 apache2 8897 www-data 235.44m 22.89m 429496729 apache2 9154 9154 www-data 235.44M 22.91M 429496729 apache2 9241 9241 www-data 307.44M 25.66M 429496729 apache2 9242 9242 www-data 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

เคล็ดลับที่เป็นประโยชน์

หากคุณเรียกใช้ Sysdig เพื่อจับภาพเหตุการณ์ดังในตัวอย่างข้างต้น (sysdig -w monitoring-wordpress.scap) ไฟล์เหตุการณ์จะเติบโตอย่างต่อเนื่องจนกว่าจะใช้พื้นที่ว่างทั้งหมด มีวิธีการสองสามอย่างที่สามารถช่วยป้องกันไม่ให้สิ่งนี้เกิดขึ้น:

  • ระบุจำนวนเหตุการณ์ที่ Sysdig ควรจับโดยส่งผ่านแฟล็ก -n เมื่อ Sysdig รวบรวมจำนวนเหตุการณ์ที่ระบุไว้มันจะออกโดยอัตโนมัติ:
sysdig -n 5000 -w monitoring-wordpress.scap
  • ใช้แฟล็ก -C เพื่อกำหนดค่า Sysdig เพื่อแยกการจับภาพออกเป็นไฟล์ขนาดเล็กลงตามขนาดที่ระบุ ตัวอย่างต่อไปนี้บันทึกเหตุการณ์ไปยังไฟล์ <10MB อย่างต่อเนื่อง:
sysdig -C 10 -w monitoring-wordpress.scap

สิ่งนี้จะสร้างไฟล์จำนวนมากไม่เกิน 10 MB:

ls -lh การตรวจสอบ - WordPress *
-rw-R - r-- 1 รูทราก 9.6M 7 ม.ค. 17:13 monitoring-wordpress.scap0 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:14 monitoring-wordpress.scap1 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:14 monitoring-wordpress.scap2 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:14 monitoring-wordpress.scap3 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:14 monitoring-wordpress.scap4 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:14 monitoring-wordpress.scap5 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:14 monitoring-wordpress.scap6 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:14 monitoring-wordpress.scap7 -rw-r - r-- 1 รูทราก 6.4M 7 ม.ค. 17:14 monitoring-wordpress.scap8
  • ระบุจำนวนไฟล์สูงสุดที่ Sysdig ควรเก็บไว้พร้อมกับแฟล็ก -W ตัวอย่างเช่นคุณสามารถรวมแฟล็ก -C และ -W ดังนี้:
sysdig -C 10 -W 4 -w monitoring-wordpress.scap

คำสั่งดังกล่าวจะเก็บไฟล์การจับสี่ไฟล์ล่าสุดเท่านั้น:

ls -lh การตรวจสอบ - WordPress *
-rw-R - r-- 1 รูทราก 7.2M 7 ม.ค. 17:21 monitoring-wordpress.scap0 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:21 monitoring-wordpress.scap1 -rw-r - r-- 1 รูทราก 9.6M 7 ม.ค. 17:21 monitoring-wordpress.scap2 -rw-r - r-- 1 รูทราก 9.6M ม.ค. 7 17:21 monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w monitoring-wordpress.scap

การตรวจสอบตามเวลาจริง

ด้วย Sysdig คุณสามารถวิเคราะห์ข้อมูลได้แบบเรียลไทม์ เมื่อดูภาพแรกสิ่งนี้อาจดูเหมือนเป็นงานที่น่ากลัวเพราะโดยปกติเหตุการณ์ทั้งหมดจะถูกพิมพ์ออกไปยังคอนโซลอย่างต่อเนื่อง โชคดีที่สิ่วพร้อมให้ความช่วยเหลือ

ลองยกตัวอย่าง

วิเคราะห์กระบวนการของคุณบนพื้นฐานของแต่ละคอนเทนเนอร์

  1. รันคำสั่งต่อไปนี้เพื่อแสดงรายการคอนเทนเนอร์ของคุณ:
นักเทียบท่า ps
CONTAINER ID ภาพคำสั่งสร้างสถานะพอร์ตชื่อ 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.... " 9 นาทีที่แล้วขึ้น 9 นาที sysdig 06def7875617 wordpress: ล่าสุด "docker-entrypoint.s …" -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s …" 3 ชั่วโมงที่ผ่านมา 3 ชั่วโมงที่ผ่านมา 3306 / tcp, wordpress-sysdig_db_1

2. คุณสามารถวิเคราะห์กระบวนการที่ทำงานในคอนเทนเนอร์ WordPress ด้วย:

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

3. ในทำนองเดียวกันคุณสามารถวิเคราะห์กระบวนการที่ทำงานในคอนเทนเนอร์ MySQL:

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

โปรดทราบว่าไม่แตกต่างจากตัวอย่างนี้มาก Sysdig สามารถตรวจสอบปริมาณการใช้เครือข่ายการใช้งานดิสก์และอื่น ๆ

ในบทช่วยสอนนี้คุณได้ผ่านพื้นฐานของการใช้ Sysdig เพื่อทำความเข้าใจกับกิจกรรมที่สร้างโดยคอนเทนเนอร์ของคุณอย่างชัดเจน ตัวอย่างในการโพสต์บล็อกนี้ช่วยให้คุณเริ่มต้นและในบทช่วยสอนในอนาคตเราจะแสดงวิธีใช้ Csysdig และ Sysdig Inspect