Spring Boot のモニター

「 Instana 」の「 Spring Boot 」センサーを使用することで、 Spring Boot アプリケーションを監視できます。 「 Instana 」エージェントをインストールすると、「 Spring Boot 」センサーが自動的に展開およびインストールされます。 このトピックで説明されている手順に従って Spring Boot Actuatorを設定すると、 Instana のUIで Spring Boot アプリケーションに関連するメトリクスを確認できるようになります。

サポート情報

Spring Boot センサーが現在の環境と互換性があるかどうかを確認するには、以下のサポート情報セクションをご確認ください:

サポート対象のオペレーティング・システム

Spring Boot センサーの対応OSは、各ホストエージェントの要件と一致しています。これについては、各ホストエージェントの「対応 OS 」セクション(例: Linux )で確認できます。

対応バージョンとサポート方針

以下の表は、最新のサポート対象バージョンとサポート方針を示しています:

テクノロジー サポート・ポリシー 最新バージョン サポートされる最新バージョン
Spring Boot 45 日間 4.1.0 4.0.6

サポートポリシーに関する詳細については、 「センサーのサポート戦略」 を参照してください。

Spring Boot の監視設定

Spring Boot の監視を設定するには、以下の手順を実行してください:

手順 1: 「 Spring Boot 」アクチュエータの設定

Spring Boot アクチュエータを設定するには、ファイル pom.xml に以下の依存関係を追加してください:

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

Spring Boot アクチュエーターは、実行中の Spring Boot アプリケーションの運用エンドポイントを生成し、公開します。

ステップ 2: 「 Java Management Extensions 」を有効にする ( JMX )

Spring Boot、 2.2.x 以降では、次のプロパティを `.conf` ファイル application.properties に設定して、 JMX を有効にします

spring.jmx.enabled=true
 

JMX を有効にすると、 Spring Boot アプリケーションのデータやリソースがマネージド・ビーン(MBean)として公開されます。

ステップ 3: 「 Spring Boot 」管理 MBean を公開する

ファイル application.properties 内で以下の設定によりエンドポイントが無効化されている場合、センサーは Spring Boot アプリケーションからメトリクスを収集するためにMBeansに依存しているため、 Spring Boot 管理用MBeansを公開する必要があります:

management.endpoints.enabled-by-default=false
 

MBean を公開するには、ファイル application.properties 内で以下のエンドポイントを有効にしてください:

management.endpoint.info.enabled=true
management.endpoint.health.enabled=true
management.endpoint.metrics.enabled=true
management.endpoint.env.enabled=true
 

Instana Spring Bootorg.springframework.boot:type=Endpoint,name=Metrics管理MBeanからメトリクスを取得します。 セキュリティ保護されたアクチュエータエンドポイントについては、認証や認証情報の設定を行う必要はありません。

Spring Boot 3.x については、ファイル application.properties 内に以下のディレクティブが記述されていることを確認してください:

management.endpoints.jmx.exposure.include=env,health,info,metrics
 

ステップ 4: HTTP 経由でエンドポイントを公開する

Spring Boot 2以降では、 Spring Boot Actuatorが Micrometer の依存関係管理と自動設定を提供します。 Spring Boot のバージョンに応じて、 JVM ダッシュボードではさまざまな Micrometer のメトリクスが利用可能です。

注: エンドポイントには機密情報が含まれている可能性があるため、 HTTP 経由でエンドポイントを公開するタイミングについては慎重に検討する必要があります。 デフォルトでは、ヘルス・エンドポイントのみが公開されます。 詳細については、 「エンドポイントの公開」 を参照してください。

HTTP から特定のエンドポイントを除外するには、次のディレクティブを使用します:

management.endpoints.web.exposure.exclude=health,info
 

HTTP からすべてのエンドポイントを除外するには、次のディレクティブを使用します:

management.endpoints.web.exposure.exclude=*
 

ステップ 5: 環境変数の値をテキストで表示する

Instana のUIにアプリケーションの設定プロパティを表示するには、まずファイル application.properties にさらに変更を加える必要があります。 それ以外の場合、これらのプロパティーは、機密値が原因で ****** として表示されます。 詳細については、 「機密値のサニタイズ」 を参照してください。

値を常に平文で表示するには、 application.properties ファイルで以下の構成を使用します。

management.endpoint.env.show-values=ALWAYS
 

ステップ6: Spring Boot アプリの命名

Instana 以下のソースから Spring Boot インスタンスの名前を抽出します:

  • spring.application.name プロパティ:アプリケーションの設定でこのプロパティが定義されている場合、その値がアプリケーション名として使用されます。 Spring Boot 3 で、 Spring Boot アプリケーションの名前を指定するには、ファイル application.properties 内のプロパティ spring.application.name を次のように設定します

    spring.application.name=<Your_Application_Name>
     
  • build-info.properties ファイル:が定義されていない spring.application.name 場合、 Instana は Spring Bootbuild-info.properties アプリケーションの名前をファイルから取得します。 このファイルは、例えば次のようにして生成できます spring-boot-maven-plugin

    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
        <executable>true</executable>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>build-info</goal>
          </goals>
          <configuration>
            <additionalProperties>
              <name>${project.artifactId}</name>
              <version>${project.version}</version>
            </additionalProperties>
          </configuration>
        </execution>
      </executions>
    </plugin>
     

    Actuator との連携に関する詳細については、 Spring Boot の「 Maven 」プラグインのドキュメントを参照してください。

