SpringBootAdmin简介
官方文档:What is Spring Boot Admin?
codecentric’s Spring Boot Admin is a community project to manage and monitor your Spring Boot ® applications. The applications register with our Spring Boot Admin Client (via HTTP) or are discovered using Spring Cloud ® (e.g. Eureka, Consul). The UI is just a Vue.js application on top of the Spring Boot Actuator endpoints.
谷歌翻译如下:
codecentric的Spring Boot Admin是一个社区项目,用于管理和监控SpringBoot®应用程序。
应用程序向我们的Spring Boot Admin Client注册(通过HTTP)或使用SpringCloud®(例如Eureka,Consul)发现。
UI只是Spring Boot Actuator端点上的Vue.js应用程序。
普通话版
SpringBootAdmin是一个用于管理和监控SpringBoot微服务的社区项目,可以使用客户端注册或者Eureka服务发现向服务端提供监控信息。
注意,服务端相当于提供UI界面,实际的监控信息由客户端Actuator提供
通过SpringBootAdmin,你可以通过华丽大气的界面访问到整个微服务需要的监控信息,例如服务健康检查信息、CPU、内存、操作系统信息等等
本文档通过Eureka服务发现的配置方式,向大家展示SpringBootAdmin的简单使用
Talk is cheap, show me the code!
1. 父工程搭建
本示例工程父工程下共四个模块,分别为
- eureka-server 服务注册中心
- admin-server SpringBootAdmin服务端
- cloud-service1 微服务客户端1
- cloud-service2 微服务客户端2(实际为cloud-service1 的copy,测试一个服务多个实例)
使用了目前最新的版本,父pom文件主要做了版本控制,内容如下:
4.0.0
com.kichun
cloud-demo
pom
1.0-SNAPSHOT
eureka-server
cloud-service1
cloud-service2
admin-server
org.springframework.boot
spring-boot-starter-parent
2.1.3.RELEASE
org.springframework.cloud
spring-cloud-dependencies
Greenwich.RELEASE
pom
import
org.projectlombok
lombok
1.16.22
de.codecentric
spring-boot-admin-dependencies
2.1.3
pom
import
org.springframework.boot
spring-boot-maven-plugin
2. Eureka注册中心工程搭建
这个不细说,不懂出门右转,百度大把配置
模块pom文件, 注意最新版本依赖了hystrix,一定要加,否则跑不起来
cloud-demo
com.kichun
1.0-SNAPSHOT
4.0.0
eureka-server
org.springframework.cloud
spring-cloud-netflix-eureka-server
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
org.projectlombok
lombok
程序入口
@Slf4j
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
YML配置文件
spring:
application:
name: eureka-server
main:
allow-bean-definition-overriding: true
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3. admin-server 服务端搭建
模块pom文件
cloud-demo
com.kichun
1.0-SNAPSHOT
4.0.0
admin-server
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.projectlombok
lombok
de.codecentric
spring-boot-admin-starter-server
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-mail
应用入口, 关键注解@EnableAdminServer
@Slf4j
@SpringBootApplication
@EnableAdminServer
@EnableEurekaClient
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
YML配置文件,均有做说明
spring:
application:
name: admin-server
boot:
# 此处为SpringBootAdmin配置
admin:
ui:
# web界面的title
title: 服务健康检查
# 邮件提醒
notify:
mail:
# 发给谁
to: [email protected]
# 谁发的
from: [email protected]
# spring mail邮件配置
mail:
# smtp主机
host: smtp.qq.com
# 发件人账号
username: [email protected]
# 发件人密码,如qq邮箱等使用的是授权码
password: bogffhsssi这个请大佬改成自己密码ihb
server:
port: 8602
eureka:
instance:
hostname: localhost
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
4. 客户端搭建
模块pom文件
cloud-demo
com.kichun
1.0-SNAPSHOT
4.0.0
cloud-service1
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-web
de.codecentric
spring-boot-admin-starter-client
org.projectlombok
lombok
应用入口
@Slf4j
@SpringBootApplication
@EnableEurekaClient
public class Service1Application {
public static void main(String[] args) {
SpringApplication.run(Service1Application.class, args);
}
}
关键为YML配置
spring:
application:
name: service1
main:
allow-bean-definition-overriding: true
server:
port: 8601
eureka:
instance:
hostname: localhost
leaseRenewalIntervalInSeconds: 10
# 健康检查路径
health-check-url-path: /actuator/health
client:
registryFetchIntervalSeconds: 5
serviceUrl:
defaultZone: http://localhost:8761/eureka/
# 此处为SpringAdminClient配置,需要暴露Actuator节点
management:
# 暴露所有的endpoint 注意生产环境安全问题
endpoints:
web:
exposure:
include: "*"
# 展示endpoint细节信息
endpoint:
health:
show-details: ALWAYS
5 . 效果展示
按启动Eureka,SpringBootAdmin服务端、各服务客户端顺序启动,访问服务端端口
如图,共两个应用启动,一个为SpringBootAdmin服务端本身共一个实例,一个Service1服务两个实例
细节信息,包括磁盘、cpu、内存使用情况
关闭一个服务时将会收到邮件提醒,邮件提醒模板可以自定义,具体请参考官方文档
服务上线时会有更具体的信息
6. 总结
SpringBootAdmin提供一个界面优美的监控界面,展示微服务运行的基本信息,通过提供邮件等提醒服务可以方便提醒管理者微服务运行情况,能与SpringCloud相关组件完美兼容,侵入性低,适合对监控要求不高的应用场景
官方文档更齐全,欢迎大佬评论打赏指出问题