简介
官网: https://github.com/codecentric/spring-boot-admin
官网入门: https://codecentric.github.io/spring-boot-admin/2.5.1/#getting-started
spring boot admin是一个非常好用的监控和管理的开源软件。该软件能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。
主要的功能点有:
- 显示应用程序的监控状态
- 应用程序上下线监控
- 查看 JVM,线程信息
- 可视化的查看日志以及下载日志文件
- 动态切换日志级别
- Http 请求信息跟踪
- 其他功能点……
搭建
搭建server
使用spring init工具添加依赖 admin-server
1 2 3 4 5 6 7 8
| <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> </dependency>
|
spring boot 启动类添加 @EnableAdminServer
1 2 3 4 5 6 7 8 9
| @SpringBootApplication @EnableAdminServer public class AdminApplication {
public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); }
}
|
搭建client
1 2 3 4
| <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency>
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| spring: boot: admin: client: url: http://localhost:8080
management: endpoints: web: exposure: include: '*'
|
启动server、 client后访问http://localhost:8080/
搭建从eureka-server获取的server
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency>
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> </dependency>
|
1 2 3 4 5 6 7 8 9 10
| @SpringBootApplication @EnableAdminServer @EnableEurekaClient public class AdminApplication {
public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); }
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| server: port: 8080
spring: application: name: admin
eureka: instance: leaseRenewalIntervalInSeconds: 10 health-check-url-path: /actuator/health metadata-map: startup: ${random.int} client: registryFetchIntervalSeconds: 5 serviceUrl: defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS
|
这时admin项目是一个eureka-client并且是一个admin-server。
其他的需要监控的项目不需要引入admin-client,只需要引入actuator并开启端点。
使用
首页
首页显示了应用数、实例数、实例状态,还有应用列表。
Insights
细节
包含了实例的信息、健康情况、元数据、进程信息、线程信息、垃圾回收情况、堆内存情况、非堆内存情况。
环境
包含了实例的启动端口、系统属性、系统环境变量、springCloudClientHostInfo、application.yml信息
类
可以查看类的信息,比如是否单例。
配置属性
可以查看一些配置类的配置信息。比如eurekaClientConfigBean
计划任务
可以看到我们配置的定时器
日志配置
可以动态调整一个包的日志级别
JVM
线程转储:可以查看线程的情况。可以下载线程快照。类似jstack
内存转储:可以下载内存快照。
映射
http请求地址与处理程序的映射。
缓存
可以看到我们使用到的缓存空间。
服务上下线通知
通知支持邮件、钉钉、微信等
可以引入spring Security实现安全
引入spring Security 并配置用户名、密码
查看日志
当client配置了logging.file.path or logging.file.name后,admin-server会开启查看日志的视图
1 2 3 4 5
| logging: file: name: /Users/qichuanhan/logs/service-a.log pattern: file: '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx'
|
启动service-a服务,会发现admin的控制台菜单出现了变化,日志配置变为了二级菜单,日志变为一级菜单,日志中包含日志文件、日志配置两个子菜单。点击日志文件就可以看到日志打印了。
httptrace 怎么没了
Spring boot 2.2.x 正式版开始,不再默认开启 InMemoryHttpTraceRepository,所以导致了这个问题。
对于此问题,官方建议采用第三方组件来进行 httptrace 的收集,详见:鼓励使用第三方跟踪和可观察性解决方案,而不是实现自己的HttpTraceRepositroy[2] https://github.com/spring-projects/spring-boot/issues/17047。
可以使用 prometheus 来实现httptrace的功能。