オプション:health-interval パラメータを設定する

デフォルトで、Instana は管理 MBean org.springframework.boot:type=Endpoint,name=Health を照会することにより、10 分ごとに Spring Boot アプリの正常性を照会します。

目的の health-interval パラメータを設定するには、秒単位で値を設定してください:

com.instana.plugin.springboot:
  health-interval: 30
 
注: ヘルスチェックの実装によっては、ヘルスチェックによって新たな下流の呼び出しが追加される場合があります。 ヘルス・チェックが失敗すると、根本原因を示す警告メッセージが表示されます。

オプション:ポーリングレートの設定

注:Instana、 Spring Boot センサー、および 1.1.49 以降のバージョンでは、 データ取り込み量を削減するためにポーリングレートを設定できるようになっています。 この機能は、セルフホスト型の Instana バックエンド311以降でサポートされています。

次の例に示すように、agent configuration.yaml ファイル poll_rate 内のパラメータを使用して、 Instana が Spring Boot からデータやメトリクスを収集するためにポーリングを行う頻度を設定できます

com.instana.plugin.springboot:
  poll_rate: 1 # values are in seconds. Default value is 1 second.

メトリックの表示

メトリックを表示するには、以下のステップを実行します。

  1. Instana のUIのサイドバーで、 「インフラストラクチャ」 を選択します。
  2. 特定のモニター対象ホストをクリックします。

収集されたすべてのメトリックとモニター対象プロセスを含むホスト・ダッシュボードを表示できます。

エンドポイントと HTTP セッション

Instana Spring Boot このセンサーは、エンドポイントおよび HTTP セッションから以下のメトリクスを収集します:

構成データ

次の表は、 Instana の Spring Boot センサーによって収集される設定データの一覧です:

構成 説明
名前 Spring Boot アプリケーションの名前。
アプリケーション・バージョン Spring Boot アプリケーションのビルド・バージョン。
SpringBoot バージョン Spring Boot フレームワークのバージョンです。
状況 Spring Boot アプリケーションのステータス(例:Up orなどDown)。
ポート 「 Spring Boot 」アプリケーションの HTTP 版。
HTTP セッション限度 Spring Boot アプリケーションの HTTP セッション数の上限。
アプリケーション構成 Spring Boot アプリケーション構成情報 (構成パスおよびプロパティーを含む)。

パフォーマンス・メトリック

次の表は、 Instana の Spring Boot センサーによって収集されるパフォーマンス指標の一覧です:

メトリック 説明 粒度
エンドポイント要求または応答の明細 各レスポンスステータスコード( 1xx、 2xx、 3xx、 4xx、または 5xx )に対する1秒あたりのリクエスト数 1 秒
HTTP セッション数 アクティブな HTTP セッション数 1 秒

データ・ソース

Instana Spring Boot センサーは、データソースから以下の監視データを収集します:

構成データ

次の表は、データソースから収集される設定データの一覧です:

名前 説明
プール名 プール名HikariCP 。
接続タイムアウト 接続タイムアウトHikariCP 。

パフォーマンス・メトリック

以下のパフォーマンス指標がデータソースから収集されます:

Java データベース接続( JDBC )データソース

次の表は、データソースから収集される JDBC のメトリクスの一覧です:

メトリック 表示名 説明 粒度
active アクティブ アクティブ接続数。 1 秒
idle アイドル アイドル接続の数。 1 秒
max 最大 最大接続数。 1 秒
min 最小 最小接続数。 1 秒
HikariCP データソース

次の表は、データソースから収集される HikariCP のメトリクスの一覧です:

メトリック 表示名 説明 粒度
acquire 買収 接続取得数。 1 秒
active アクティブ アクティブ接続数。 1 秒
creation 作成 接続作成の数。 1 秒
idle アイドル アイドル接続の数。 1 秒
max 最大 最大接続数。 1 秒
min 最小 最小接続数。 1 秒
pending 保留中のスレッド 接続を待機しているスレッドの数。 1 秒
timeout タイムアウト 接続タイムアウトの数。 1 秒
total 合計 接続の合計数。 1 秒
usage 使用法 プールに再度追加された接続の数。 1 秒

正常性シグニチャー

センサーごとに、ヘルス・シグネチャーのキュレートされた知識ベースが、着信メトリックに対して継続的に評価され、ユーザーの影響に依存する問題またはインシデントを発生させるために使用されます。

組み込みイベントは、エンティティのヘルスシグネチャの異常に基づいて課題やインシデントをトリガーし、 カスタムイベントは、選択されたエンティティの個々のメトリクスのしきい値に基づいて課題やインシデントをトリガーします。

Spring Boot センサーのビルド・イベントについて詳しくは、 組み込みイベントのリファレンスを参照してください。

トラブルシューティング

これらのトラブルシューティング項目を使用すると、 Spring Boot アプリケーションのモニターに関連した問題を解決するのに役立ちます。 Instana のUIにある Spring Boot ダッシュボードには、問題の種類と、何が問題だったのかについての簡単な説明が記載されたエラーメッセージが表示されます。

JMX が有効になっていない

監視対象の種類: springboot_jmx_not_enabled

JMX を有効にするには、 「 Spring Boot Actuator の設定」 を参照してください。

注: この spring.main.lazy-initialization プロパティが有効になっている場合、 Spring Boot のバージョンを 2.4.12 以降に更新する必要があります。