微服务架构之Spring Boot(七十五)

2022-05-23 15:44:47 浏览数 (1)

53.9申请信息

应用程序信息公开了从 InfoContributor ApplicationContext 中定义的所有beans 收集的各种信息 。Spring Boot包含一些自动配置

的 InfoContributor beans,您可以自己编写。

53.9.1自动配置的InfoContributors

在适当的情况下,Spring Boot会自动配置以下 InfoContributor beans:

名称 描述

EnvironmentInfoContributor 在 info 键下显示 Environment 中的任意键。

GitInfoContributor 如果 git.properties 文件可用,则公开git信息。

BuildInfoContributor 如果 META-INF/build-info.properties 文件可用,则公开构建信息。

可以通过设置 management.info.defaults.enabled 属性来禁用它们。

53.9.2自定义应用程序信息

您可以通过设置 info.* Spring属性来自定义 info 端点公开的数据。info 键下的所有 Environment 属性都会自动显示。例如,您可以将以下

设置添加到 application.properties 文件中:

info.app.encoding=UTF-8

info.app.java.source=1.8

info.app.java.target=1.8

您可以在构建时扩展信息属性,而不是对这些值进行硬编码 。

假设您使用Maven,您可以按如下方式重写前面的示例:

info.app.encoding=@project.build.sourceEncoding@

info.app.java.source=@java.version@

info.app.java.target=@java.version@

53.9.3 Git提交信息

info 端点的另一个有用功能是它能够在构建项目时发布有关 git 源代码存储库状态的信息。如果 GitProperties bean可用,则会公

开 git.branch , git.commit.id 和 git.commit.time 属性。

如果类路径的根目录中有 git.properties 文件,则自动配置 GitProperties bean。有关更多详细信息,请参阅“ 生成git信

息 ”。

如果要显示完整的git信息(即 git.properties 的完整内容),请使用 management.info.git.mode 属性,如下所示:

management.info.git.mode=full

53.9.4构建信息

如果 BuildProperties bean可用, info 端点也可以发布有关您的构建的信息。如果类路径中有 META-INF/build-info.properties 文件,

则会发生这种情况。

Maven和Gradle插件都可以生成该文件。有关更多详细信息,请参阅“ 生成构建信息 ”。

53.9.5编写自定义InfoContributors

要提供自定义应用程序信息,您可以注册实现该 InfoContributor 接口的Spring beans 。

以下示例使用单个值提供 example 条目:

import java.util.Collections;

import org.springframework.boot.actuate.info.Info;

import org.springframework.boot.actuate.info.InfoContributor;

import org.springframework.stereotype.Component;

@Component

public class ExampleInfoContributor implements InfoContributor {

@Override

public void contribute(Info.Builder builder) {

builder.withDetail("example",

Collections.singletonMap("key", "value"));

}

}

如果到达 info 端点,您应该看到包含以下附加条目的响应:

{

"example": {

"key" : "value"

}

}

54.通过HTTP进行监控和管理

如果您正在开发Web应用程序,Spring Boot Actuator会自动配置所有已启用的端点以通过HTTP公开。默认约定是使用端点 id 作为URL路径,

前缀为 /actuator 。例如, health 暴露为 /actuator/health 。提示:Actuator本身支持Spring MVC,Spring WebFlux和Jersey。

54.1自定义管理端点路径

有时,自定义管理端点的前缀很有用。例如,您的应用程序可能已将 /actuator 用于其他目的。您可以使

用 management.endpoints.web.base-path 属性更改管理端点的前缀,如以下示例所示:

management.endpoints.web.base-path=/manage

前面的 application.properties 示例将端点从 /actuator/{id} 更改为 /manage/{id} (例如, /manage/info )。

除非已将管理端口配置为使用其他HTTP端口公开端点,否则 management.endpoints.web.base-path 相对

于 server.servlet.context-path 。如果配置了 management.server.port ,则 management.endpoints.web.base-path 相

对于 management.server.servlet.context-path 。

如果要将端点映射到其他路径,可以使用 management.endpoints.web.path-mapping 属性。

以下示例将 /actuator/health 重新映射为 /healthcheck :

application.properties。

management.endpoints.web.base-path=/

management.endpoints.web.path-mapping.health=healthcheck

54.2自定义Management Server端口

使用默认HTTP端口公开管理端点是基于云的部署的明智选择。但是,如果您的应用程序在您自己的数据中心内运行,您可能更喜欢使用不同的

HTTP端口公开端点。

您可以设置 management.server.port 属性以更改HTTP端口,如以下示例所示:

management.server.port=8081

0 人点赞