Watchで可視化する仕事でMicrometer使う機会が出来たので触ってみました。Micrometerとは?Micrometerとは、Pivotal社が作っているJVMベースのアプリケーションのためのメトリクスライブラリです。メトリクスの収集とモニタリングシステムへの通知を行います。メトリクスの収集(micrometer-core)とモニタリングシステムへの通知(micrometer-registry-xxx)が切り離されているので、モニタリングシステムに依存しません。Micrometerを使う上で押さえておくべきクラスMeterメトリクスの集合を表すクラス。収集方法ごとにクラスがあります。使うCounter、Gauge、Timerについては少し詳しく書きます。TimeGauge)Counter固定値が増えていくような計測に使う。Gauge現在の値の計測に使う。実行中のスレッド数を計測するときなど。Timerイベントのレイテンシや頻度の計測に使う。指定期間内の合計時間やイベント数を計測するときなど。MeterRegistryMeterを管理するクラス。モニタリングシステムごとに実装があります。MeterBinderメトリクスを収集する方法を登録するクラス。収集対象ごとにクラスがあります。ネーミングルールMicrometerのメトリック名は小文字でかつドットつなぎでつけます。(例:jvm.memory.used)モニタリングシステムに送る際にMicrometer側でそれぞれのモニタリングシステムのネーミングルールに変換して送ります。Boot2.0からメトリクスAPIを提供しなくなりました。代わりにMicrometerを使うようになりました。Actuatorを依存関係に追加するだけでMicrometerが使えるようになります。1.5.xではMicrometerを依存関係に追加すれば使えます。デフォルトで使えるモニタリングシステムRuntime時にこれらの全モニタリングシステムの設定をAutoConfigurationで設定します。叩くと利用可能なメータを確認することができます。Watchに送る今回の技術スタックはこんな感じです。デフォルトで使える全モニタリングシステムを無効にします。Watchを使うための設定をAutoConfigurationで設定してもらいます。メトリクスの収集間隔を1秒にします。spring-cloud-awsを使っているアプリケーションをローカルで起動するための設定です。spring-cloud-awsは、S3やCloudFormationなど様々なサービスと連携します。AWS環境でアプリケーションが起動していない場合、Exceptionを投げれられてアプリケーションが起動しません。CloudFormationとの連携を無効にする。リージョンに指定しています。Beanstalkを使っているので同様の環境にデプロイします。デフォルトで55個のメトリクスが収集されます。ように書くことで不要なメトリクスを収集しないようにできます。(xxは、メトリクス名のプレフィックスでjvmやtomcatなどがあります)今回は、ヒープの使用量のメトリクスを収集する独自Metricsクラスを実装します。}}特に難しいことはしていないです。つけて、AWS環境のときのみBean登録します。EC2のメタデータからインスタンスIDを取得できたらAWS環境とみなしているようです。Watchで確認すると、メトリクスが送られていることが確認できます。GitHubにおいてあります。