จากที่ทำการแบ่งปัน
เรื่องการพัฒนาระบบงานด้วยแนวคิด 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
จะได้ผลลัพธ์ดังนี้
ช่วยทำให้เราได้เห็นค่าตัวเลขต่าง ๆ ที่น่าสนใจ
ยกตัวอย่างเช่น
- จำนวนของ Go_threads
- จำนวนของ Go_routines
- จำนวนของ memory ที่ระบบงานจองและใช้งาน
- จำนวนการทำงานของ Garbage collector
- จำนวนของ request ซึ่งแยกตาม response code ของ HTTP ให้อีก
และถ้าเรามีตัวเลขหรือค่าอะไรที่เกี่ยวกับระบบงาน
ก็สามารถสร้างขึ้นมาได้อีก
เพียงเท่านี้ก็น่าจะทำให้เราเข้าใจระบบงานที่พัฒนามากขึ้น
ปล. การรับส่งค่า metric ระหว่างระบบงานของเรากับ prometheus มีทั้งแบบ push และ pull ลองเลือกใช้งานกันดู