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-clientboot: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