Javaコミュ@福岡 勉強会1910で「Micrometer入門」というタイトルで発表してきた #javaq
だいぶ前になりますが、Javaコミュ@福岡 勉強会1910で「Micrometer入門」というタイトルで発表してきました。
僕の発表資料はこちらです。
発表で使ったサンプルアプリはここに置きました。
https://github.com/matsumana/micrometer-example
Micrometerとは?
Javaでメトリクスを取るためのライブラリです。
現在、世の中には沢山のモニタリングサービス/ツールが存在しますが、アプリケーション側で依存ライブラリを切り替えるだけで様々なモニタリングサービス/ツールに対応する事が出来ます。
Micrometerのオフィシャルサイトで述べられているように、JavaのロギングライブラリのSLF4Jのようなイメージです。
Spring Boot Actuatorでもだいぶ前から採用されているので、既にお馴染みという感じがありますね。
MeterとTag
Micrometerでは、MeterとTagを使ってメトリクスを記録します。
- Meter (メトリクスを記録するもの)
- Counter
- 値が単純増加するメトリクス(例: ログ出力回数など)
- Gauge
- 値が上下するメトリクス(例: 現在処理中のリクエスト数など)
- Timer
- メソッドの処理時間など
- LongTaskTimer
- 時間がかかる処理の時間計測
- DistributionSummary
- イベントのサンプル分布(例: レイテンシ、HTTPのリクエスト/レスポンスサイズなど)
- など
- Counter
- Tag (メトリクスの付加情報)
- key-valueのペア
Micrometerの使い方
自分でMicrometerを使ってメトリクスを記録する
まずは、Micrometerソースリポジトリにあるsampleを見てみるのがいいと思います。
また、LINE社が開発しているArmeriaというMicroservice向けのRPCフレームワークでもMicrometerを使っているので参考になると思います。
例えば、以下がリクエストに関するメトリクス(リクエスト成功数/失敗数, レイテンシ, リクエストサイズ, レスポンスサイズ)を記録している箇所です。
Spring Bootアプリで使う
Spring Boot Actuatorと自分が使いたいモニタリングシステム用のライブラリを依存に追加すれば、Auto ConfigurationによってMicrometerが簡単に使えるようになります。
必須ライブラリ:
org.springframework.boot:spring-boot-starter-actuator
追加で必要な各種モニタリングシステム用のライブラリ:
io.micrometer:micrometer-registry-prometheus
*Prometheus用io.micrometer:micrometer-registry-datadog
*Datadog用io.micrometer:micrometer-registry-elastic
*Elasticsearch用- その他にも色々あります
詳しくは公式ドキュメントを参照してください。
具体的にどんなメトリクスが取れるようになるかは、以前まとめています。
また、実際にサービスをモニタリングする場面ではレイテンシもモニタリングすると思います。
以下の記事がとてもわかりやすいのでおすすめです。
以上です。
ご参加いただいた皆さん、ありがとうございました!