在上一篇中我们学习到了,SpringBootAdmin的客户端离线,上线发送邮件通知等知识,这里我们来学习 SpringBootAdmin 中的自定义配置属性。
自定义通知程序
您可以通过添加实现该Notifier
接口的Spring Bean来添加自己的通知程序,最好通过扩展 AbstractEventNotifier
或来添加AbstractStatusChangeNotifier
服务端代码配置:
/**
* @author qrn
* @version 1.0
* @date 2021/4/12 16:25
* 自定义通知程序:
*/
public class CustomNotifier extends AbstractEventNotifier{
private static final Logger LOGGER = LoggerFactory.getLogger(LoggingNotifier.class);
public CustomNotifier(InstanceRepository repository) {
super(repository);
}
@Override
protected Mono<Void> doNotify(InstanceEvent event, Instance instance) {
return Mono.fromRunnable(() -> {
if (event instanceof InstanceStatusChangedEvent) {
LOGGER.info("Instance {} ({}) is {}", instance.getRegistration().getName(), event.getInstance(),
((InstanceStatusChangedEvent) event).getStatusInfo().getStatus());
}
else {
LOGGER.info("Instance {} ({}) {}", instance.getRegistration().getName(), event.getInstance(),
event.getType());
}
});
}
}
自定义Http标头
如果您需要将自定义HTTP标头注入到对受监视应用程序的执行器端点的请求中,则可以轻松添加HttpHeadersProvider
在启动类中加入以下代码配置:SpringBootAdminServiceApplication
/**
* 自定义HTTP标头
* @return
*/
@Bean
public HttpHeadersProvider customHttpHeadersProvider() {
return (instance) -> {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("X-CUSTOM", "My Custom Value");
return httpHeaders;
};
}
拦截请求和响应
您可以通过实现InstanceExchangeFilterFunction
接口来拦截和修改对受监视应用程序的执行器端点的请求和响应。这对于审核或添加一些额外的安全检查很有用
/**
* 拦截请求和响应日志打印
* @return
*/
@Bean
public InstanceExchangeFilterFunction auditLog() {
return (instance, request, next) -> next.exchange(request).doOnSubscribe((s) -> {
if (HttpMethod.DELETE.equals(request.method()) || HttpMethod.POST.equals(request.method())) {
log.info("{} for {} on {}", request.method(), instance.getId(), request.url());
}
});
}
自己定义log。打印日志排查
链接/嵌入外部页面
您可以非常简单地通过配置添加指向外部页面的链接,甚至可以嵌入它
spring:
boot:
admin:
ui:
external-views:
- label: "🚀"
url: http://codecentric.de
order: 2000
自定义登录徽标
- 图片放在通过http提供服务的资源位置(例如
/META-INF/spring-boot-admin-server-ui/assets/img/
)。 - 使用以下属性来配置要使用的图标:
- spring.boot.admin.ui.login-icon:用作登录页面上的图标。(例如
assets/img/custom-login-icon.svg
)
- spring.boot.admin.ui.login-icon:用作登录页面上的图标。(例如
自定义Favicon
可以使用自定义图标,该图标也用于桌面通知。当一个或多个应用程序关闭时,Spring Boot Admin使用一个不同的图标。
- 将网站图标(
.png
至少192x192像素)放在通过http提供服务的资源位置(例如/META-INF/spring-boot-admin-server-ui/assets/img/
)。 - 使用以下属性来配置要使用的图标:
spring.boot.admin.ui.favicon
:用作默认图标。(例如assets/img/custom-favicon.png
spring.boot.admin.ui.favicon-danger
:在一项或多项服务中断时使用。(例如assets/img/custom-favicon-danger.png
)
自定义语言
spring.boot.admin.ui.available-languages:用作现有语言的过滤器。(e.g en,de
out of existing de,en,fr,ko,pt-BR,ru,zh
)
显示/隐藏视图
您可以非常简单地在导航栏中隐藏视图:
spring:
boot:
admin:
ui:
view-settings:
- name: "journal"
enabled: false
监视Spring Boot 1.5.x
可以使用Spring Boot Admin 2.x监视Spring Boot 1.5.x应用程序。旧的Spring Boot Admin Client可以在较新的服务器上注册。由于API稍有变化,因此您需要在旧客户端上设置以下属性:
-
重新配置Spring Boot Admin Client 1.5.x的api路径:
application.yml
spring.boot.admin.api-path: instances
由于在Spring Boot 2版本中某些执行器端点发生了变化,因此并非所有选项都可用(例如/metrics
端点)。对于某些端点,我们提供了旧式转换器。
2.x进行的更改
使用者界面
- 使用vue.js重写了ui
- 将ui-login模块集成到主ui模块中
- 删除了ui-activity模块,因为它很少使用
- 删除了Hystrix-Dashboard集成(可能会更改)
- 增加了对会话端点的支持
- 添加了(经过消毒的)元数据的显示
- 添加了重置日志级别的选项
- 添加了墙板视图
后端服务
- 将所有类移至
spring.boot.admin.server
包中 - 与Spring Cloud相关的扩展已移至
spring-boot-admin-server-cloud
。 - 使用事件源原则重新设计了后端
- 添加了应用程序概念(由1到n个实例组成)
- 通过查询
/actuator
-index或通过OPTIONS请求进行探测,将端点检测移至后端 - 使用WebClient将Zuul替换为自定义代理
- 删除了对spring-cloud-starter的依赖
- 加入
CompositeHttpHeadersProvider
到支持多HttpHeadersProviders
在同一时间 - 添加了“ InstanceExchangeFilterFunction”,可以拦截/修改对受监视实例的请求
- 添加了对CloudFoundry的开箱即用支持
- 增加了对Spring Boot 1.5.x执行器端点的支持,使用
LegacyEndpointConverters
- 更新
OpsGenieNotifier
到api v2 - 重写了
MailNotifier
以使用Thymeleaf模板
客户端
- 将所有属性移到和
spring.boot.admin.client.
spring.boot.admin.client.instance.
- 将所有类移至
spring.boot.admin.client
包中 - 添加了支持webflux应用程序
- 添加了对CloudFoundry的开箱即用支持
项目代码Github地址:SpringBootAmdinDemo