การตรวจสอบ Kubernetes ด้วย Prometheus [ด้วยกรณีการใช้งานและการตรวจสอบ]
เผยแพร่แล้ว: 2020-09-23สารบัญ
Prometheus ใช้ที่ไหนและทำไม?
Prometheus Kubernetes เป็นเครื่องมือตรวจสอบที่ปรับใช้บนคลัสเตอร์ AWS, Azure หรือ GCloud Kubernetes ถือเป็นเครื่องมือสำคัญในโครงสร้างพื้นฐานที่ทันสมัย Modern DevOps มีความซับซ้อนมากขึ้นในการจัดการด้วยตนเอง ดังนั้นจึงจำเป็นต้องมีระบบอัตโนมัติมากขึ้น ดังนั้นโดยทั่วไปคุณจะมีเซิร์ฟเวอร์หลายเครื่องที่เรียกใช้แอปพลิเคชันที่มีคอนเทนเนอร์
มีกระบวนการที่แตกต่างกันหลายร้อยกระบวนการที่ทำงานอยู่บนโครงสร้างพื้นฐานนั้นโดยที่เอนทิตีทั้งหมดเชื่อมต่อถึงกัน ดังนั้นการรักษาการตั้งค่าดังกล่าวเพื่อให้ทำงานได้อย่างราบรื่นและไม่มีการหยุดทำงานของแอปพลิเคชันจึงเป็นเรื่องที่ท้าทายมาก ลองนึกภาพว่ามีโครงสร้างพื้นฐานที่ซับซ้อนซึ่งมีเซิร์ฟเวอร์จำนวนมากกระจายอยู่ทั่วสถานที่ต่างๆ และคุณไม่มีข้อมูลเชิงลึกว่าเกิดอะไรขึ้นในระดับฮาร์ดแวร์หรือระดับแอปพลิเคชัน เช่น ข้อผิดพลาด การตอบสนอง และเวลาแฝง
ฮาร์ดแวร์ล่มหรือโอเวอร์โหลดอาจใช้ทรัพยากรในโครงสร้างพื้นฐานที่ซับซ้อนไม่เพียงพอ แต่อาจเกิดข้อผิดพลาดขึ้นเมื่อคุณมีบริการและแอพพลิเคชั่นมากมาย ตัวใดตัวหนึ่งสามารถหยุดทำงานและทำให้เกิดความล้มเหลวของบริการอื่น ๆ มีชิ้นส่วนที่เคลื่อนไหวได้มากมาย และผู้ใช้ก็ใช้งานแอปพลิเคชันไม่ได้ในทันใด คุณต้องระบุอย่างรวดเร็วว่าสิ่งใดจากหลายร้อยสิ่งผิดพลาดที่ผิดพลาด ซึ่งอาจเป็นเรื่องยากและใช้เวลานานเมื่อทำการดีบักระบบด้วยตนเอง
กรณีการใช้งานบางอย่างสำหรับการใช้ Prometheus Monitoring
ตัวอย่างเช่น สมมติว่าเซิร์ฟเวอร์หนึ่งมีหน่วยความจำไม่เพียงพอและเริ่มต้นคอนเทนเนอร์ที่ทำงานอยู่ซึ่งมีหน้าที่รับผิดชอบในการซิงค์ฐานข้อมูลระหว่างพ็อตฐานข้อมูลสองรายการในคลัสเตอร์ Kubernetes ส่งผลให้ทั้งสองพ็อตฐานข้อมูลล้มเหลว ฐานข้อมูลนั้นถูกใช้โดยบริการรับรองความถูกต้องที่หยุดทำงานเช่นกันเนื่องจากฐานข้อมูลไม่พร้อมใช้งาน
แอปพลิเคชันที่ขึ้นอยู่กับบริการตรวจสอบสิทธิ์นั้นไม่สามารถตรวจสอบผู้ใช้ใน UI ได้อีกต่อไป แต่จากมุมมองของผู้ใช้ สิ่งที่คุณเห็นคือข้อผิดพลาดใน UI เมื่อคุณไม่มีข้อมูลเชิงลึกว่าเกิดอะไรขึ้นภายในคลัสเตอร์ คุณจะไม่เห็นเส้นสีแดงของห่วงโซ่ของเหตุการณ์ดังที่แสดงไว้ที่นี่ คุณเพิ่งเห็นข้อผิดพลาด ตอนนี้คุณเริ่มทำงานย้อนกลับจากที่นั่นเพื่อค้นหาสาเหตุและแก้ไข แต่อะไรจะทำให้กระบวนการค้นหาปัญหามีประสิทธิภาพมากขึ้น คุณสามารถใช้เครื่องมือที่คอยตรวจสอบอย่างต่อเนื่องว่าบริการต่างๆ กำลังทำงานอยู่หรือไม่ และมีการแจ้งเตือนปรากฏขึ้นทันทีที่บริการหนึ่งขัดข้อง
คุณทราบแน่ชัดว่าเกิดอะไรขึ้น หรือดีกว่านั้น โดยจะระบุปัญหาก่อนที่จะเกิดขึ้น และแจ้งเตือนผู้ดูแลระบบที่รับผิดชอบโครงสร้างพื้นฐานนั้นเพื่อป้องกันปัญหาดังกล่าว ตัวอย่างเช่น ในกรณีนี้ จะตรวจสอบสถานะการใช้หน่วยความจำในแต่ละเซิร์ฟเวอร์เป็นประจำ เมื่ออยู่บนเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่ง มันพุ่งสูงขึ้น เช่น 70% นานกว่าหนึ่งชั่วโมงหรือเพิ่มขึ้นเรื่อย ๆ มันแจ้งเตือนเกี่ยวกับความเสี่ยงที่หน่วยความจำบนเซิร์ฟเวอร์นั้นอาจหมดในไม่ช้า

