Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Micrometerで取得したデータをKibanaで可視化してみました

こんにちは、oogiです。

この記事はElastic Stack (Elasticsearch) Advent Calendar 2019の8日目の記事になります。

はじめに

Spring Bootアプリケーションの監視にMicrometerを使うことは多いと思います。
収集したデータはレジストリの切り替えによりPrometheusやElasticsearchなど保存先を選んで利用することができます。

で、収集したら当然可視化してみたいわけですが、残念ながらMicrometerで収集したデータをKibanaで可視化するためのダッシュボードが存在していないため、結局のところPrometeus&Grafanaが選ばれることが多いです。

Elastic Stackを活用しているAcroquestとしてはせっかくElasticsearchにも保存できるのにこれはもったいない…なら、うちで作るしかない!
ということでMicrometer用のKibanaダッシュボードを作ってみました。

Micrometer用Kibanaダッシュボード

早速ですが、作ったダッシュボードがこちらです。

Spring Boot Statistics

f:id:acro-engineer:20191203101247g:plain

Spring Boot Application

f:id:acro-engineer:20191203102105g:plain

作成にあたってはGrafanaの画面を参考にし、同様に以下の情報が見えるようにしました。

Spring Boot Statistics
  • 起動時刻、CPU使用率
  • メモリ使用量
  • GC
  • DBコネクション
  • HTTPリクエス
  • Tomcatのメトリクス
  • ログ出力
Spring Boot Application
  • リクエストおよびログ出力
  • URL別のリクエスト数およびレスポンスタイム
  • 別サービスへのHTTPアクセス

それぞれホスト名やアプリケーション名でフィルタできます。

今回作ったKibanaのダッシュボードを、利用したい環境でインポートすれば使えるように以下で公開していますので、ElasticsearchでMicrometerのデータを可視化してみたい方はお試しください。
Micrometer Kibana Dashboard

Elastic APM

さて、ここまでMicrometerで収集したデータをKibana上で可視化するダッシュボードを紹介しましたが、Elastic Stackを用いたアプリケーション監視と言えばElastic APMがあります。

Elastic APMはその名の通りElastic社が出しているAPMで、OSSで利用できます。
Javaを始めとするさまざまな言語に対応したAgentが存在し、Java Agentの場合は適用する際にソースコードの変更を必要としません。

また、RUMというフロントエンド向けのAgentも提供されており、Angularインテグレーションを使うことでフロントエンドの監視もできます。
しかもバックエンド側のエージェントとトレースIDを共有することができ、フロントエンドとバックエンドの分散トレーシングが可能です。

さらにElastic APM 7.4からはJavaのLogging libraryが提供されています。
これを既存のログ設定に追加することでAPMのAgentが設定するトレースIDがログにも連携され、APMとLogs UIとの連携もできるようになります。

これらについても試してみたかったので、今回はMicrometer用ダッシュボードに加えてElastic APMも同時に試してみることのできるデモ環境をSpring Petclinicベースで作成してみました。
Micrometer & Elastic APM Demo

REST APIに対するMicrometerでの監視に加えて、上記のフロントエンドとバックエンドの分散トレーシングやLogsとの連携も見ることができます。

f:id:acro-engineer:20191203102759p:plain

f:id:acro-engineer:20191203102826p:plain

ぜひMicrometerとElastic APMによる監視を試してみてください。

おわりに

今回はMicrometerで収集したデータをKibanaで可視化するダッシュボードと、そのMicrometer用ダッシュボードおよびElastic APMを利用したアプリケーション監視のサンプルを紹介しました。

最近はJavaよりも新しい言語がいろいろと出てきていますが、Javaにはこのように言語自体の機能だけでなく周辺ツールを含めた開発・運用環境が充実しているという特長があります。
その点を考慮すれば、開発環境から運用まで考慮したシステム開発においてJavaを選択するというのは十分なメリットがあるのではないかと思います。


9日目はbob_nomuさんです。お楽しみに。

Acroquest Technologyでは、キャリア採用を行っています。

  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

Kaggle Masterと働きたい尖ったエンジニアWanted! - Acroquest Technology株式会社のエンジニアの求人 - Wantedlywww.wantedly.com