เครื่องมือภาวะวิกฤตบน Linux
- ให้รายชื่อ "เครื่องมือภาวะวิกฤต" ที่ควรติดตั้งไว้เป็นค่าเริ่มต้นบนเซิร์ฟเวอร์ Linux พร้อมชื่อแพ็กเกจ (Ubuntu) ที่มีเครื่องมือเหล่านั้น
- ครอบคลุมเครื่องมือสำหรับสถิติพื้นฐาน, system log, ข้อมูลอุปกรณ์, สถิติอุปกรณ์, เครื่องมือเครือข่าย, สถิติ NUMA, network sniffer, profiler และสถิติ PMU เป็นต้น
bpfcc-tools (bcc) และ bpftrace มีเครื่องมือ eBPF ให้ใช้งาน โดย bcc มีความสามารถมากกว่า และ bpftrace สามารถแก้ไขได้แบบเรียลไทม์
- แนะนำให้ติดตั้งเครื่องมือวิเคราะห์ตัวเร่งความเร็วเฉพาะทางหรือเครื่องมือดีบักบางอย่างไว้ล่วงหน้าตามประเภทของเซิร์ฟเวอร์
- เครื่องมือวิเคราะห์ที่จำเป็นเหล่านี้ไม่ได้เปลี่ยนบ่อย จึงจำเป็นต้องอัปเดตเพียงไม่กี่ปีครั้ง
ความสำคัญของการติดตั้งเครื่องมือในช่วงวิกฤต
- อธิบายพร้อมยกตัวอย่างถึงปัญหาที่อาจเกิดขึ้นเมื่อต้องติดตั้งซอฟต์แวร์ระหว่างสถานการณ์วิกฤตใน production
- ระบบอาจช้าจนใช้เวลานานในการติดตั้งเครื่องมือที่ต้องการ และอาจติดปัญหาการตั้งค่าหรือ policy ด้านความปลอดภัยหลายอย่างจนติดตั้งได้ยาก
- เพื่อให้วินิจฉัยและแก้ปัญหาได้อย่างรวดเร็วในภาวะวิกฤต จึงควรติดตั้งเครื่องมือรับมือไว้ล่วงหน้า
ความเห็นของ GN⁺
- บทความนี้ให้ข้อมูลที่มีประโยชน์มากสำหรับผู้ดูแลระบบหรือ SRE (Site Reliability Engineer) โดยเน้นย้ำความสำคัญของการเตรียมพร้อมล่วงหน้าเพื่อให้สามารถใช้เครื่องมือที่จำเป็นได้ทันทีในสถานการณ์วิกฤตจริง
- การติดตั้งเครื่องมือรับมือภาวะวิกฤตล่วงหน้าช่วยเพิ่มความพร้อมใช้งานและความยืดหยุ่นในการฟื้นตัวของระบบ และช่วยลด downtime ที่อาจเกิดขึ้นได้
- อย่างไรก็ตาม การหาสมดุลระหว่างความปลอดภัยกับประสิทธิภาพเป็นสิ่งสำคัญ เช่น หากมีการติดตั้งเครื่องมือที่ไม่จำเป็นไว้ในระบบ ผู้โจมตีอาจนำไปใช้ในทางที่ผิดได้
- Linux distribution อาจพิจารณารวมเครื่องมือรับมือภาวะวิกฤตมาให้โดยค่าเริ่มต้นสำหรับสภาพแวดล้อมองค์กร แต่ทั้งนี้ก็ขึ้นอยู่กับนโยบายความปลอดภัยและความต้องการของแต่ละองค์กร
- ในชุมชนโอเพนซอร์สมีเครื่องมือด้าน monitoring และ performance analysis ที่หลากหลายอยู่แล้ว เช่น Prometheus และ Grafana ซึ่งถูกใช้อย่างแพร่หลายในการมอนิเตอร์ประสิทธิภาพระบบ การนำเครื่องมือเหล่านี้มาใช้ร่วมกับเครื่องมือรับมือภาวะวิกฤตจะช่วยให้การดูแลระบบมีประสิทธิภาพยิ่งขึ้น
1 ความคิดเห็น
ความเห็นจาก Hacker News
แม้จะมีเซิร์ฟเวอร์แบบคอนเทนเนอร์จำนวนมาก แต่ก็ยังมีความท้าทายอยู่
หากมีเครื่องมือดีบักที่ต้องเปิดใช้ฟีเจอร์บางอย่างของเคอร์เนล ก็มีความกังวลเกี่ยวกับผลกระทบต่อคอนเทนเนอร์อื่นที่รันอยู่บนโฮสต์เดียวกัน
บนระบบ FreeBSD มีไดเรกทอรี /rescue/ ซึ่งมีไฟล์ไบนารีแบบ static link ขนาดราว 17MB เพียงไฟล์เดียว ที่รวมเครื่องมือสำคัญประมาณ 150 รายการไว้ด้วยกัน
ตอนทำงานที่ Netflix, Brendan และทีมของเขาติดตั้งเครื่องมือดีบักอย่าง bpftrace, bcc และ perf ที่ใช้งานได้จริงไว้ทั่วระบบ และสิ่งนี้ช่วยชีวิตไว้หลายครั้ง
แปลกใจที่
straceไม่อยู่ในรายการ เป็นเครื่องมือที่มีประโยชน์มาก โดยเฉพาะเวลาที่โปรแกรมคืนข้อความผิดพลาดที่ใช้การไม่ได้หรือผิดจากความเป็นจริงเวลาสัมภาษณ์ตำแหน่งสาย SRE มักจะพูดถึงเครื่องมือเหล่านี้เสมอ สิ่งสำคัญไม่ใช่คำสั่งเฉพาะที่ผู้สมัครจำได้ แต่คือรู้ว่าอะไรทำได้บ้าง มีเครื่องมือประเภทใดให้ใช้ และใช้อย่างไร
ในสถานการณ์ฉุกเฉินที่ติดตั้งเครื่องมือไม่ได้ สามารถรันยูทิลิตีจำนวนมากผ่าน Docker ได้ ตัวอย่างเช่น มีการเสนอวิธี build และรัน Docker container สำหรับ tcpdump โดยเชื่อมต่อกับ host network
แม้จะชอบ
yum installมากกว่า แต่ถ้าใช้ Docker ได้ นี่ก็เป็นทางเลือกที่ใช้งานได้แม้จะต้องมีการแมปเพิ่มเติม ในการตั้งค่า rootless/podman อาจใช้ไม่ได้ไม่มีการพูดถึง nmap, netstat, nc ทั้งที่เครื่องมือเหล่านี้ช่วยแก้ปัญหามาแล้วหลายครั้ง
ขอสิทธิ์ root ได้ไหม? ต้องเปิดตั๋วให้ผู้ดูแลระบบก่อนถึงจะทำอะไรได้สักอย่าง
อีกอย่างที่อยากเพิ่มคือ nmap ปัญหาการเชื่อมต่อเครือข่ายอาจไม่แสดงชัดเจนในบางแอป