Spring Boot Actuator は、アプリケーションの監視と管理に役立つ実稼働対応の機能を提供する Spring Boot のサブプロジェクトです。これは、アプリケーションの健全性、メトリクス、環境についての洞察を得ることができるだけでなく、アプリケーションを動的に制御できるようにする一連の組み込みエンドポイントを提供します。
Spring Boot Actuator は、アプリケーションの監視と対話に使用できる、すぐに使用できるエンドポイントをいくつか提供します。これらのエンドポイントには、HTTP、JMX 経由、または Spring Boot Admin を使用してアクセスできます。
Spring Boot アプリケーションで Actuator を使用するには、pom.xml ファイルに Actuator の依存関係を追加する必要があります。
org.springframework.boot spring-boot-starter-actuator
Gradle を使用している場合は、build.gradle ファイルに以下を追加します:
implementation 'org.springframework.boot:spring-boot-starter-actuator'
デフォルトでは、少数のエンドポイントのみが有効になっています。 application.yml ファイルで追加のエンドポイントを有効にできます:
management: endpoints: web: exposure: include: "*" # This exposes all available endpoints endpoint: health: show-details: always # Show detailed health information
Actuator がセットアップされると、Actuator が提供するさまざまなエンドポイントにアクセスできるようになります。一般的に使用されるエンドポイントをいくつか示します:
/actuator/health エンドポイントは、アプリケーションの健全性に関する情報を提供します:
GET http://localhost:8080/actuator/health
応答例:
{ "status": "UP", "components": { "db": { "status": "UP", "details": { "database": "H2", "result": 1 } }, "diskSpace": { "status": "UP", "details": { "total": 499963174912, "free": 16989374464, "threshold": 10485760, "exists": true } } } }
/actuator/metrics エンドポイントは、アプリケーションに関連するさまざまなメトリクスを提供します:
GET http://localhost:8080/actuator/metrics
応答例:
{ "names": [ "jvm.memory.used", "jvm.gc.pause", "system.cpu.usage", "system.memory.usage", "http.server.requests" ] }
特定の指標の詳細を取得するには:
GET http://localhost:8080/actuator/metrics/jvm.memory.used
応答例:
{ "name": "jvm.memory.used", "description": "The amount of used memory", "baseUnit": "bytes", "measurements": [ { "statistic": "VALUE", "value": 5.1234567E7 } ], "availableTags": [ { "tag": "area", "values": [ "heap", "nonheap" ] }, { "tag": "id", "values": [ "PS Eden Space", "PS Survivor Space", "PS Old Gen", "Metaspace", "Compressed Class Space" ] } ] }
/actuator/env エンドポイントは、環境プロパティに関する情報を提供します:
GET http://localhost:8080/actuator/env
応答例:
{ "activeProfiles": [], "propertySources": [ { "name": "systemProperties", "properties": { "java.runtime.name": { "value": "Java(TM) SE Runtime Environment" }, "java.vm.version": { "value": "25.181-b13" } } }, { "name": "systemEnvironment", "properties": { "PATH": { "value": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }, "HOME": { "value": "/root" } } } ] }
/actuator/info エンドポイントは、アプリケーションに関する情報を提供します:
GET http://localhost:8080/actuator/info
情報をカスタマイズするには、application.yml:
にプロパティを追加します。
info: app: name: My Spring Boot Application description: This is a sample Spring Boot application version: 1.0.0
デフォルトでは、すべての Actuator エンドポイントは認証なしでアクセスできます。これらのエンドポイントを保護するには、Spring Security を使用できます。 Spring Security の依存関係を pom.xml:
に追加します。
org.springframework.boot spring-boot-starter-security
application.yml を更新してアクセスを制限します:
management: endpoints: web: exposure: include: "*" # Expose all endpoints endpoint: health: show-details: always # Show detailed health information spring: security: user: name: admin # Default username password: admin # Default password # Restrict actuator endpoints to authenticated users management: endpoints: web: exposure: include: "*" endpoint: health: show-details: always security: enabled: true roles: ACTUATOR
HTTP セキュリティを構成するセキュリティ構成クラスを作成します:
import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/actuator/**").hasRole("ACTUATOR") .anyRequest().authenticated() .and() .httpBasic(); } }
この構成では、ACTUATOR ロールを持つ認証されたユーザーのみが Actuator エンドポイントにアクセスできます。
カスタム Actuator エンドポイントを作成して、アプリケーションに固有の追加情報や機能を公開できます。カスタム エンドポイントの作成例は次のとおりです:
import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.stereotype.Component; @Endpoint(id = "custom") @Component public class CustomEndpoint { @ReadOperation public String customEndpoint() { return "Custom Actuator Endpoint"; } }
カスタム エンドポイントにアクセスします:
GET http://localhost:8080/actuator/custom
Spring Boot Actuator は、アプリケーションの監視と管理に役立つ堅牢なツール セットを提供します。組み込みのエンドポイントとカスタム エンドポイントを作成する機能を活用することで、アプリケーションのパフォーマンスと状態に関する貴重な洞察を得ることができます。これらのエンドポイントを Spring Security で保護して、承認されたユーザーのみがアクセスできるようにすると、管理と監視が簡単な実稼働対応のアプリケーションが手に入ります。
Actuator は Spring Boot アプリケーションの重要な部分であり、アプリケーションの実行環境の状況を常に把握し、問題が発生したときに迅速に対応できるようにします。今すぐ Spring Boot Actuator の使用を開始して、アプリケーションの可観測性と運用機能を強化してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3