Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

[Golang] ทำการ export metric ต่าง ๆ ออกมาในรูปแบบของ Prometheus

$
0
0

จากที่ทำการแบ่งปัน
เรื่องการพัฒนาระบบงานด้วยแนวคิด Microservices ด้วย Java technology

มีคำถามว่า
ระบบงานที่พัฒนาด้วยภาษา Go นั้น
สามารถ export metric หรือค่าตัวเลขต่าง ๆ ของระบบงานที่พัฒนาได้หรือไม่
ทั้ง CPU/IO/Memory/Process 
รวมไปถึงการ custom metric ต่าง ๆ ของระบบงานอีก

โดยให้ออกมาอยู่ในรูปแบบของ Prometheus
เพื่อจะได้ง่ายต่อการจัดเก็บ
จากนั้นจึงเอามาแสดงผลในรูปแบบ graph ต่าง ๆ
รวมไปถึงการสร้าง rule และระบบ alert ต่าง ๆ ได้

ก็เลยบอกไปเลยว่าได้สิ

ที่สำคัญ Prometheus เตรียม client library ไว้ให้แล้วด้วย

มาดูตัวอย่างการใช้งานแบบง่าย ๆ

[gist id="b998e668de1f79707a957196d35e040f" file="demo.go"]

จากนั้นลอง run และเข้าไปที่ url=http://localhost:8009/metrics
จะได้ผลลัพธ์ดังนี้

[gist id="b998e668de1f79707a957196d35e040f" file="result.txt"]

ช่วยทำให้เราได้เห็นค่าตัวเลขต่าง ๆ ที่น่าสนใจ

ยกตัวอย่างเช่น

  • จำนวนของ Go_threads
  • จำนวนของ Go_routines
  • จำนวนของ memory ที่ระบบงานจองและใช้งาน
  • จำนวนการทำงานของ Garbage collector
  • จำนวนของ request ซึ่งแยกตาม response code ของ HTTP ให้อีก

และถ้าเรามีตัวเลขหรือค่าอะไรที่เกี่ยวกับระบบงาน
ก็สามารถสร้างขึ้นมาได้อีก
เพียงเท่านี้ก็น่าจะทำให้เราเข้าใจระบบงานที่พัฒนามากขึ้น

ปล. การรับส่งค่า metric ระหว่างระบบงานของเรากับ prometheus มีทั้งแบบ push และ pull ลองเลือกใช้งานกันดู


Viewing all articles
Browse latest Browse all 1997

Trending Articles