Spring Boot Admin服务端
表格3:Spring Boot Admin服务端配置
属性 | 说明 | 默认值 |
---|---|---|
spring.boot.admin.context-path | 指定静态资源和API的路径前缀。相对于Dispatcher-Servlet | |
spring.boot.admin.monitor.period | 更新过期信息相关状态的间隔时间(毫秒) | 10.000 |
spring.boot.admin.monitor.status-lifetime | 应用程序状态的生命周期以ms为单位。 在生命周期到期之前,不能请求/health-endpoint。 | 10.000 |
spring.boot.admin.routes.endpoints | 通过spring boot admin zuul代理可以获得的端点。 如果您使用其他端点编写UI模块,则需要添加它们。 | "env, metrics, trace, dump, jolokia, info, configprops, trace, activiti, logfile, refresh, flyway, liquibase, loggers" |
4.1 Spring Cloud Discovery
Spring Boot Admin服务端也可以使用Discovery作为服务发现,这样就可以不需要添加spring-boot-admin-starter-client相关依赖了。你只需要添加DiscoveryClient到你的admin依赖中,其它都会自动完成。
4.1.1 ServiceInstanceConverter
表格4:Discovery配置
属性 | 说明 | 默认值 |
---|---|---|
spring.boot.admin.discovery.enabled | admin服务中开启DiscoveryClient支持 | true |
spring.boot.admin.discovery.converter.management-context-path | 当由DefaultServiceInstanceConverter转换管理网址时,将附加到已发现服务的service-url。 | |
spring.boot.admin.discovery.converter.health-endpoint-path | 当HealthService的URL由DefaultServiceInstanceConverter转换时,将被附加到发现的服务的management-url中。 | "health" |
spring.boot.admin.discovery.ignored-services | 当使用发现并且未注册为应用程序时,此服务将被忽略。支持简单的表达式,如:"foo*", "bar", "foo*bar" | |
spring.boot.admin.discovery.services | 使用发现并注册为应用程序时将包括此服务。支持简单的表达式,如:"foo*", "bar", "foo*bar" | "*" |
表格5:实例元数据选项
属性 | 说明 | 默认值 |
---|---|---|
user.name user.pqssword | 访问端点的凭证 | |
management.port | 该端口在服务URL中被替换,并将用于访问actuator端点。 | |
management.context-path | 该路径附加到服务URL,并将用于访问actuator端点。 | ${spring.boot.admin.discovery.converter.mangement-context-path} |
health.path | 该路径附加到服务URL,并将用于健康检查。通过EurekaServiceInstanceConverter忽略。 | ${spring.boot.admin.discovery.converter.health-endpoint} |
4.2 集群
Spring Boot Admin Server通过Hazelcast支持集群复制。当存在HazelcastConfig或HazelcastInstance-Bean时,它会自动启用。你还可以将Hazelcast实例配置持久化。 还可以看一下对于Hazelcast的Spring Boot的支持。
- 添加Hazelcast到依赖中:
pom.xml
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
</dependency>
- 配置HazelcastConfig:
@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class SpringBootAdminApplication {
@Bean
public Config hazelcastConfig() {
return new Config().setProperty("hazelcast.jmx", "true")
.addMapConfig(new MapConfig("spring-boot-admin-application-store").setBackupCount(1)
.setEvictionPolicy(EvictionPolicy.NONE))
.addListConfig(new ListConfig("spring-boot-admin-event-store").setBackupCount(1)
.setMaxSize(1000));
}
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApplication.class, args);
}
}
表格6:Hazelcast配置
属性 | 说明 | 默认值 |
---|---|---|
spring.boot.admin.hazelcast.enabled | 开启Hazelcast支持 | true |
spring.boot.admin.hazelcast.application-store | 用于存储应用程序的Hazelcast映射的名称 | "spring-boot-admin-application-store" |
spring.boot.admin.hazelcast.event-store | 用于存储事件的Hazelcast列表的名称 | "spring-boot-admin-event-store" |
4.3 通知
4.3.1 提醒通知
ReminderNotifier发送关于应用程序DOWN/OFFLINE状态的提醒,它将通知的发送委托给另一个通知程序。
默认情况下,当注册的应用程序状态更改为DOWN或OFFLINE时,将触发提醒。 你可以通过setReminderStatuses()修改设置。 当状态更改为非触发状态或相关应用程序取消注册时,提醒取消。
默认情况下,每10分钟发送一次提醒,可以使用setReminderPeriod()方法修改设置。 ReminderNotifier本身不启动后台线程发送提醒,你可以参考下面的示例;
如何配置提醒
@Configuration
@EnableScheduling
public class NotifierConfiguration {
@Autowired
private Notifier notifier;
@Bean
@Primary
public RemindingNotifier remindingNotifier() {
RemindingNotifier remindingNotifier = new RemindingNotifier(notifier);
remindingNotifier.setReminderPeriod(TimeUnit.MINUTES.toMillis(5)); (1)
return remindingNotifier;
}
@Scheduled(fixedRate = 60_000L) (2)
public void remind() {
remindingNotifier().sendReminders();
}
}
(1)提醒将每5分钟发送一次
(2)计划任务每60秒执行
4.3.2 过滤通知
FilteringNotifier可以通过你提供的规则过滤特定的通知。它将需要发送的通知委托给通知发送相关程序。
如果你在应用中添加FilteringNotifier bean,你可以通过RESTful接口api/notifications/filter查看过滤器。 我们就可以在界面中管理这些过滤器。
如果您不想在部署应用程序时收到通知,在停止应用程序之前,您可以通过POST请求或管理界面添加过滤器。
如何配置过滤器:
@Configuration
@EnableScheduling
public class NotifierConfiguration {
@Autowired
private Notifier delegate;
@Bean
public FilteringNotifier filteringNotifier() { (1)
return new FilteringNotifier(delegate);
}
@Bean
@Primary
public RemindingNotifier remindingNotifier() { (2)
RemindingNotifier notifier = new RemindingNotifier(filteringNotifier());
notifier.setReminderPeriod(TimeUnit.SECONDS.toMillis(10));
return notifier;
}
@Scheduled(fixedRate = 1_000L)
public void remind() {
remindingNotifier().sendReminders();
}
}
(1)配置FilteringNotifier bean,并注入Notifier(例如:Notifier可以是MailNotifier等)
(2)配置ReminderNotifier为首先bean,注入FilteringNotifier。
这个示例中包含了提醒和通知过滤器。它配置了一定周期发送通知。
4.3.3 邮件通知
添加spring-boot-starter-mail依赖,配置JavaMailSender和收件人。
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
application.properties
spring.mail.host=smtp.example.com
[email protected]
表格7:邮件通知配置选项
属性 | 描述 | 默认值 |
---|---|---|
spring.boot.admin.notify.mail.enabled | 启用邮件通知 | true |
spring.boot.admin.notify.mail.ignore-changes | 逗号分隔多个需要忽略的状态。格式: "<from-status>:<to-status>",支持通配符 | "UNKNOWN:UP" |
spring.boot.admin.notify.mail.to | 逗号分隔多个收件人地址 | "root@localhost" |
spring.boot.admin.notify.mail.cc | 逗号分隔多个抄送人地址 | |
spring.boot.admin.notify.mail.from | 邮件发送人 | |
spring.boot.admin.notify.mail.subject | 邮件主题,支持SPEL表达式 | "#{application.name} (#{application.id}) is #{to.status}" |
spring.boot.admin.notify.mail.text | 邮件内容,支持SPEL表达式 | "#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}" |
4.3.4 Pagerduty通知
4.3.5 Hipchat通知
4.3.6 Slack通知
4.3.7 Let’s Chat通知
4.4 UI模块
可使用下面的UI扩展模块,添加到类路径中。
spring-boot-admin-server-ui-hystrix
spring-boot-admin-server-ui-turbine
spring-boot-admin-server-ui-activiti
4.4.1 Hystrix模块
Hystrix模块使用hystrix-dashboard展示Hystrix streams相关的指标。
- 添加依赖:
pom.xml
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-hystrix</artifactId>
<version>1.5.1</version>
</dependency>
- 添加/hystrix.stream相关端点
application.yml
spring.boot.admin.routes.endpoints:
env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream
4.4.2 Turbine模块
Turbine模块使用hystrix-dashboard展示Turbine streams相关的指标。这个UI模块中不会配置Turbine,所以你可以单独运行Turbine,或者集成到Spring Boot Admin应用中。详情请参考Spring Cloud文档。
- 添加依赖:
pom.xml
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-turbine</artifactId>
<version>1.5.1</version>
</dependency>
- 配置Turbine服务和集群:
application.yml
spring.boot.admin.turbine:
clusters: default
location: turbine (1)
(1) turbine为Turbine服务的ID。也可使用URL。
表格12:Turbine UI模块选项
属性名 | 描述 | 默认值 |
---|---|---|
spring.boot.admin.turbine.enabled | 启用Spring Boot Admin中Turbine配置 | true |
spring.boot.admin.turbine.location | 使用服务ID或URL(除/turbine.stream以外的路径)配置Turbine。需要保证从admin服务能访问到Turbine。 | "turbine" |
spring.boot.admin.turbine.clusters | Turbine集群列表 | "default" |
4.4.3 Activiti模块
Activiti模块显示/activti端点的信息。
- 添加依赖:
pom.xml
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-activiti</artifactId>
<version>1.5.1</version>
</dependency>
- 添加/activiti相关端点
application.yml
spring.boot.admin.routes.endpoints:
env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,activiti
4.4.4 登录模块
登录模块仅仅提供一个登录页面和登出按钮。
- 添加依赖:
pom.xml
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-login</artifactId>
<version>1.5.1</version>
</dependency>