SpringBoot 监控、项目部署
SpringBoot 监控
概述:
SpringBoot 自带监控功能 Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean 加载情况、配置属性、日志信息等。
使用步骤:
- 导入依赖坐标:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
-
URI 详解:
路径 | 描述 |
---|---|
/beans | 描述应用程序上下文里全部的 Bean,以及它们的关系 |
/env | 获取全部环境属性 |
/env/ | 根据名称获取特定的环境属性值 |
/health | 报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供 |
/info | 获取应用程序的定制信息,这些信息由 info 打头的属性提供 |
/mappings | 描述全部的 URI 路径,以及它们和控制器(包含 Actuator 端点)的映射关系 |
/metrics | 报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数 |
/metrics/ | 报告指定名称的应用程序度量值 |
/trace | 提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等) |
- 添加基础监控信息:
# 添加 info 信息
info.name=zhangsan
info.age=23
# 开启健康检查的完整信息
management.endpoint.health.show-details=always
- 添加完整监控信息:
# 将所有的监控 endpoint 暴露出来
management.endpoints.web.exposure.include=*
// 如下定义的 RequestMapping,就可通过 /mappings 进行在线监控
@RestController
public class HelloController {
@RequestMapping("/hello")
public String sayHello() {
return "Hello Hello SpringBoot!";
}
}
- 同时,IDEA 也提供了 Actuator 的查看功能:
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:
- 创建 admin-server 模块
- 导入依赖坐标 admin-starter-server
- 在引导类上启用监控功能 @EnableAdminServer
-
admin-client:
- 创建 admin-client 模块
- 导入依赖坐标 admin-starter-client
- 配置相关信息:server 地址等
- 启动 server 和 client 服务,访问 server
-
界面使用:
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 包部署
- 在项目 pom 中配置 <package>war</package>
- 启动类进行以下修改:
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);
}
}
- 将构建后的 war 包部署到外置 Tomcat 即可。