เรากำลังใช้โซลูชันการติดตามแบบรวมศูนย์ใหม่ (Zenoss) การรวมเซิร์ฟเวอร์ระบบเครือข่ายและโปรแกรม Java นั้นตรงไปตรงมากับ SNMP และ JMX
อย่างไรก็ตามคำถามคือวิธีปฏิบัติที่ดีที่สุดสำหรับการตรวจสอบและจัดการแอปพลิเคชัน C ++ แบบกำหนดเองในสภาพแวดล้อมขนาดใหญ่ที่ต่างกัน (Solaris x86, RHEL Linux, Windows) คืออะไร
ความเป็นไปได้ที่ฉันเห็นคือ:
- Net SNMP
- ข้อดี
- single daemon ส่วนกลางบนแต่ละเซิร์ฟเวอร์
- มาตรฐานที่รู้จักกันดี
- รวมเข้ากับโซลูชันการตรวจสอบได้ง่าย
- เรารัน Net SNMP daemons บนเซิร์ฟเวอร์ของเราแล้ว
- การใช้งานที่ซับซ้อน (MIBs, ไลบรารี Net SNMP)
- เทคโนโลยีใหม่ที่จะแนะนำสำหรับนักพัฒนา C ++
- ข้อดี
- single daemon ส่วนกลางบนแต่ละเซิร์ฟเวอร์
- มาตรฐานที่รู้จักกันดี
- การรวมที่ไม่รู้จักในโซลูชันการตรวจสอบ (ฉันรู้ว่าพวกเขาสามารถทำการแจ้งเตือนตามข้อความ แต่มันทำงานได้ดีเพียงใดในการส่ง telemetry เช่นการใช้หน่วยความจำความลึกคิวความจุเธรด ฯลฯ )
- ใช้งานง่าย
- ปัญหาการรวมที่เป็นไปได้
- เทคโนโลยีใหม่สำหรับนักพัฒนา C ++
- ปัญหาการย้ายที่เป็นไปได้ถ้าเราสลับผู้ขายที่ตรวจสอบ
- อาจเกี่ยวข้องกับการเกิดขึ้นกับโปรโตคอลการสื่อสารแบบเฉพาะกิจ (หรือใช้ข้อมูลที่มีโครงสร้าง RFC5424; ฉันไม่ทราบว่า Zenoss สนับสนุนสิ่งนั้นโดยไม่ต้องเข้ารหัส Zenpack แบบกำหนดเอง)
- ข้อดี
- อินเตอร์เฟสการจัดการที่สอดคล้องกันสำหรับทั้ง Java และ C ++
- มาตรฐานที่รู้จักกันดี
- รวมเข้ากับโซลูชันการตรวจสอบได้ง่าย
- การใช้งานค่อนข้างง่าย (เราได้ทำไปแล้วในวันนี้เพื่อวัตถุประสงค์อื่น)
- ความซับซ้อน (JNI, thunking layer ระหว่าง native C ++ และ Java, โดยทั่วไปเขียนโค้ดการจัดการสองครั้ง)
- ปัญหาเสถียรภาพที่เป็นไปได้
- ต้องใช้ JVM ในแต่ละกระบวนการโดยใช้หน่วยความจำมากขึ้น
- JMX เป็นเทคโนโลยีใหม่สำหรับนักพัฒนา C ++
- แต่ละกระบวนการมีพอร์ต JMX ของตัวเอง (เราเรียกใช้กระบวนการจำนวนมากในแต่ละเครื่อง)
- ข้อดี
- single daemon ส่วนกลางบนแต่ละเซิร์ฟเวอร์
- อินเตอร์เฟสการจัดการที่สอดคล้องกันสำหรับทั้ง Java และ C ++
- มาตรฐานที่รู้จักกันดี
- รวมเข้ากับโซลูชันการตรวจสอบได้ง่าย
- ความซับซ้อน (โดยทั่วไปการเขียนรหัสการจัดการสองครั้ง)
- จำเป็นต้องค้นหาหรือเขียน daemon ดังกล่าว
- ต้องการโปรโตคอลระหว่าง JMX daemon และกระบวนการ C ++
- JMX เป็นเทคโนโลยีใหม่สำหรับนักพัฒนา C ++
- ข้อดี
- อินเตอร์เฟสการจัดการที่สอดคล้องกันสำหรับทั้ง Java และ C ++
- มาตรฐานที่รู้จักกันดี
- รวมเข้ากับโซลูชันการตรวจสอบได้ง่าย
- single daemon ส่วนกลางบนแต่ละเซิร์ฟเวอร์เมื่อรันในโหมด JVM ที่แบ่งใช้
- การติดตั้งค่อนข้างง่าย (ต้องมีการสร้างรหัส)
- ความซับซ้อน (การสร้างรหัสต้องใช้ GUI และการปรับแต่งหลายรอบเพื่อสร้างรหัสพร็อกซี)
- ปัญหาความมั่นคงของ JNI ที่เป็นไปได้
- ต้องใช้ JVM ในแต่ละกระบวนการโดยใช้หน่วยความจำมากขึ้น (ในโหมดฝังตัว)
- ไม่รองรับ Solaris x86 (ดีลเบรกเกอร์)
- แม้ว่าจะรองรับ Solaris x86 แต่ก็มีปัญหาความเข้ากันได้ของคอมไพเลอร์ (เราใช้ STLPort และ Forte บน Solaris ร่วมกัน
- แต่ละกระบวนการมีพอร์ต JMX ของตัวเองเมื่อทำงานในโหมดฝังตัว (เราเรียกใช้กระบวนการจำนวนมากในแต่ละเครื่อง)
- อาจทำให้เซิร์ฟเวอร์ JMX ที่ใช้ร่วมกันสำหรับกระบวนการที่ไม่ใช่ C ++ (?)
มีวิธีง่ายๆที่ฉันได้มาตรฐานหรือเปล่า?
ไม่มีโซลูชันที่สมเหตุสมผลอื่น ๆ โดยทั่วไปโซลูชันเหล่านี้จะใช้สำหรับโปรแกรม C ++ แบบกำหนดเองหรือไม่
ความรู้สึกของฉันคือ Net SNMP เป็นวิธีที่ผู้คนทำสิ่งนี้ แต่ฉันต้องการความคิดเห็นและประสบการณ์ของผู้อื่นก่อนที่จะตัดสินใจ