SpringBoot 监控、项目部署

SpringBoot 监控

概述

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

使用

使用步骤

  1. 导入依赖坐标:
    image
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 访问 //localhost:8080/acruator
    image
    image

  2. 路径详解:

路径 描述
/beans 描述应用程序上下文里全部的 Bean,以及它们的关系
/env 获取全部环境属性
/env/{name} 根据名称获取特定的环境属性值
/health 报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供
/info 获取应用程序的定制信息,这些信息由 info 打头的属性提供
/mappings 描述全部的 URI 路径,以及它们和控制器(包含 Actuator 端点)的映射关系
/metrics 报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数
/metrics/{name} 报告指定名称的应用程序度量值
/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 包(官方推荐)

  1. 将项目打成 jar 包。
  2. 使用 java -jar 命令启动内置 Tomcat 进行部署。

方式二:war 包

  1. 将项目改成 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. 部署到外置 Tomcat 即可。