客户端应用程序

1. 在应用列表中显示版本号

对于 Spring Boot 应用程序,显示版本号最简单的办法,就是使用 spring-boot-maven-plugin maven插件,然后配置 goal build-info,之后该插件就会生成 META-INF/build-info.properties 文件了。更多详情请查看 Spring Boot 参考指南

对于 非Spring Boot 应用的话,可以在注册的时候添加 versionbuild.version 参数,这样在应用列表中就会显示版本号了。

pom.xml
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

要想在gradle项目中生成构建信息的话,请在 build.gradle 文件中添加下面的代码:

build.gradle
springBoot {
	buildInfo()
}

2. JMX-Bean的管理

要想在admin页面中与JMX-beans进行交互,必须在应用中引入 Jolokia。 由于Jolokia是基于servlet开发的,所以不支持响应式应用。 如果你使用的是 spring-boot-admin-starter-client 这个依赖,那么它自动会为您引入,如果没有的话,则需要手动的将Jolokia添加到依赖中。 针对Spring Boot 2.2.0版本,如果您想通过JMX暴露Spring bean的话,可能需要设置 spring.jmx.enabled=true

pom.xml
<dependency>
    <groupId>org.jolokia</groupId>
    <artifactId>jolokia-core</artifactId>
</dependency>

3. 查看日志文件

默认情况下,无法通过actuator接口访问日志文件,因此默认Spring Boot Admin中是看不到日志文件的。 要想启用actuator的日志文件接口,需要设置 logging.file.pathlogging.file.name 来配置Spring Boot读写日志文件。

Spring Boot Admin会检测所有看起来像URL的东西,并将其呈现为超链接。

ANSI颜色转义语法也是支持的。 你可以自定义一个文件日志的表达式,因为Spring Boot默认情况下是不使用颜色的。

application.properties
logging.file.name=/var/log/sample-boot-application.log (1)
logging.pattern.file=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx (2)
1 定义日志文件的写入目录。启用日志文件的actuator接口。
2 文件日志使用自定义的ANSI颜色。

4. 显示实例的标签

您可以为每个实例添加一个 标签(Tags) 来提高其可读性,它们会显示在应用列表以及实例试图中。 默认情况下实例不会被添加任何标签,它取决与客户端有没有向metadata元数据中添加标签或是向其它info接口中指定标签。

application.properties
#使用metadata元数据
spring.boot.admin.client.instance.metadata.tags.environment=test

#使用info接口
info.tags.environment=test

5. SBA客户端

Spring Boot Admin客户端会注册在admin的服务端上。 这是通过定期向SBA服务端发送HTTP post请求来完成的,同时也会向服务端提供应用信息。

有一些可选的属性可以影响SBA客户端的注册方式。如果这些不满足您的需求,你也可以通过提供 ApplicationFactory 实现的方式手动拓展。
表格 1. Spring Boot Admin 客户端配置可选项
属性名 说明 默认值

spring.boot.admin.client.enabled

开启Spring Boot Admin 客户端。

true

spring.boot.admin.client.url

向哪些Spring Boot Admin服务端注册,可以传一个列表,URL中间以逗号分割。这个参数会自动触发。强制性 的。

spring.boot.admin.client.api-path

提供admin服务端的http注册路径。

"instances"

spring.boot.admin.client.username
spring.boot.admin.client.password

如果SBA服务端启用了HTTP Basic认证,则需要提供用户名和密码。

spring.boot.admin.client.period

重复注册的间隔(单位毫秒ms)。

10,000

spring.boot.admin.client.connect-timeout

注册链接的超时时间(单位毫秒ms)。

5,000

spring.boot.admin.client.read-timeout

注册时的读取超时时间(单位毫秒ms)。

5,000

spring.boot.admin.client.auto-registration

如果设置成true的话,在应用程序启动完成后,会自动执行注册定时任务。

true

spring.boot.admin.client.auto-deregistration

在上下文关闭后是否自动从Spring Boot Admin服务端注销。如果没有设置这个值的话,则会通过CloudPlatform的活动状态来判断。

null

spring.boot.admin.client.register-once

如果设置为true的话,客户端只会注册到一个admin服务端中(根据 spring.boot.admin.instance.url 中定义的顺序); 如果admin服务端挂掉了的话,则会自动注册到下一个admin服务端。 如果设置为false,那么会注册到所有配置的admin服务端中。

true

spring.boot.admin.client.instance.health-url

注册使用的健康检查url,如果URL不同也可以被覆盖(例如在使用Docker的时候)。在注册时必须时唯一的。

根据 management-url 和 endpoints.health.id 进行拼接。

spring.boot.admin.client.instance.management-base-url

根据 management-url 在注册时进行计算。这个路径在运行期间才会拼接到base url上。

通过 management.port 、 service-url 和 server.servlet-path 计算获得。

spring.boot.admin.client.instance.management-url

要注册的Management-url。如果URL不同也可以被覆盖(例如在使用Docker的时候)。

通过 management-base-url 和 management.context-path 计算获得。

spring.boot.admin.client.instance.service-base-url

Base url用于计算将要注册的service-url。这个路径在运行期间才会计算,并拼接到base url上。 在Cloudfoundry环境下,你可以通过 spring.boot.admin.client.instance.service-base-url=https://${vcap.application.uris[0]} 来进行切换。

通过 hostname 和 server.port 计算获得。

spring.boot.admin.client.instance.service-url

将要注册的 Service-url。如果URL不同也可以被覆盖(例如在使用Docker的时候)。

通过 service-base-url 和 server.context-path 计算获得。

spring.boot.admin.client.instance.service-path

将要注册的 Service-path。如果URL不同也可以被覆盖(例如以代码的方式设置了context-path)。

/

spring.boot.admin.client.instance.name

将要注册的实例名。

如果设置了 ${spring.application.name} 的话就使用这个,否则会使用 "spring-boot-application"

spring.boot.admin.client.instance.service-host-type

选择向服务端发送哪种host信息:
* IP: 使用 InetAddress.getHostAddress() 返回的IP
* HOST_NAME: 使用 InetAddress.getHostName() 返回的单个主机名
* CANONICAL_HOST_NAME: 使用 InetAddress.geCanonicalHostName() 返回的FQDN(Fully Qualified Domain Name:全限定域名:同时带有主机名和域名的名称。例如:主机名是bigserver,域名是mycompany.com,那么FQDN就是bigserver.mycompany.com)
如果在服务中设置了 server.address 或者是 management.address 属性,那么这个值会被覆盖掉。

CANONICAL_HOST_NAME

spring.boot.admin.client.instance.metadata.*

与该实例相关联的元数据键值对。

spring.boot.admin.client.instance.metadata.tags.*

与该实例相关联的标签键值对。

表格 2. 实例元数据可选项
Key Value 默认值

user.name
user.password

用于访问接口的权限凭证。