部署Spring Boot Admin实现基础的服务器监控和告警
Spring Boot Admin
Spring Boot Actuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用。这个模块是一个采集应用内部信息暴露给外部的模块。支持HTTP和JMX两种方式访问。
Spring Boot Admin(SBA)是在Actuator模块的基础上实现的UI界面,提供直观的UI和仪表盘方便开发者观察应用状态和简单的健康监控。
启动Spring Boot Admin服务
build.grdle中依赖设置为最新的Spring Boot 2.7.4和Spring Boot Admin 2.7.6。
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.7.6</version></dependency>apply plugin: 'io.spring.dependency-management'
dependencies { implementation("org.springframework.boot:spring-boot:2.7.4") implementation("org.springframework.boot:spring-boot-starter:2.7.4") implementation("org.springframework.boot:spring-boot-starter-web:2.7.4") implementation("org.springframework.boot:spring-boot-starter-actuator:2.7.4")
implementation("de.codecentric:spring-boot-admin-starter-server:2.7.6")}创建应用启动类MonitorApplication.class。
@SpringBootApplication()@EnableAdminServer()public class MonitorApplication {
public static void main(String[] args) { SpringApplication.run(MonitorApplication.class, args); }}默认监听8080端口,启动之后通过 http://127.0.0.1:8080查看面板。首页如下如所示:

应用接入Spring Boot Admin
项目中接入SBA也很简单,启动时会自动注入配置并注册到SBA。
在应用程序目录中引入Client包。
implementation("de.codecentric:spring-boot-admin-starter-client:2.7.6")<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.7.6</version></dependency>设置启动配置和参数。一下提供基础的简单配置。更多配置见 Client Options
#===================================== Spring Boot Admin ======================================spring.boot.admin.client.url=http://127.0.0.1:9005spring.boot.admin.client.instance.prefer-ip=truespring.boot.admin.client.instance.service-url=http://127.0.0.1:2789spring.boot.admin.client.instance.metadata.tags.environment=services-my# Spring Securityspring.boot.admin.client.instance.metadata.user.name=spring.boot.admin.client.instance.metadata.user.password=management.endpoints.web.exposure.include=*启动测试程序。


Spring Cloud服务发现
上例中通过引入client包并注册到SBA。本例主要演示通过Spring Cloud全家桶的服务发现自动注册到SBA。SBA支持全部Spring Cloud的服务发现组件。
首先确定你的项目中引入了Spring Cloud依赖。
implementation("org.springframework.cloud:spring-cloud-starter:...")<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId></dependency>配置在application.yml文件即可。
spring: cloud: discovery: client: simple: instances: test: - uri: http://instance1.intern:8080 metadata: management.context-path: /actuator - uri: http://instance2.intern:8080 metadata: management.context-path: /actuator健康状态告警
SBA内置许多通知方式,例如:Microsoft Teams、邮件。也允许用户自定义通知,通过继承实现 AbstractEventNotifier。本小节主要以钉钉告警通知为例,更多其他类型的告警通知配置见 Spring Boot Admin Notifications
相比于普罗米修斯这种重量级的监控和日志收集方案,SBA无法追溯查看历史数据,仅仅是针对状态变更的当前状态做一个告警和通知。作为重量级监控方案的补充,更灵活使用。
钉钉告警通知
| 属性名 | 描述 | 缺省值 |
|---|---|---|
| spring.boot.admin.notify.dingtalk.enabled | 是否开启钉钉通知 | true |
| spring.boot.admin.notify.dingtalk.webhook-url | 钉钉机器人的webhookUrl | |
| spring.boot.admin.notify.dingtalk.secret | 钉钉机器人的密钥 | |
| spring.boot.admin.notify.dingtalk.message | 通知文本,支持SpEL表达式 | ”#{instance.registration.name} #{instance.id} is #{event.statusInfo.status}“ |
其他
SBA的另外一大亮点就是支持定义端点,允许嵌入外部网页。有助于用户扩展自定义的监控维度,也有助于支持各种各样的其他第三方库的监控管理后台,例如
参考资料
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!