Spring Boot Admin 图形化监控
1. 简介
1.1 概述
Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI是的AngularJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。
Spring Boot Admin 可以提供应用的以下监控信息:
- 监控应用运行过程中的概览信息;
- 度量指标信息,比如JVM、Tomcat及进程信息;
- 环境变量信息,比如系统属性、系统环境变量以及应用配置信息;
- 查看所有创建的Bean信息;
- 查看应用中的所有配置信息;
- 查看应用运行日志信息;
- 查看JVM信息;
- 查看可以访问的Web端点;
- 查看HTTP跟踪信息。
1.2 官网
源码地址:https://github.com/codecentric/spring-boot-admin
2. 环境
java:1.8
springboot:2.3.0.RELEASE
Nacos:1.3.0
3.spring-boot-admin-server搭建
3.1 maven配置
增加spring-boot-admin依赖,nacos依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 引入nacos注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- spring cloud alibaba nacos config 依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>2.3.0</version>
</dependency>
3.2 工程配置
bootstrap.yml
配置用于连接nacos,application.yml
开启本服务的监控,暴露自己的actuator的所有端口信息。application.yml
的内容可以放到nacos配置列表中,新建配置admin-server.yml
,将application.yml
的内容复制到admin-server.yml
。
- 3.2.1 bootstrap.yml配置如下:
spring:
profiles:
active: uat
application:
name: admin-server
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace: ${spring.profiles.active}
config:
# 如果不想使用 Nacos 进行配置管理,设置为 false 即可
enabled: true
# Nacos Server 地址
server-addr: localhost:8848
# 组,默认为 DEFAULT_GROUP
group: ${spring.application.name}
# 配置内容的数据格式,默认为 properties
file-extension: yml
namespace: ${spring.profiles.active}
- 3.2.2 application.yml配置:
logging:
level:
# Nacos 注册中心客户端心跳日志禁用 get changedGroupKeys:[] 刷屏
com.alibaba.nacos.client.config.impl: WARN
com.alibaba.nacos.client.naming: WARN
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
3.3 启动类
添加注解:@EnableDiscoveryClient、@EnableAdminServer
package com.lin.admin;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class SpringAdminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringAdminApplication.class, args);
}
}
3.4 启动效果
浏览器访问地址http://localhost:8080/,界面如下:
4. 客户端demo:spring-boot-admin-client
4.1 maven配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<!-- 引入nacos注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- spring cloud alibaba nacos config 依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
4.2 配置文件
bootstrap.yml
配置用于连接nacos,application.yml
开启本服务的监控,暴露自己的actuator的所有端口信息。application.yml
的内容可以放到nacos配置列表中,新建配置admin-client.yml
,将application.yml
的内容复制到admin-client.yml
。
连接nacos可以配置服务发现,只要保证与springboot-admin
部署在同样namespace
,同样group
,就可以监控到资源。
如果不连接nacos,需要指定admin-server地址,如:
boot:
admin:
client:
url: http://localhost:8080
- 4.2.1 bootstrap.yml配置如下:
spring:
profiles:
active: uat
application:
name: admin-client
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace: ${spring.profiles.active}
metadata:
management:
config:
enabled: true
server-addr: localhost:8848
group: ${spring.application.name}
file-extension: yml
namespace: ${spring.profiles.active}
- 4.2.2 application.yml配置如下:
server:
port:8768
spring:
application:
name: admin-client
# boot:
# admin:
# client:
# url: http://172.0.0.1:8080
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: ALWAYS
4.3 启动服务,访问admin-server
点击admin-client服务,查看详情,可以看到进程、内存、配置等等信息,如下: