- อัปเดตใหญ่ครั้งแรกในรอบ 7 ปี โดยยังคงความเข้ากันได้กับเวอร์ชันเดิมพร้อมเพิ่มฟีเจอร์ใหม่
- UI แบบใหม่ที่ออกแบบขึ้นใหม่ให้ทันสมัย
- ปรับปรุงโปรโตคอลด้วย Remote Write 2.0
- ใช้ UTF-8 กับชื่อเมตริก/เลเบลได้
- เพิ่มการทำงานร่วมกับ OpenTelemetry
- รองรับ native histogram ซึ่งให้ประสิทธิภาพสูงกว่าและมีต้นทุนต่ำกว่า histogram แบบเดิม
- ปรับปรุงการใช้หน่วยความจำและประสิทธิภาพ CPU อย่างมากเมื่อเทียบกับ 2.0
UI ใหม่
- หนึ่งในจุดเด่นที่สุดของ Prometheus 3.0 คือ UI ที่ออกแบบใหม่
- จุดเด่น:
- อินเทอร์เฟซที่กระชับและทันสมัยยิ่งขึ้น
- เพิ่ม tree view สไตล์ PromLens
- ใช้เทคโนโลยีสแตกสมัยใหม่เพื่อให้ง่ายต่อการบำรุงรักษา
- หลังช่วงเบต้าได้เพิ่มการรองรับชื่อเมตริกและเลเบลแบบ UTF-8
- UI เวอร์ชันเก่าสามารถเปิดใช้งานชั่วคราวได้ด้วยแฟลก
old-ui
Remote Write 2.0
- ปรับปรุงโปรโตคอล Remote Write เพื่อรองรับเมทาดาทา ตัวอย่าง generated timestamp และ native histogram ได้อย่างราบรื่นยิ่งขึ้น
- ใช้ string interning เพื่อลดขนาด payload และการใช้ CPU
- ปรับปรุงการจัดการ partial write: ให้ข้อมูลข้อผิดพลาดที่ละเอียดขึ้นแก่ไคลเอนต์
รองรับ UTF-8
- ตอนนี้สามารถใช้ตัวอักษร UTF-8 กับชื่อเมตริกและค่าเลเบลได้แล้ว
- ในสภาพแวดล้อมที่ไม่รองรับ UTF-8 จะยังใช้วิธีแบบ underscore เดิม
- ใน PromQL สามารถค้นหาเมตริก UTF-8 ได้ด้วยไวยากรณ์การอ้างอิงแบบใหม่
- ปัจจุบันมีเพียงไลบรารีไคลเอนต์ Go ที่อัปเดตรองรับ UTF-8 เสร็จแล้ว ส่วนภาษาอื่นจะตามมาเร็ว ๆ นี้
รองรับ OTLP
- เพิ่มการทำงานร่วมกับ OpenTelemetry(OTLP)
- OTLP Ingestion:
- สามารถตั้งค่าให้ Prometheus รับ OTLP metrics ที่ endpoint
/api/v1/otlp/v1/metrics ได้โดยปริยาย
- ดูวิธีตั้งค่าได้จาก คู่มือ OTLP
- การทำให้เป็นมาตรฐาน UTF-8:
- ไม่จำเป็นต้องแปลงจุด(
.)เป็นขีดล่าง(_)ในชื่อเมตริกและเลเบลของ OpenTelemetry อีกต่อไป
- มีการรองรับเชิงทดลองสำหรับกลยุทธ์การแปลงหลายแบบเพื่อการเก็บ OTLP
Native Histogram
- Native Histogram ให้ประสิทธิภาพสูงกว่าและมีต้นทุนต่ำกว่า histogram แบบเดิม
- จุดเด่น:
- bucket แบบ exponential ที่ไม่จำเป็นต้องอัปเดตขอบเขต bucket ให้ตรงกับชุดข้อมูล
- เป็นฟีเจอร์เชิงทดลอง เปิดใช้งานได้ด้วยแฟลก
--enable-feature=native-histograms
- บางฟอร์แมตและโอเปอเรเตอร์ยังอยู่ระหว่างการออกแบบ
Breaking Changes
- แม้จะพยายามหลีกเลี่ยงการทำให้ฟีเจอร์เดิมใช้งานไม่ได้ในการออกเวอร์ชันหลัก แต่ก็ยังมีการเปลี่ยนแปลงเล็กน้อยบางส่วน:
- feature flags
- ไฟล์คอนฟิก
- PromQL
- scrape protocol
- คอนฟิกที่อาจได้รับผลกระทบตรวจสอบได้จาก คู่มือการย้ายระบบ
แผนการปรับปรุงในอนาคต
- governance model ใหม่ที่ครอบคลุมมากขึ้น
- เพิ่มความเข้ากันได้กับ OpenTelemetry เพิ่มเติม
- OpenMetrics 2.0 (พัฒนาภายใต้ governance ของ Prometheus)
- ทำให้ native histogram มีเสถียรภาพและรองรับ bucket แบบกำหนดเอง
- การเพิ่มประสิทธิภาพเพิ่มเติม
- ขยายการรองรับ UTF-8
2 ความคิดเห็น
UI ที่ทันสมัยจริงๆ..
อีกไม่นานคงต้องลองเอาไปใช้ดูแล้ว