Counter, Gauge และ Histogram ใน Prometheus ใช้ต่างกันอย่างไร
ชนิด metric สื่อความหมายของค่าที่เก็บและวิธีคำนวณในภายหลัง อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ
ชนิด metric สื่อความหมายของค่าที่เก็บและวิธีคำนวณในภายหลัง เหมาะกับการวัดคำขอที่เข้ามา จำนวนงานค้าง และเวลาให้บริการอย่างถูกความหมาย บทความนี้สรุปแนวคิดจากเอกสารทางการของ Prometheus และจุดที่ควรตรวจเมื่อนำไปใช้จริง
ภาพรวม
Prometheus เก็บ metric เป็น time series จาก target ตามรอบ ความหมายของชื่อ metric, label และช่วงเวลาคิวรีมีผลต่อความถูกต้องของกราฟและต้นทุนเก็บข้อมูล
หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: ชนิด metric สื่อความหมายของค่าที่เก็บและวิธีคำนวณในภายหลัง จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ
หลักการทำงาน
Counter เพิ่มขึ้นเป็นหลัก Gauge ขึ้นลงได้ และ Histogram นับการกระจายของค่าตาม bucket
ให้ตรวจทั้งสถานะที่เครื่องมือรายงานและผลลัพธ์ปลายทางที่ผู้ใช้หรือระบบอื่นได้รับ หากสองส่วนไม่ตรงกัน ควรกลับไปตรวจค่าตั้งต้นและขอบเขตที่ฟีเจอร์นี้รับผิดชอบก่อนเปลี่ยนค่าเพิ่มเติม
เหมาะกับงานแบบไหน
เหมาะกับการวัดคำขอที่เข้ามา จำนวนงานค้าง และเวลาให้บริการอย่างถูกความหมาย
ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง
ขั้นตอนนำไปใช้
- กำหนดคำถามที่ metric หรือ alert ต้องตอบให้ชัด
- ตรวจผลคิวรีกับช่วงเวลาหลายขนาดและกรณี target หาย
- ติดตามจำนวน time series, เวลา query และความถี่ alert
เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน
ข้อควรระวัง
อย่าใช้ Gauge แทน Counter เมื่อจะคำนวณอัตรา และออกแบบ bucket ของ Histogram ให้ตรง SLO
แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ
สรุป
ชนิด metric สื่อความหมายของค่าที่เก็บและวิธีคำนวณในภายหลัง เหมาะกับการวัดคำขอที่เข้ามา จำนวนงานค้าง และเวลาให้บริการอย่างถูกความหมาย ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่
อ่านเพิ่มเติม: เอกสารทางการของ Prometheus