ใน Spring Boot 2.0.0.RELEASE นั้น
ได้เปลี่ยนรูปแบบของ Metric ของ service จาก Actuator ไปยัง Micrometer
ซึ่งแน่นอนว่า การใช้งานก็เปลี่ยนไปพอควร
ดังนั้นมาลองใช้งาน Micrometer แบบง่ายกัน
รวมไปถึงการใช้งานร่วมกับ Prometheus ซึ่งง่ายกว่าเดิมเยอะ

ปล. ผมเคยเขียนอธิบายการ monitoring service ที่พัฒนาด้วย Spring Boot 1.x ไว้
ซึ่งยังใช้งาน Actuator โดยในตอนนี้เรียกว่า Legacy ไปแล้วนะ

เหตุผลที่เปลี่ยนมาใช้ Micrometer ?

เป็นตัวหลางหรือ interface มาตรฐานที่ระบบ monitoring ต่าง ๆ สนับสนุน
ดังนั้นถ้าเราใช้งานตามที่ Micrometer กำหนดแล้ว
จะง่ายต่อการนำข้อมูลไปยังระบบ monitoring
ทำให้ไม่ต้องไปยึดติดกับเครื่องมือมากนัก
โดยที่ Micrometer นั้นจะสนับสนุน

  • Prometheus
  • Netflix Atlas
  • CloudWatch
  • Datadog
  • Graphite
  • Ganglia
  • JMX
  • Influx/Telegraf
  • New Relic
  • StatsD
  • SignalFx
  • Wavefront

ก่อนใช้งานต้องเพิ่ม dependency หรือ library เข้ามาใน project

ซึ่งยังคงใช้ actuator แต่ว่าความสามารถเดิม ๆ หายไปเยอะมาก ๆ
รวมทั้งเพิ่มการทำงานร่วมกับ prometheus
เพื่อทำการสร้าง metric ต่าง ๆ ในรูปแบบของ prometheus

ใน Micrometer นั้นก็มี metric ให้สร้างหลายชนิด
ซึ่งปกติที่ใช้ก็ประกอบไปด้วย

  • Dimension/Tag
  • Counter
  • Gauge
  • Timer
  • Long task timer
  • Distribution summary
  • Summary statistic
  • Quantile
  • Histogram
  • Binder

มาดูตัวอย่างการใช้งานง่าย ๆ ของ Counter กันนิดหน่อย

คำอธิบาย
การใช้งานจะต้องผ่าน class MeterRegistry เสมอ
จากนั้นทำการสร้าง counter metric ซึ่งเราสามารถระบุชื่อไปได้เลย
จากนั้นก็เพิ่มค่าไปเรื่อย ๆ สามารถกำหนดค่าได้ด้วย
ซึ่งใช้งานง่ายพอสมควร

แต่ถ้าไม่ต้องการเขียน code ในรูปแบบนี้
ก็สามารถใช้ AOP มาใช้ได้
ซึ่งทำไม่ต้องไปแก้ไข code เลยดังนี้

เพียงเท่านี้ก็สามารถสร้าง metric ของ service เราได้แบบง่าย ๆ
ดังนั้นลองใช้งานกันดูนะ

ขอให้สนุกกับการ coding นะ