มาต่อกันที่ Data Model ของ Prometheus กัน คือ Prometheus เนี่ยเก็บข้อมูลเป็น Time Series แต่ตัวรูปแบบข้อมูลของ metrics ที่เอามาเก็บพร้อม timestamp เนี่ยมันมีรูปแบบและองค์ประกอบดังนี้
Metric Names and Labels
ข้อมูลในแต่ละเซ็ตของ time series ที่เก็บเนี่ยแยกกันโดยใช้ metric name กับ labels ซึ่งเป็น key/value (label_name/value)
ตัวของ metric name อักษรที่เอามาตั้งชื่อได้ถ้าดูตาม RegEx pattern ก็แบบนี้ [a-zA-Z_:][a-zA-Z0-9_:]*
ก็คือขึ้นต้นด้วย a-z
หรือ A-Z
หรือ _
หรือ :
แล้วตัวถัดๆไปก็ ขึ้นต้นด้วย a-z
หรือ A-Z
หรือ _
หรือ :
หรือ ตัวเลขได้ ตัวอย่างเช่น http_requests_total
ตัวของ label เป็น key value โดยตัว key name นั้นตั้งชื่อได้โดยมีกฎ RexEx pattern ดังนี้ [a-zA-Z_][a-zA-Z0-9_]*
ซึ่งก็เหมือนกับ metric name นั่นล่ะยกเว้นใช้ :
ไม่ได้
ส่วน value ของ label นั้นเป็น string อะไรก็ได้ที่อยู่ในเซตของ Unicode characters
Samples
Sample ก็คือข้อมูลที่เรากำหนดใช้กับ metric name ที่มี labels ตามที่เรากำหนดโดยตัวข้อมูลนั้นเก็บได้แค่ 2 แบบคือ
- float64 เป็นเลขแบบทศนิยม 64 bits
- millisecond-precision timestamp เป็นเลขจำนวนเต็มระบุถึงจำนวนของเวลาในหน่วย millisecond
Notation
ที่นีรูปแบบของการเขียนค่า metric ของ metric name ที่มี labels และ sample ตามที่ต้องการนั้นอยู่ใน pattern แบบนี้
<metric name>{<label name>=<label value>, ...} sample_value
ตัวอย่างเช่น ถ้าเรามี metric name ชื่อ api_http_requests_total
ที่มี 2 labels คือ method="POST"
และ handler="/messages"
เพื่อเป็น metric ที่ระบุถึงจำนวน request ที่เกิดขึ้นโดยที่มี http method เป็น "POST"
และ ยิงมาที่ endpoint handler="/messages"
และ sample value เป็น 10 เราจะเขียนได้แบบนี้
api_http_requests_total{method="POST", handler="/messages"} 10
นี่ก็คือ Data model กับวิธีการเขียน metric ของ Prometheus ครั้งต่อไปมาดูว่ามี Metric Type แบบไหนกันบ้างให้ใช้งานสำหรับ Prometheus
ขอฝาก Buy Me a Coffee
สำหรับท่านใดที่อ่านแล้วชอบโพสต์ต่างๆของผมที่นี่ ต้องการสนับสนุนค่ากาแฟเล็กๆน้อยๆ สามารถสนับสนุนผมได้ผ่านทาง Buy Me a Coffee คลิ๊กที่รูปด้านล่างนี้ได้เลยครับ
ส่วนท่านใดไม่สะดวกใช้บัตรเครดิต หรือ Paypal สามารถสนับสนุนผมได้ผ่านทาง PromptPay โดยดู QR Code ได้จากโพสต์ที่พินเอาไว้ได้ที่ Page DevDose ครับ https://web.facebook.com/devdoseth
ขอบคุณครับ 🙏
Top comments (0)