springBoot指标监控 - Actuator

一、引入使用

服务端处理

1.引入必要依赖

        <!-- boot-admin服务端依赖,版本 -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!--搭配安全框架,使得进入服务监控需要密码-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

前两个依赖是 springBoot 集成 Actuator 的必要可视化依赖,它依赖传递了 spring-boot-starter-actuator 的依赖,
使得 actuator 可用。
security 则是为了更加安全,登录可视化页面需要账号密码。

2.配置yml文件

server:
  port: 7017 #端口,也是页面访问的端口
spring:
  profiles:
    active: dev
  #服务名
  application:
    name: service-actuator
  #进入页面的权限密码
  security:
    user:
      name: admin
      password: 123456
  boot:
    admin:
      ui:
        #页面标题
        title: '模块学习服务监控'

3.启动类配置

启动类上添加注解 @EnableAdminServer

/**
 * @author byChen
 * @date 2022/8/30
 */
@EnableAdminServer
@SpringBootApplication
public class Actuator7016 {
    public static void main(String[] args) {
        SpringApplication.run(Actuator7016.class, args);
    }
}

5.配置权限验证


import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;

/**
 * 服务注册,设置账号密码
 */
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    private final String adminContextPath;

    public SecurityConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");

        http.authorizeRequests()
                //1.配置所有静态资源和登录页可以公开访问
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .anyRequest().authenticated()
                .and()
                //2.配置登录和登出路径
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                //3.开启http basic支持,admin-client注册时需要使用
                .httpBasic().and()
                .csrf().disable();
    }
}

6.启动服务

直接启动服务端的服务,然后访问页面 http://localhost:7017 端口为自己配置的端口

在这里插入图片描述
登录进入

在这里插入图片描述
可以看到,页面正常展示出来,但是因为没有客户端服务注册进去,因此显示 0 个服务,接下来创建客户端,并配置

客户端处理

这里客户端指一般的微服务模块,即需要统一交给actuator来管理的模块

1.引入依赖

客户端需要引入客户端依赖

        <!--服务监控注册-->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.2.2</version>
        </dependency>

2.配置yml文件

server:
  port: 7015
spring:
  datasource:
    url: jdbc:mysql://47.93.244.193:3306/module-learn?serverTimezone=GMT%2B8
    username: webUser
    password: chenchong
    driver-class-name: com.mysql.cj.jdbc.Driver
  profiles:
    active: dev
    #服务名
  application:
    name: service-cache
  #  注册服务监控
  boot:
    admin:
      client:
        url: http://localhost:7017 #这里端口即是 actuator 服务端的端口号
        username: admin #因为服务端配置了密码验证,所以这里客户端也得输入账号密码
        password: 123456
# #可以控制服务监控哪个不显示
management:
  endpoint:
    health:
      show-details: always # 这里写always 全部信息都展示

  # 左侧展示所有信息
  endpoints:
    web:
      exposure:
        include: "*" # 展示全部信息
# 如果想要在页面远程查看日志信息,需要指定文件输出地址保存起来
logging:
  file:
    name: D:/logs/cache.log

3.启动客户端服务,进行注册

在这里插入图片描述
在这里插入图片描述
可以看到,已经有一个客户端应用注册进去了,点击应用墙里面的应用,进入详细指标信息页面:

在这里插入图片描述
在这里插入图片描述
到这里配置完成

接下来学习各部分的含义内容

二、内容介绍

1.端点介绍

在这里插入图片描述

缓存

在这里插入图片描述

健康

在这里插入图片描述
如何有其他的软件应用也实现了健康指标,在这里也会显示,比如redis

在这里插入图片描述

配置属性信息

在这里插入图片描述
这里展示应用中,配置文件(yml,或者properties) 中全部可配置的属性信息(包含自己配置的+环境默认配置的)

在这里插入图片描述

日志

调整日志级别
在这里插入图片描述
远程查看日志
在这里插入图片描述

JVM

在这里插入图片描述

线程、cpu、进程

在这里插入图片描述

定时任务

在这里插入图片描述
因为没有配置定时任务,因此这里没有展示

方法映射

在这里插入图片描述
显示controller层接口映射,包含自定义的+actuator 自己的

2.邮件通知

引入邮件依赖

在服务端上引入邮件依赖

        <!--监控邮件通知-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

配置yml文件

  mail:
    host: smtp.qq.com # 确定使用qq邮箱服务
    username: 133442345736@qq.com
    #授权码
    password: xxxxxxxxxxxx
  boot:
    admin:
      ui:
        #页面标题
        title: '模块学习服务监控'
      notify:
        mail:
          #发件人
          from: 133442345736@qq.com
          #收件人,多个用 , 分隔开
          to: 99123456536@qq.com

使用

当有服务停掉,会自动发邮件到收件人邮箱
在这里插入图片描述
在这里插入图片描述

### 集成 Spring Boot ActuatorSpring Boot 项目中 要在 Spring Boot 项目中集成 `spring-boot-starter-actuator`,可以通过以下步骤实现。 #### 添加依赖 首先,在项目的 `pom.xml` 文件中添加 `spring-boot-starter-actuator` 的依赖。此模块是 Spring Boot 提供的一个功能强大的工具,用于监控和管理应用程序[^2]。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> ``` 由于 Spring Boot 的父工程通常已经管理了版本信息,因此不需要在子模块中显式指定版本号[^3]。 #### 配置 Actuator 端点 在 `application.properties` 或 `application.yml` 中配置 Actuator 相关的端点设置。默认情况下,并非所有端点都启用,需要手动开启所需的端点。 例如,在 `application.yml` 中启用所有端点: ```yaml management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS ``` 上述配置启用了所有 Web 端点,并允许健康检查显示详细信息。 #### 启动应用并访问端点 完成依赖添加和配置后,启动 Spring Boot 应用程序。Actuator 提供了许多内置端点,例如 `/actuator/health`、`/actuator/info`、`/actuator/metrics` 等。这些端点可用于获取应用程序运行时状态的信息[^5]。 #### 自定义端点(可选) 如果需要自定义端点,可以创建一个类并继承 `AbstractEndpoint` 或使用 `@Endpoint` 注解来定义新的端点。这样可以扩展 Actuator 的功能以满足特定需求。 ### 示例代码 以下是简单的 Spring Boot 主类示例: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootStarterActuatorApplication { public static void main(String[] args) { SpringApplication.run(SpringBootStarterActuatorApplication.class, args); } } ``` #### 常见端点说明 | 端点 | 描述 | |------|------| | `/actuator/health` | 显示应用程序的健康状况 | | `/actuator/info` | 显示应用程序的信息 | | `/actuator/metrics` | 显示应用程序的指标信息 | | `/actuator/beans` | 显示 Spring 应用上下文中创建的所有 Bean | | `/actuator/env` | 显示当前 JVM 的环境变量 | 通过这些端点,开发人员和运维团队可以更好地监控和管理应用程序的运行状态[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值