SpringBoot | 第二十八章:监控管理之Spring Boot Admin使用 (2)

注意:在生产环境中,为了数据的安全,还是需要加上安全认证的,具体的可以查看官方文档:,相对比较简单,简单来说就是加入spring-boot-starter-security进行安全认证,这里可以直接引入spring-boot-admin-server-ui-login进行登录安全认证。本文就不阐述了。

securing_spring_boot_admin_server

监控通知

虽然我们可以通过界面进行可视化监控,但不可能实时去盯着屏幕的,我们希望在服务有问题,比如下线、CPU异常等情况时,能通过邮件等形式及时通知对应责任人,这样就能做到预警效果了。

在SpingBootAdmin中,提供了多种通知机制,来实现监控告警功能。

SpringBoot | 第二十八章:监控管理之Spring Boot Admin使用

可以看见,其集成了国外的一些通讯软件,而对于我们而言,还是使用邮件通知比较靠谱。当然也能自定义通知,进行个性化消息通知功能,比如钉钉机器人通知等。

发送邮件通知

这里简单以邮件通知为例。具体邮件发送相关知识点,可查看:第二十六章:邮件发送,这里不在阐述了。

以下配置都是在服务端spring-boot-admin-server进行添加。

0.引入pom依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>

1.配置邮箱信息。

# 邮件相关 # SMTP服务器地址 spring.mail.host=smtp.qq.com # SMTP服务器端口号 默认-1 # spring.mail.port=-1 # 发送方帐号 spring.mail.username=邮箱 # 发送方密码(授权码) spring.mail.password=邮箱密码 #javaMailProperties 配置 # 开启用户身份验证 spring.mail.properties.mail.smtp.auth=true # 发送给谁 spring.boot.admin.notify.mail.to=499452441@qq.com # 谁发的 spring.boot.admin.notify.mail.from=499452441@qq.com

再次启动服务端应用和客户端,之后停止客户端,就可以收到下线通知邮件了。

SpringBoot | 第二十八章:监控管理之Spring Boot Admin使用

同时,我们还能自定义发送邮件的主题和内容,配置文件加入

# 主题格式 # 使用中文会乱码,可使用yml文件格式解决 # 之类直接unicode编码了 # 应用#{application.name}(#{application.id}) 状态为:#{to.status} spring.boot.admin.notify.mail.subject=\u5e94\u7528#{application.name}(#{application.id}) \u72b6\u6001\u4e3a\uff1a#{to.status} # 邮件内容 #应用#{application.name} (#{application.id})\n状态从 #{from.status} 变为 #{to.status}\n\n 应用健康地址:#{application.healthUrl} spring.boot.admin.notify.mail.text=\u5e94\u7528#{application.name} (#{application.id})\n\u72b6\u6001\u4ece #{from.status} \u53d8\u4e3a #{to.status}\n\n \u5e94\u7528\u5065\u5eb7\u5730\u5740\uff1a#{application.healthUrl}

多说几句:这里的subject和text都支持SpEL(Spring Expression Language)表达式的,关于SpEL表达式,有兴趣的同学可以自行搜索下,是一个支持运行时查询和操作对象图的强大的表达式语言,类似于EL表达式,定界符为#{},一种简化开发的表达式,通过使用表达式来简化开发,减少一些逻辑、配置的编写。

而此次,发送邮件的参数,通过跟踪源码获悉,入口的参数为ClientApplicationEvent,对应路径为:de.codecentric.boot.admin.event.ClientApplicationEvent,即应用信息。其继承的类如下:

ClientApplicationEvent继承类

当应用发送状态变更时,就会触发ClientApplicationStatusChangedEvent事件了,对应的参数如下所示:

ClientApplicationStatusChangedEvent

所以,需要额外一些参数时,可以根据de.codecentric.boot.admin.model.Application的属性获取更加详细的信息,如metadata、info等等。

Application

之后,发送的邮件内如如下:

自定义邮件内容

自定义通知

除了使用自带的一些通知机制外,我们还能通过自定义,来进行个性化通知的创建,比如在一些场景下,我们会把消息推送到MQ服务器上或者手机上等等。实现通知比较简单,就是实现Notifier接口,而官方提供给了一个抽象类AbstractStatusChangeNotifier,我们直接继承此类就好了。

0.创建一个自定义通知类

CustomNotifier.java

/** * 自定义通知 * @author oKong * */ @Component @ConfigurationProperties("okong.custom.notify") @Setter @Getter @Slf4j public class CustomNotifier extends AbstractStatusChangeNotifier{ String name; @Override protected void doNotify(ClientApplicationEvent event) throws Exception { //这里只是为了示例 ,直接输出到控制台了。 log.info("{}-自定义通知:应用-{}", name,event.getApplication().getName()); } }

1.配置文件配置属性name的值

# 自定义通知类型 okong.custom.notify.name=oKong

再次,启动应用,当监控的应用状态发生变动时,可以看见邮件和自定义通知都生效了,控制台可以看见自定义输出内容了。

自定义通知

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwdgf.html