SpringBoot 监控

782 阅读2分钟

SpringBoot 监控

概述

SpringBoot 自带监控功能 Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean 加载情况、配置属性、日志信息等。

使用步骤

  1. 导入依赖坐标
    image
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 访问 http://localhost:8080/acruator
    image
    image
  2. URI 详解
路径描述
/beans描述应用程序上下文里全部的 Bean,以及它们的关系
/env获取全部环境属性
/env/根据名称获取特定的环境属性值
/health报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供
/info获取应用程序的定制信息,这些信息由 info 打头的属性提供
/mappings描述全部的 URI 路径,以及它们和控制器(包含 Actuator 端点)的映射关系
/metrics报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数
/metrics/报告指定名称的应用程序度量值
/trace提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等)
  1. 添加基础监控信息
# 添加 info 信息
info.name=zhangsan
info.age=23

# 开启健康检查的完整信息
management.endpoint.health.show-details=always

image

image

  1. 添加完整监控信息
# 将所有的监控 endpoint 暴露出来
management.endpoints.web.exposure.include=*
// 如下定义的 RequestMapping,就可通过 /mappings 进行在线监控
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String sayHello() {
        return "Hello Hello SpringBoot!";
    }
}

image

  • 同时,IDEA 也提供了 Actuator 的查看功能:
    image

SpringBoot Admin

概述

  • SpringBoot Admin 是一个开源社区项目,用于管理和监控 SpringBoot 应用程序。

  • SpringBoot Admin 有两个角色:客户端(Client)和服务端(Server)。

  • 应用程序作为 SpringBoot Admin Client,向 Spring Boot Admin Server 进行注册。

  • SpringBoot Admin Server 的 UI 界面包含了 SpringBoot Admin Client 的 Actuator Endpoint 上的一些监控信息。

使用步骤

  • admin-server

    1. 创建 admin-server 模块
    2. 导入依赖坐标 admin-starter-server
      image
      image
    3. 在引导类上启用监控功能 @EnableAdminServer
  • admin-client

    1. 创建 admin-client 模块
    2. 导入依赖坐标 admin-starter-client
    3. 配置相关信息:server 地址等
    4. 启动 server 和 client 服务,访问 server
  • 界面使用

image

image

SpringBoot 项目部署

SpringBoot 项目开发完毕后,支持两种方式部署到服务器:

官方推荐方式:jar 包部署

步骤一:将项目打成 jar 包

  • 构建命令:
mvn clean install -U -DskipTests
# clean:清理历史 target 数据
# -U:拉起最新依赖
# -DskipTests:跳过测试
  • 执行结果:
[INFO] Installing F:\IdeaProjects\ApiTestPlatform\target\ApiTestPlatform-0.0.1-SNAPSHOT.jar to G:\software\apache-maven-3.8.1\repos\com\example\ApiTestPlatform\0.0
.1-SNAPSHOT\ApiTestPlatform-0.0.1-SNAPSHOT.jar

步骤二:使用 java -jar 命令启动内置 Tomcat 进行部署

java -jar F:\IdeaProjects\ApiTestPlatform\target\ApiTestPlatform-0.0.1-SNAPSHOT.jar

war 包部署

  1. 在项目 pom 中配置 war
  2. 启动类进行以下修改:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

// 继承 SpringBootServletInitializer
@SpringBootApplication
public class SpringbootDeployApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDeployApplication.class, args);
    }

    // 重写以下方法
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootDeployApplication.class);
    }
}
  1. 将构建后的 war 包部署到外置 Tomcat 即可。