Spring Boot Actuator でサーバの状態を確認する

こんにちは、鈴木です。

Spring Boot の続きです。Spring Boot Actuator を使うと、システムの状態やメトリクスを確認することができます。

 

Spring Boot Actuator を導入する

導入方法は pom.xml に追記するだけです。

 

追加されるエンドポイント

Spring Boot Actuator を導入すると、システムの状態を確認するためのエンドポイントが追加されます。

追加されるエンドポイントをいくつかご紹介します。

  • http://localhost:8080/autoconfig
    自動設定 (auto-configuration) の候補とそれらが自動設定された/されなかった理由。
  • http://localhost:8080/beans
    Spring コンテナに登録されている Bean の一覧。
  • http://localhost:8080/dump
    スレッドダンプ。
  • http://localhost:8080/env
    ConfigurableEnvironment からのプロパティ一覧。
  • http://localhost:8080/health
    ヘルスチェック用の情報。デフォルトでは常に "ok" を返すので、運用で使用する場合は要カスタマイズ。
  • http://localhost:8080/mappings
    @RequestMapping のマッピング情報。
  • http://localhost:8080/shutdown
    シャットダウン。デフォルトでは無効化されている。
  • etc...

上記を含めて、追加されるエンドポイントの一覧は「32. Endpoints」に書かれていますので、詳しくはそちらをご覧ください。

 

エンドポイントの有効化/無効化

エンドポイントは個別に有効化/無効化することができます。

例としてデフォルトでは無効化されているシャットダウン用のエンドポイントを有効化してみます。

手っ取り早くやるには、起動時のオプションで以下のように指定する方法です。

起動時のオプション以外にも、application.properties で指定する方法もあります。

シャットダウン用のエンドポイントは POST でのリクエストしか受け付けません。

Linux をご利用の場合は curl コマンドで以下のようにアクセスすると、シャットダウンすることができます。

 

独自のヘルスチェックを実装する

デフォルトのヘルスチェックは常に "ok" を返すだけなので、独自のヘルスチェックを実装してみましょう。

独自のヘルスチェックを作成するには、以下のように HealthIndicator<String> を実装したクラスを作成するだけです。

health() メソッドで独自のヘルスチェックを行い、結果を文字列で返します。

 

パスやポートなどを変更する

/env や /dump などにアクセスするだけで様々な情報を確認できて便利ですが、これらの情報は一般のユーザには見せたくない情報がほとんどだと思います。そこで、パスやポートなどを変更してアクセス制限しやすいようにすると良いでしょう。

設定のやり方は前回もご紹介しましたが、src/main/resources/ 以下に application.properties または application.yml を作成し、必要な項目を指定するだけです。src/main/resources/application.properties を作成したとすると、以下のように設定します。

 

まとめ

最初は「ちょっとヘルスチェックとかできるようになるだけ」と思っていましたが、Spring Boot Actuator は思った以上の機能がありました。今回は紹介しませんでしたが、HTTP 以外にも JMX や SSH などにも対応しているようです。Spring のサイトにも「production-ready な機能」と書かれていることからも、本番運用で使うことを念頭に作られているようです。

 

Comments are closed, but you can leave a trackback: Trackback URL.