Sysdig - เครื่องมือตรวจสอบและแก้ไขปัญหาระบบอันทรงพลังสำหรับ Linux
Sysdig คือเครื่องมือตรวจสอบและแก้ไขปัญหาระบบแบบโอเพ่นซอร์ส ข้ามแพลตฟอร์ม ทรงพลังและยืดหยุ่นสำหรับ Linux นอกจากนี้ยังใช้งานได้บน Windows และ Mac OSX แต่มีฟังก์ชันการทำงานที่จำกัด และสามารถใช้สำหรับการวิเคราะห์ระบบ การตรวจสอบ และการแก้ไขจุดบกพร่อง
โดยปกติ คุณจะใช้เครื่องมือตรวจสอบและแก้ไขปัญหาประสิทธิภาพ Linux ต่างๆ ผสมกัน รวมถึงเครื่องมือเหล่านี้ตามรายการด้านล่างเพื่อดำเนินการตรวจสอบและแก้ไขข้อบกพร่องของ Linux:
- strace – ค้นหาการเรียกของระบบและส่งสัญญาณไปยังกระบวนการ
- tcpdump – การตรวจสอบการรับส่งข้อมูลเครือข่ายดิบ
- netstat – การตรวจสอบการเชื่อมต่อเครือข่าย
- htop – การตรวจสอบกระบวนการแบบเรียลไทม์
- iftop – การตรวจสอบแบนด์วิธเครือข่ายแบบเรียลไทม์
- lsof – ดูว่าไฟล์ใดถูกเปิดโดยกระบวนการใด
อย่างไรก็ตาม sysdig ผสานรวมสิ่งที่เครื่องมือข้างต้นทั้งหมดและอื่นๆ อีกมากมายที่นำเสนอไว้ในโปรแกรมเดียวที่เรียบง่าย และยิ่งกว่านั้นด้วยการสนับสนุนคอนเทนเนอร์ที่น่าทึ่ง ช่วยให้คุณสามารถจับภาพ บันทึก กรอง และตรวจสอบพฤติกรรมที่แท้จริง (สตรีมของเหตุการณ์) ของระบบ Linux รวมถึงคอนเทนเนอร์
มาพร้อมกับอินเทอร์เฟซบรรทัดคำสั่งและ UI แบบโต้ตอบที่มีประสิทธิภาพ (csysdig) ซึ่งช่วยให้คุณดูกิจกรรมของระบบแบบเรียลไทม์ หรือดำเนินการถ่ายโอนข้อมูลการติดตามและบันทึกสำหรับการวิเคราะห์ในภายหลัง คุณสามารถดูวิธีการทำงานของ csysdig ได้จากวิดีโอด้านล่าง
คุณสมบัติ Sysdig:
- มีความรวดเร็ว เสถียร และใช้งานง่ายพร้อมเอกสารประกอบที่ครบถ้วน
- มาพร้อมกับการรองรับเทคโนโลยีคอนเทนเนอร์แบบเนทิฟ รวมถึง Docker, LXC
- สามารถเขียนสคริปต์ได้ใน Lua; เสนอสิ่ว (สคริปต์ Lua น้ำหนักเบา) สำหรับการประมวลผลเหตุการณ์ระบบที่บันทึกไว้
- รองรับการกรองเอาต์พุตที่เป็นประโยชน์
- รองรับการติดตามระบบและแอปพลิเคชัน
- สามารถรวมเข้ากับ Ansible, Puppet และ Logstash ได้
- เปิดใช้งานการวิเคราะห์บันทึกขั้นสูงตัวอย่าง
- นอกจากนี้ยังมีฟีเจอร์การวิเคราะห์การโจมตีเซิร์ฟเวอร์ Linux (นิติเวช) สำหรับแฮกเกอร์ที่มีจริยธรรมและอีกมากมาย
ในบทความนี้ เราจะแสดงวิธีการติดตั้ง sysdig บนระบบ Linux และใช้กับตัวอย่างพื้นฐานของการวิเคราะห์ระบบ การตรวจสอบ และการแก้ไขปัญหา
วิธีการติดตั้ง Sysdig ใน Linux
การติดตั้งแพ็คเกจ sysdig นั้นง่ายดายเพียงแค่เรียกใช้คำสั่งด้านล่าง ซึ่งจะตรวจสอบข้อกำหนดทั้งหมด หากทุกอย่างพร้อมแล้ว ระบบจะดาวน์โหลดและติดตั้งแพ็คเกจจากพื้นที่เก็บข้อมูล Draios APT/YUM
curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash
OR
curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash
หลังจากติดตั้ง คุณจะต้องเรียกใช้ sysdig ในฐานะรูท เนื่องจากจำเป็นต้องเข้าถึงพื้นที่สำคัญ เช่น ระบบไฟล์ /proc, /dev/sysdig* อุปกรณ์และจำเป็นต้องโหลดโมดูลเคอร์เนล sysdig-probe โดยอัตโนมัติ (ในกรณีที่ไม่ใช่) มิฉะนั้นให้ใช้คำสั่ง sudo
ตัวอย่างพื้นฐานที่สุดคือการรันโดยไม่มีข้อโต้แย้งใดๆ ซึ่งจะช่วยให้คุณสามารถดูสตรีมกิจกรรมของระบบ Linux ที่อัปเดตแบบเรียลไทม์:
sudo sysdig
เอาต์พุตด้านบน (ข้อมูลดิบ) อาจไม่สมเหตุสมผลสำหรับคุณมากนัก เพื่อให้เอาต์พุตมีประโยชน์มากกว่าให้รัน csysdig:
sudo csysdig
หมายเหตุ: เพื่อให้เข้าใจถึงเครื่องมือนี้อย่างแท้จริง คุณต้องใช้ sysdig ซึ่งสร้างข้อมูลดิบตามที่เราเห็นก่อนหน้านี้จากการทำงาน ระบบ Linux: คุณต้องเข้าใจวิธีใช้ตัวกรองและสิ่ว
แต่หากคุณต้องการวิธีใช้ sysdig ที่ไม่ยุ่งยาก ให้ดำเนินการต่อด้วย csysdig
ทำความเข้าใจเกี่ยวกับสิ่วและตัวกรอง Sysdig
สิ่ว Sysdig เป็นสคริปต์ Lua ขั้นต่ำสำหรับตรวจสอบสตรีมเหตุการณ์ sysdig เพื่อดำเนินการแก้ไขปัญหาระบบที่มีประโยชน์ และอื่นๆ คำสั่งด้านล่างจะช่วยให้คุณดูสิ่วที่มีอยู่ทั้งหมด:
sudo sysdig -cl
ภาพหน้าจอแสดงรายการตัวอย่างสิ่วตามหมวดหมู่ต่างๆ
หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับสิ่ว ให้ใช้แฟล็ก -i
:
sudo sysdig -i topprocs_cpu
ตัวกรอง Sysdig จะเพิ่มพลังให้กับประเภทของเอาต์พุตที่คุณจะได้รับจากสตรีมเหตุการณ์ ซึ่งช่วยให้คุณปรับแต่งเอาต์พุตได้ คุณควรระบุที่ส่วนท้ายของบรรทัดคำสั่ง
ตัวกรองที่ตรงไปตรงมาและธรรมดาที่สุดคือการตรวจสอบ “class.field=value ” ขั้นพื้นฐาน คุณยังสามารถรวมสิ่วเข้ากับตัวกรองเพื่อการปรับแต่งที่ทรงพลังยิ่งขึ้นได้
หากต้องการดูรายการคลาสฟิลด์ ฟิลด์ และคำอธิบายที่มีอยู่ ให้พิมพ์:
sudo sysdig -l
การสร้างไฟล์ติดตามระบบ Linux
หากต้องการดัมพ์เอาต์พุต sysdig ในไฟล์เพื่อการวิเคราะห์ในภายหลัง ให้ใช้แฟล็ก -w
เช่นนี้
คุณสามารถอ่านไฟล์ดัมพ์การติดตามได้โดยใช้แฟล็ก -r:
sudo sysdig -r trace.scap
ตัวเลือก -s
ใช้เพื่อระบุจำนวนไบต์ของข้อมูลที่จะบันทึกสำหรับแต่ละเหตุการณ์ของระบบ ในตัวอย่างนี้ เรากำลังกรองเหตุการณ์สำหรับกระบวนการ mongod
sudo sysdig -s 3000 -w trace.scap
sudo sysdig -r trace.scap proc.name=mongod
การตรวจสอบกระบวนการ Linux
หากต้องการแสดงรายการกระบวนการของระบบ ให้พิมพ์:
sudo sysdig -c ps
ตรวจสอบกระบวนการตามการใช้งาน CPU
หากต้องการดูกระบวนการยอดนิยมตามเปอร์เซ็นต์การใช้งาน CPU ให้รันคำสั่งนี้:
sudo sysdig -c topprocs_cpu
การตรวจสอบการเชื่อมต่อเครือข่ายและ I/O
หากต้องการดูการเชื่อมต่อเครือข่ายระบบ ให้รัน:
sudo sysdig -c netstat
คำสั่งต่อไปนี้จะช่วยคุณแสดงรายการการเชื่อมต่อเครือข่ายสูงสุดตามจำนวนไบต์ทั้งหมด:
sudo sysdig -c topconns
ถัดไป คุณยังสามารถแสดงรายการกระบวนการอันดับต้นๆ ตาม I/O เครือข่ายได้ดังต่อไปนี้:
sudo sysdig -c topprocs_net
การตรวจสอบไฟล์ระบบ I/O
คุณสามารถส่งออกข้อมูลที่อ่านและเขียนโดยกระบวนการในระบบได้ดังนี้:
sudo sysdig -c echo_fds
หากต้องการแสดงรายการกระบวนการอันดับต้นๆ ตามไบต์ของดิสก์ (อ่าน + เขียน) ให้ใช้:
sudo sysdig -c topprocs_file
การแก้ไขปัญหาประสิทธิภาพของระบบ Linux
หากต้องการจับตาดูปัญหาคอขวดของระบบ (การเรียกระบบที่ช้า) ให้ดำเนินการคำสั่งนี้:
sudo sysdig -c bottlenecks
ติดตามเวลาดำเนินการของกระบวนการ
หากต้องการติดตามเวลาดำเนินการของกระบวนการ คุณสามารถรันคำสั่งนี้และดัมพ์การติดตามในไฟล์:
sudo sysdig -w extime.scap -c proc_exec_time
จากนั้นใช้ตัวกรองเพื่อลดรายละเอียดของกระบวนการเฉพาะ (postgres ในตัวอย่างนี้) ดังนี้:
sudo sysdig -r extime.scap proc.name=postgres
ค้นพบเครือข่ายที่ช้า I/0
คำสั่งง่ายๆ นี้จะช่วยคุณตรวจจับ I/0 เครือข่ายที่ช้า:
sudo sysdig -c netlower
การดูรายการไฟล์บันทึก
คำสั่งด้านล่างช่วยให้คุณแสดงทุกข้อความที่เขียนไปยัง syslog หากคุณสนใจรายการบันทึกสำหรับกระบวนการเฉพาะ ให้สร้างการถ่ายโอนข้อมูลการติดตามและกรองตามที่แสดงไว้ก่อนหน้านี้:
sudo sysdig -c spy_syslog
คุณสามารถพิมพ์ข้อมูลใดๆ ที่เขียนโดยกระบวนการใดๆ ลงในไฟล์บันทึกได้ดังต่อไปนี้:
sudo sysdig -c spy_logs
การตรวจสอบคำขอเซิร์ฟเวอร์ HTTP
หากคุณมีเซิร์ฟเวอร์ HTTP เช่น Apache หรือ Nginx ทำงานบนระบบของเรา ให้ดูบันทึกคำขอของเซิร์ฟเวอร์ด้วยคำสั่งนี้:
sudo sysdig -c httplog
sudo sysdig -c httptop [Print Top HTTP Requests]
แสดงเชลล์การเข้าสู่ระบบและกิจกรรมผู้ใช้เชิงโต้ตอบ
คำสั่งด้านล่างจะช่วยให้คุณดู ID เชลล์การเข้าสู่ระบบทั้งหมด:
sudo sysdig -c list_login_shells
สุดท้ายแต่ไม่ท้ายสุด คุณสามารถแสดงกิจกรรมเชิงโต้ตอบของผู้ใช้ระบบได้ เช่น:
sudo sysdig -c spy_users
สำหรับข้อมูลการใช้งานและตัวอย่างเพิ่มเติม โปรดอ่านหน้าคู่มือ sysdig และ csysdig:
man sysdig
man csysdig
อ้างอิง: https://www.sysdig.org/
ตรวจสอบเครื่องมือตรวจสอบประสิทธิภาพ Linux ที่มีประโยชน์เหล่านี้ด้วย:
- BCC – เครื่องมือติดตามแบบไดนามิกสำหรับการตรวจสอบประสิทธิภาพของ Linux ระบบเครือข่ายและอื่นๆ
- pyDash – เครื่องมือตรวจสอบประสิทธิภาพ Linux บนเว็บ
- Perf- เครื่องมือตรวจสอบและวิเคราะห์ประสิทธิภาพสำหรับ Linux
- Collectl: เครื่องมือตรวจสอบประสิทธิภาพ All-in-One ขั้นสูงสำหรับ Linux
- Netdata – เครื่องมือตรวจสอบประสิทธิภาพแบบเรียลไทม์สำหรับระบบ Linux
บทสรุป
Sysdig รวบรวมฟังก์ชันการทำงานจากเครื่องมือบรรทัดคำสั่งมากมายมาไว้ในอินเทอร์เฟซที่โดดเด่นเพียงอินเทอร์เฟซเดียว ซึ่งช่วยให้คุณสามารถเจาะลึกเหตุการณ์ระบบ Linux ของคุณเพื่อรวบรวมข้อมูล บันทึกสำหรับการวิเคราะห์ในภายหลัง และให้การสนับสนุนคอนเทนเนอร์ที่น่าทึ่ง
หากต้องการถามคำถามหรือแบ่งปันความคิดเห็นเกี่ยวกับเครื่องมือนี้ ให้ใช้แบบฟอร์มคำติชมด้านล่าง