หรือลองพิจารณาอีกสถานการณ์หนึ่งที่คุณหยุดดูบันทึกสำหรับแอปพลิเคชันของคุณ เนื่องจากการค้นหาแบบยืดหยุ่นไม่ยอมรับบันทึกใหม่ เนื่องจากเซิร์ฟเวอร์มีพื้นที่ดิสก์ไม่เพียงพอ หรือการค้นหาแบบยืดหยุ่นถึงขีดจำกัดพื้นที่เก็บข้อมูลที่จัดสรรไว้ เครื่องมือตรวจสอบจะตรวจสอบพื้นที่เก็บข้อมูลอย่างต่อเนื่องและเปรียบเทียบกับการใช้การค้นหาแบบยืดหยุ่นของพื้นที่จัดเก็บ จะเห็นความเสี่ยงและแจ้งผู้ดูแลเกี่ยวกับปัญหาการจัดเก็บที่อาจเกิดขึ้น
อ่าน: คำถามสัมภาษณ์ Kubernetes
คุณสามารถบอกเครื่องมือตรวจสอบได้ว่าจุดวิกฤตนั้นคืออะไรเมื่อควรทริกเกอร์การแจ้งเตือน หากคุณมีแอปพลิเคชันที่สำคัญซึ่งอาจทำให้ข้อมูลบันทึกสูญหายได้ คุณอาจเข้มงวดมากและใช้มาตรการทันทีที่มีความจุถึงห้าสิบหรือหกสิบเปอร์เซ็นต์ การเพิ่มพื้นที่จัดเก็บจะใช้เวลานานเนื่องจากเป็นกระบวนการทางราชการในองค์กรของคุณ ซึ่งคุณต้องได้รับการอนุมัติจากแผนกไอทีและบุคคลอื่นๆ อีกหลายคน

