DEV Community

Weerasak Chongnguluam
Weerasak Chongnguluam

Posted on • Updated on

Data Model ของ Prometheus

มาต่อกันที่ 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
Enter fullscreen mode Exit fullscreen mode

ตัวอย่างเช่น ถ้าเรามี 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
Enter fullscreen mode Exit fullscreen mode

นี่ก็คือ Data model กับวิธีการเขียน metric ของ Prometheus ครั้งต่อไปมาดูว่ามี Metric Type แบบไหนกันบ้างให้ใช้งานสำหรับ Prometheus

ขอฝาก Buy Me a Coffee

สำหรับท่านใดที่อ่านแล้วชอบโพสต์ต่างๆของผมที่นี่ ต้องการสนับสนุนค่ากาแฟเล็กๆน้อยๆ สามารถสนับสนุนผมได้ผ่านทาง Buy Me a Coffee คลิ๊กที่รูปด้านล่างนี้ได้เลยครับ

Buy Me A Coffee

ส่วนท่านใดไม่สะดวกใช้บัตรเครดิต หรือ Paypal สามารถสนับสนุนผมได้ผ่านทาง PromptPay โดยดู QR Code ได้จากโพสต์ที่พินเอาไว้ได้ที่ Page DevDose ครับ https://web.facebook.com/devdoseth

ขอบคุณครับ 🙏

Discussion (0)