Spring Boot 中提供了监管信息管理段,用来实现监控信息的可视化,这样可以方便开发者快速查看系统运行情况,而不用一个一个地调用接口。
创建 Spring Boot Web 工程,添加以下依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>de.codecentricgroupId>
<artifactId>spring-boot-admin-starter-serverartifactId>
<version>2.0.2version>
dependency>
创建成功后在启动类上添加 @EnableAdminServer 注解,表示启动 AdminServer
@SpringBootApplication
@EnableAdminServer
public class ActuatorApplication {
public static void main(String[] args) {
SpringApplication.run(ActuatorApplication.class, args);
}
}
配置完成后,启动 Spring Boot 项目,“http://localhost:8080/index.html”
Admin 端将通过图表的方式展示监控信息。
接下来开发 Client。Client 实际上就是一个个的服务,Client 将被注册到 AdminServer 上 然后 AdminServer 获取 Client 的运行数据并展示出来。
再新建一个 Spring Boot 项目(Client),添加依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>de.codecentricgroupId>
<artifactId>spring-boot-admin-starter-clientartifactId>
<version>2.0.2version>
dependency>
然后在 application.properties 中添加以下配置
server.port=8081
spring.boot.admin.client.url=http://localhost:8080
info.app.encoding=@project.build.sourceEncoding@
info.app.java.source=@java.version@
info.app.java.target=@java.version@
info.author.name=tianxiadiyizei
info.author.email=tianxiadiyizei@qq.com
management.endpoints.web.base-path=/
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
management.health.status.order=FATAL,DOWN,OUT_OF_SERVICE,UP,UNKNOWN
management.health.status.http-mapping.FATAL=503
management.info.git.mode=simple
MyHealth
@Component
public class MyHealth implements HealthIndicator {
@Override
public Health health() {
return Health.up().withDetail("msg", "网络连接正常...").build();
}
}
spring.boot.admin.client.url 表示配置 AdminServer 地址。
配置完成后启动 Client 项目,此时在 AdminServer 上就可以看到 Client 的运行数据。
下图展示了当前注册到 AdminServer 上的 Client 列表。
Wallboard 展示了 Client 的简略信息
单击实例名,即可看到 Client 运行的详细数据,一些常见的信息展示在 Details 选项卡中,其它选项卡都对应不同的端点数据。
Journal 中展示了项目运行日志,如下
虽然使用 AdminServer 可以实现监控信息可视化,但是项目运维工程师不可能一天24小时盯着屏幕查看各个应用的运行状况,如果在应用运行出现问题时能够自动发送邮件通知运维工程师,就会方便很多。对此,Spring Boot 提供了相应的支持。
修改上面的 Admin 工程,添加邮件依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-mailartifactId>
dependency>
在 application.properties 中配置邮件发送基本信息
spring.mail.host=smtp.qq.com
spring.mail.port=465
spring.mail.username=aaa@qq.com
spring.mail.password=授权码
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true
#邮件发送者
spring.boot.admin.notify.mail.from=aaa@qq.com
#收件人
spring.boot.admin.notify.mail.to=bbb@qq.com
#抄送人
spring.boot.admin.notify.mail.cc=ccc@qq.com
#忽略掉的事件
spring.boot.admin.notify.mail.ignore-changes=
关于邮件发送的配置及其他信息,详见十三、企业开发(1)。
默认情况下,当被监控应用的状态为 UNKNOWN 或者 UP 时不会发送报警邮件,这里配置表示被监控应用的任何变化都会发送报警邮件。
配置完成后,重新启动 AdminServer ,然后再重启被监控的应用 client ,就会收到应用上线的邮件报警。
此时关闭被监控的应用 client ,就会收到应用下线的邮件报警。