คุณยังต้องการรับการแจ้งเตือนก่อนหน้านี้เกี่ยวกับปัญหาการจัดเก็บข้อมูลที่อาจเกิดขึ้น เพื่อให้คุณมีเวลามากขึ้นในการแก้ไข หรือเหตุการณ์ที่ 3 ที่จู่ๆ แอปพลิเคชันก็ทำงานช้าเกินไปเพราะบริการหนึ่งหยุดทำงานและเริ่มส่งข้อความแสดงข้อผิดพลาดหลายร้อยข้อความในเครือข่ายแบบวนซ้ำ ทำให้เกิดการรับส่งข้อมูลในเครือข่ายสูงและทำให้บริการอื่นๆ ช้าลง เพื่อให้มีเครื่องมือตรวจจับการเพิ่มขึ้นอย่างรวดเร็วในเครือข่าย .
เรียนรู้: Openshift Vs Kubernetes: ความแตกต่างระหว่าง Openshift และ Kubernetes
แหล่งที่มา
Kubernetes Service ค้นพบกับ Prometheus
ส่วนประกอบหลัก: Prometheus Server
สถาปัตยกรรม Prometheus
แหล่งที่มา
สถาปัตยกรรมของ Prometheus Kubernetes
คุณลักษณะที่สำคัญอย่างหนึ่งของ Prometheus Kubernetes คือได้รับการออกแบบให้มีความน่าเชื่อถือแม้ว่าระบบอื่นๆ จะเกิดไฟฟ้าดับ คุณสามารถวินิจฉัยปัญหาและแก้ไขได้ ดังนั้นเซิร์ฟเวอร์ Prometheus แต่ละเซิร์ฟเวอร์จึงมีความสมบูรณ์ในตัว ซึ่งหมายความว่าไม่ขึ้นอยู่กับที่เก็บข้อมูลเครือข่ายหรือบริการระยะไกลอื่นๆ
มีไว้เพื่อทำงานเมื่อส่วนอื่นๆ ของโครงสร้างพื้นฐานเสียหาย และคุณไม่จำเป็นต้องตั้งค่าโครงสร้างพื้นฐานที่กว้างขวางเพื่อใช้งาน อย่างไรก็ตาม แต่ก็มีข้อเสียที่ Prometheus นั้นสามารถปรับขนาดได้ยาก ดังนั้น เมื่อคุณมีเซิร์ฟเวอร์หลายร้อยเครื่อง คุณอาจต้องการมีเซิร์ฟเวอร์ Prometheus หลายเครื่องที่รวบรวมข้อมูลเมตริกเหล่านี้ทั้งหมด
การกำหนดค่าและการปรับขนาดพื้นฐานในลักษณะดังกล่าวอาจเป็นเรื่องยากมากเนื่องจากคุณลักษณะเหล่านี้ ดังนั้น แม้ว่าการใช้โหนดเดียวจะซับซ้อนน้อยกว่า และคุณสามารถเริ่มต้นได้ง่ายมาก แต่ก็จำกัดจำนวนเมตริกที่ Prometheus สามารถตรวจสอบได้ ในการหลีกเลี่ยงปัญหานั้น คุณต้องเพิ่มความจุของเซิร์ฟเวอร์ Prometheus เพื่อให้สามารถเก็บข้อมูลตัววัดได้มากขึ้น หรือจำกัดจำนวนตัววัดที่ Prometheus รวบรวมจากแอปพลิเคชันเพื่อจำกัดให้เหลือเฉพาะตัวที่เกี่ยวข้องเท่านั้น

คุณสามารถเพิ่มทักษะความรู้ในหัวข้อดังกล่าวได้โดยการทำหลักสูตรการประมวลผลแบบคลาวด์บนแพลตฟอร์ม เช่น upGrad, Udemy, Coursera เป็นต้น เนื่องจากเครื่องมือตรวจสอบนี้สามารถปรับใช้บนคลาวด์ได้ โดยเฉพาะอย่างยิ่งกับ upGrad หลักสูตรนี้ได้รับการออกแบบโดยสถาบันที่มีชื่อเสียงอย่าง IIIT-B ของประเทศของเรา สิ่งนี้จะให้ประสบการณ์ตรงและความรู้ที่กว้างขึ้นแก่คุณ
เช็คเอาท์: Kubernetes Vs. นักเทียบท่า: ความแตกต่างหลักที่คุณควรทราบ
บทสรุป
Kubernetes ช่วยลดความยุ่งยากในการปรับใช้ การปรับขนาด และการจัดการแอปพลิเคชันที่มีคอนเทนเนอร์และไมโครเซอร์วิส สิ่งนี้ช่วยให้การบริหารงานดำเนินต่อไป แต่ยังไม่รู้จักและแก้ไขปัญหาที่ซ่อนอยู่ เช่น การดำเนินการที่ช้า คุณต้องมีความสามารถในการรวบรวมและจินตนาการถึงแอปพลิเคชันพื้นฐานจากบนลงล่าง และข้อมูลการดำเนินการจากสภาพของคุณ
การไม่เข้าใกล้ข้อมูลอย่างต่อเนื่องควบคู่ไปกับข้อมูลที่เกี่ยวข้อง ทำให้ยากต่อการสอดคล้องกับการวัดสภาพของคุณ ดังนั้นคุณจึงสามารถจัดการกับปัญหาได้รวดเร็วยิ่งขึ้นเช่นกัน
หากคุณต้องการเรียนรู้และเชี่ยวชาญ Kubernetes, DevOps และอื่นๆ โปรดดูที่ IIIT-B & upGrad's PG Diploma in Full Stack Software Development Program