Spring Boot Actuator は、Spring Boot アプリケーションの監視と管理に使用されるサブプロジェクトです。アプリケーションのステータス、動作ステータス、動作インジケーターを表示するために使用できる一連の組み込みエンドポイント (エンドポイント) を提供します。アクチュエータ エンドポイントは、HTTP、JMX、またはその他の形式で外部システムに公開できるため、運用および保守担当者がアプリケーションを監視、診断、管理することが容易になります。
Actuator エンドポイントは主に次の機能を実装するために使用されます:
Spring Boot Actuator は、一連のアクチュエーター エンドポイントを提供します。デフォルトでは組み込みエンドポイントがあり、開発環境では直接アクセスできますが、運用環境では、エンドポイントの権限制御と公開ポリシーを構成する必要がある場合があります。アクチュエーター エンドポイントは、application.properties または application.yml ファイルを通じて構成できます。たとえば、
management.endpoints.web.exposure.include を構成することで、どのエンドポイントを外部アクセスに公開するかを制御したり、management.endpoints.web.base-path を通じてエンドポイントの URL パスを変更したりできます。
Spring Boot Actuator は、アプリケーションのさまざまな側面を表示および管理するための多くの組み込みエンドポイントを提供します。以下は、一般的に使用されるエンドポイントの詳細です。
このエンドポイントは、アプリケーションの正常性状態を表示するために使用されます。データベース接続、キャッシュ、メッセージキューなどのさまざまなコンポーネントのステータスをチェックします。返されるステータスには、UP(正常)、DOWN(異常)、OUT_OF_SERVICE(メンテナンス中)などが含まれます。
このエンドポイントは、バージョン番号、ビルド時間など、アプリケーションの基本情報を表示するために使用されます。この情報は通常、アプリケーションの構成ファイルまたはビルド システムから取得されます。
このエンドポイントは、アプリケーションのメトリック データを表示するために使用されます。メモリ使用量、GC、スレッドステータスなどに関するデータを収集します。特定のメトリクスの詳細は、パラメータを追加することで表示できます。例:
/actuator/metrics/jvm.memory.used。
このエンドポイントは、すべてのメトリクスを表示するために使用されます。春の豆。 Bean の名前、タイプ、スコープ、所属する ApplicationContext などの情報が表示されます。
このエンドポイントは、環境変数、システム プロパティ、構成ファイル内のプロパティなど、アプリケーションの環境情報を表示するために使用されます。 。 /actuator/env/server.port などのパラメータを追加すると、特定のプロパティの値を表示できます。
このエンドポイントは、アプリケーションのログの表示と管理に使用されます。現在のアプリケーション内のすべてのロガーの名前とログ レベルが表示されます。 POST リクエストを送信することで、ロガーのログ レベルを動的に変更することもできます。
このエンドポイントは、アプリケーションをシャットダウンするために使用されます。有効にするには、
management.endpoint.shutdown.enabled を true に設定する必要があります。運用環境では、通常、悪用を防ぐためにこのエンドポイントのアクセス許可を制御する必要があります。
上記の一般的なエンドポイントに加えて、Spring Boot Actuator は次のような他のエンドポイントも提供します。 在实际项目中,我们可能需要对 Spring Boot Actuator 的端点进行一些定制,以满足特定的需求。本节将介绍如何对端点进行配置和定制。 访问端点可能涉及敏感信息,我们需要对端点进行权限控制。可以通过集成 Spring Security 或自定义拦截器实现访问权限控制。例如,仅允许具有 ADMIN 角色的用户访问 /actuator/shutdown 端点。 可以通过management.endpoints.web.exposure.include 和 management.endpoints.web.exposure.exclude 配置项来控制哪些端点应该被暴露。默认情况下,仅暴露 /actuator/health 和 /actuator/info 端点。例如,暴露所有端点: 或者仅暴露某些特定端点: 默认情况下,所有端点的路径都是以 /actuator 开头的。我们可以通过 默认情况下,某些端点的响应内容可能不包含我们关心的所有信息。可以通过实现自定义的 EndpointFilter 来定制端点的响应内容。例如,可以为 /actuator/health 端点添加自定义的健康指标。或者通过继承并重写原有端点的方法来实现定制。 通过这些定制方法,我们可以使 Spring Boot Actuator 更好地适应实际项目需求。 在某些情况下,内置的端点无法满足我们的需求,因此我们需要创建自定义端点。本节将介绍自定义端点的实现方式、应用场景举例以及如何注册和配置自定义端点。 要创建自定义端点,需要实现org.springframework.boot.actuate.endpoint.web.annotation.RestControllerEndpoint 接口或 org.springframework.boot.actuate.endpoint.annotation.Endpoint 接口。其中,RestControllerEndpoint 接口允许我们创建基于 Web 的端点,而 Endpoint 接口则适用于其他类型的端点。 创建自定义端点后,需要将其注册到 Spring Boot Actuator。我们可以通过将自定义端点作为 Bean 注册到 Spring 上下文来实现。例如: 在上面的代码中,我们首先使用@Endpoint注解来指定端点的ID(即cache-status)。然后,我们定义了一个getCacheStatus()方法,使用@ReadOperation注解来表示这是一个读操作。此方法应返回一个表示缓存状态的对象(例如,CacheStatus类)。 接下来,我们需要定义CacheStatus类: 接下来,我们需要为自定义端点配置访问权限、暴露策略等。这可以通过在 application.properties 文件中添加相关配置来实现。例如: 这将使得我们的自定义端点 /actuator/cache-status 能够被访问。 在本节中,我们将介绍如何利用Spring Boot Actuator端点数据进行监控与可视化,从而更好地了解应用程序的运行状况。 Java Management Extensions(JMX)是Java平台的一种技术,允许对Java应用程序进行管理和监控。Spring Boot Actuator默认支持将端点数据暴露到JMX。要使用JMX监控端点,请确保在应用程序的application.properties或application.yml文件中启用了JMX: 然后,您可以使用JMX客户端(如Java Mission Control、VisualVM等)连接到应用程序的JMX端口,查看和操作暴露的端点数据。 Prometheus是一个流行的开源监控系统,与Grafana这个数据可视化工具结合使用,可以为Spring Boot Actuator端点数据提供强大的可视化监控功能。 首先,需要在Spring Boot应用程序中集成Prometheus。添加相应的依赖并配置application.properties或application.yml文件,以启用Prometheus端点: 接下来,需要配置Prometheus来抓取Spring Boot应用程序的数据。在Prometheus的配置文件中(通常是prometheus.yml),添加以下内容: 最后,在Grafana中添加Prometheus数据源,并创建仪表板来展示和分析Spring Boot Actuator端点的数据。如下图所示: Spring Boot Actuator还可以与其他监控工具集成,例如Datadog、InfluxDB、New Relic等。要集成这些工具,通常需要在应用程序中添加相应的依赖并进行一些配置。具体的集成步骤和配置方式请参考官方文档或相关教程。 在本文中,我们详细介绍了Spring Boot Actuator端点的相关内容,下面对全文进行概括总结。 随着微服务和容器化技术的发展,对于应用程序的监控和管理需求将越来越复杂。Spring Boot Actuator的端点功能将继续完善,为开发者提供更加强大的监控工具。同时,我们期待更多的第三方监控工具与Actuator集成,帮助开发者更好地管理和优化其应用程序。 以上がSpring Boot アクチュエーター エンドポイントが明らかに: アプリケーションを簡単に監視の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。三、端点配置与定制
3.1 控制端点访问权限
3.2 端点暴露策略
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.include=health,info,metrics,env
3.3 修改端点的 URL 路径
management.endpoints.web.base-path 配置项修改这个前缀。例如,将其更改为 /admin:management.endpoints.web.base-path=/admin
3.4 端点响应内容定制
四、创建自定义端点
4.1 自定义端点的实现方式
4.2 注册和配置自定义端点
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;
@Component
@Endpoint(id = "cache-status")
public class CacheStatusEndpoint {
@ReadOperation
public CacheStatus getCacheStatus() {
// 在这里实现获取缓存状态的逻辑
// 例如,从缓存管理器中获取相关信息
CacheStatus cacheStatus = new CacheStatus();
cacheStatus.setCacheSize(100);
cacheStatus.setHitCount(200);
cacheStatus.setMissCount(50);
return cacheStatus;
}
}
public class CacheStatus {
private int cacheSize;
private int hitCount;
private int missCount;
// 省略 getter 和 setter 方法
}
management.endpoints.web.exposure.include=health,info,cache-status
五、端点数据监控与可视化
5.1 使用JMX监控端点
management.endpoints.jmx.exposure.include=*
5.2 使用Prometheus和Grafana进行可视化监控
management.endpoints.web.exposure.include=*
management.metrics.export.prometheus.enabled=true
scrape_configs:
- job_name: 'spring-boot-actuator'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['localhost:8080'] # 将此处替换为Spring Boot应用程序的实际地址
5.3 集成其他监控工具
六、总结
6.1 Spring Boot Actuator端点的优势
6.2 注意事项和最佳实践
6.3 对未来发展的展望