1 简介
SpringBoot应用可以通过Actuator来暴露应用运行过程中的各项指标,Spring Boot Admin通过这些指标来监控SpringBoot应用,然后通过图形化界面呈现出来。Spring Boot Admin不仅可以监控单体应用,还可以和Spring Cloud的注册中心相结合来监控微服务应用。
Spring Boot Admin 可以提供应用的以下监控信息:
- 监控应用运行过程中的概览信息;
- 度量指标信息,比如JVM、Tomcat及进程信息;
- 环境变量信息,比如系统属性、系统环境变量以及应用配置信息;
- 查看所有创建的Bean信息;
- 查看应用中的所有配置信息;
- 查看应用运行日志信息;
- 查看JVM信息;
- 查看可以访问的Web端点;
- 查看HTTP跟踪信息。
2 创建 springboot Admin 项目
3yml 配置文件
spring:
application:
name: admin-server
server:
port: 8091
4pom 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>SpringBoot-Admin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringBoot-Admin</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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.2.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5 创建 admin-client项目(被监控的应用)
6yml 配置文件设置
spring:
application:
name: admin-client
boot:
admin:
client:
url: http://localhost:8091 #配置admin-server地址
server:
port: 8092
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: always
logging:
file:
name: admin-client.log #配置生成日志文件名称
7pom 配置文件设置
<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>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
8 测试TestController 类
package com.example.springbootadminclient.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.concurrent.atomic.AtomicInteger;
@RestController
@RequestMapping("api")
public class TestController {
private AtomicInteger count = new AtomicInteger(0);
@GetMapping("hi")
private String sayHi() {
// 每次进来如打印下日志
System.out.println("{} 啪...我第{}次进来了."+ LocalDateTime.now()+ count.addAndGet(1));
// 每次进来new 个大对象,便于监控观察堆内存变化
byte[] bytes = new byte[100*1024*1024];
System.out.println("new了 100MB");
return "hi springboot addmin " + LocalDateTime.now();
}
}
9 运行 SpringBoot-Admin 与 SpringBoot-Admin-client
10 访问 http://localhost:8091/applications