blog

Spring Boot 2.X 実践編 - アクチュエータ監視ツール

開発の効率を向上させるためのフレームワークとしてSpring Bootは、そのようなSpring Bootアクチュエータ監視ツールなど、多くの追加機能と統合され、本番環境を監視し、管理するためのツール...

Aug 15, 2020 · 4 min. read
シェア

ソースコードリポジトリ: github.com/learn-spring-boot-2

開発の効率を向上させるためのフレームワークとしてSpringBootは、そのようなSpringBootアクチュエータ監視ツールなど、多くの追加機能と統合され、本番環境の監視および管理ツールとしてすることができます。開発者は、HTTPまたはJMXの方法を使用することができ、監査、操作やその他の指標の状態の本番環境を収集します。

Spring Bootアクチュエータ入門

// Gradle  
implementation 'org.springframework.boot:spring-boot-starter-actuator'

メイブン

<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
</dependencies>

Spring Bootアクチュエータ、アクチュエータエンドポイント

アクチュエータのエンドポイントを使用すると、RESTful API インターフェイスを介してアプリケーションを監視し、対話することができます。ビルトインエンドポイントはアプリケーションのステータスに関する基本的な情報を提供し、カスタムエンドポイントは実行中に特定のメトリックの監視をカスタマイズすることを可能にします。

各エンドポイントはHTTPリモートアクセスを許可するように設定することができ、使用可能に設定されると、エンドポイントはURLにマッピングされます。

デフォルトでは、エンドポイントは/actuator/{Id}にアクセスするためにGETを使用し、組み込みエンドポイントのIdと説明は以下のとおりです:

auditevents現在のアプリケーションの監査イベント情報
beansアプリケーション内のすべてのSpring Beanとその関係を表示します。
caches利用可能なキャッシュ情報 cacheManagers
conditions発効条件の自動設定、発効の有無、発効しない理由
configpropsすべての設定プロパティを表示
envすべての環境プロパティを取得
healthアプリケーションステータス情報の表示
httptraceHTTPリクエストトレース情報の表示
info任意のアプリケーション情報を表示
loggersアプリケーションでのロガーの設定の表示および変更
metrics現在のアプリケーションの「メトリクス」情報を表示します。
mappingsすべてのパスURL、つまり@RequestMappingでアノテーションされたURLを表示します。
scheduledtasksアプリケーションのスケジュールされたタスクを表示
sessionsSpring Sessionからユーザーセッションの取得と削除を可能にします。
shutdownアプリケーションを正しく終了させる方法
スレッドダンプスレッドダンプの実行

Spring Bootアクチュエータ

application.propertiesファイルの一般的なエンドポイント設定を以下に示します:

# 利用可能なすべての組み込みエンドポイントを公開する
management.endpoints.web.exposure.include=*
# リモートシャットダウンアプリケーションを実行する
management.endpoint.shutdown.enabled=true
# 利用可能な組み込みエンドポイントの一部を、カンマ区切りでエンドポイントIDとともに公開する
# management.endpoints.web.exposure.include=info,health,beans,env
# エンドポイントは公開されず、エンドポイントIDはカンマで区切られる。
# management.endpoints.web.exposure.exclude=info,health,beans,env
# ベースパス /actuator/{Id}
# management.endpoints.web.base-path=/actuator
# 許可されるHTTPリクエストメソッド
# management.endpoints.web.cors.allowed-methods=GET,POST
# クロスドメインを許可する
# management.endpoints.web.cors.allowed-origins=https://.com

組み込みエンドポイントの使用

ビルトインエンドポイントの使い方は比較的簡単で、例えばプロジェクトを実行して/actuator/{Id}にアクセスするだけで、全てのSpring Beansが表示されます:

アクセスすると、以下のようなリターンスタイルを見ることができます。

に POST すると、アプリケーションがシャットダウンします。

{
 "message": "Shutting down, bye..."
}

Spring Bootアクチュエータ

新規 MyEndpoint.java

@Configuration
// Endpoint エンドポイントIDを指定する
@Endpoint(id = "my-endpoint")
public class MyEndpoint {
 @ReadOperation
 public Map<String, Object> endpoint() {
 Map<String, Object> map = new HashMap<>(2);
 // 監視したい情報をマップに書き込み、それを
 map.put("status", "成功");
 map.put("message", "これはカスタムエンドポイントである");
 return map;
 }
}

management.endpoints.web.exposure.include=*が設定されていない場合は、以下のようにカスタム・エンドポイントを有効にしてください:

# カスタムエンドポイントを有効にするには、以下の設定にmy-endpointを追加する。
management.endpoints.web.exposure.include=my-endpoint

: SpringBootアクチュエータの公式ドキュメントとAPIの説明

Read next