【SpringBoot2—Actuator指标监控】

文章目录

  • Actuator
    • 1. maven依赖
    • 2. 查看监控信息
      • 方式1:通过http请求查看
      • 方式2:通过 JMX
    • 3. 端点配置
    • 3. health 端点
      • 3.1 自定义health端点
    • 4. info端点
      • 4.1 编写类自定义info端点
      • 4.2 配置文件自定义 info
    • 5. Metrics端点
      • 5.1 metrics 指标查看
      • 5.2 自定义metrice端点

Actuator

SpringBoot 版本为2.6.1
官网文档地址

1. maven依赖

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>

2. 查看监控信息

默认情况下通过http不能访问全部的端点,只有healthy是开放的,通过jconsole我们可以看到所有的端点信息

这里特别提一下在 2.6.1 版本中 info 端点已经不是默认开放了,官方文档截图如下
【SpringBoot2—Actuator指标监控】_第1张图片

方式1:通过http请求查看

http://localhost:8080/actuator/**
**代表端点的名称如 health等
【SpringBoot2—Actuator指标监控】_第2张图片

【SpringBoot2—Actuator指标监控】_第3张图片

方式2:通过 JMX

打开cmd 输入 jconsole
选择你当前启动的SpringBoot应用,直接找你项目启动类的类名即可,然后按照下图的步骤就可以看到所有端点的信息
【SpringBoot2—Actuator指标监控】_第4张图片
【SpringBoot2—Actuator指标监控】_第5张图片
【SpringBoot2—Actuator指标监控】_第6张图片

3. 端点配置

# 表示开放http访问所有端点,然后去除env和beans
management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude: "env,beans"

management:
  endpoints:
    enabled-by-default: false # 表示禁用所有端点,端点被禁用代表着在applicationContent中没有了这个端点,并不只是单纯的无法访问
  endpoint:
    info:
      enabled: true # 开启info端点,

3. health 端点

这是较为常用的一个端点,我们可以自己重写健康检查的机制,例如系统中可以对接了一些第三方的应用或服务,我们可以自己写一些方法去判断第三方服务是否正常(例如调取第三方的一个接口判断网络通信是否正常以及接口服务是否正常),最终得到一个当前系统健康状态的指标

3.1 自定义health端点

配置文件开启查看health详细信息

management:
  endpoint:
    health:
      enabled: true
      show-details: always # 需要设置为always

继承 AbstractHealthIndicator 并重写 doHealthCheck 方法,记得要加 @Component 注解

@Component
public class ThirdServiceHealthIndicator extends AbstractHealthIndicator {

    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
    	// 这里省略具体判断的细节,直接返回一些信息
        builder.up();
        builder.status(Status.UP);
        builder.withDetail("网络状态", "正常");
        builder.withDetail("接口调用时长", "100ms");
    }
}

访问 health 端点 http://localhost:8080/actuator/health

可以看到查询出来的信息丰富了很多之前只有 status 一项,我们自定义的health信息也有了

这里注意如果我们的类名是以 HealthIndicator 为后缀,那么展示时的名称就会去掉 HealthIndicator。否则就按照完整的类名展示
【SpringBoot2—Actuator指标监控】_第7张图片

4. info端点

4.1 编写类自定义info端点

实现 InfoContributor 接口并实现 contribute 方法
记得要加 @Component 注解

@Component
public class ThirdServiceInfoContributor implements InfoContributor {

    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("服务名称", "阿里云")
                .withDetail("版本", "1.0.0");
    }
}

访问 info 端点 http://localhost:8080/actuator/info
【SpringBoot2—Actuator指标监控】_第8张图片

4.2 配置文件自定义 info

# info 下的节点名称都是自定义的
info:
  app:
    encoding: "@project.build.sourceEncoding@"
    java:
      source: "@java.version@"
      target: "@java.version@"
  username: zhangsan   
  age: 18

注意这里的 info 和上面的 info 端点不同,访问 /actuator/info 是查询不到的,需要访问 env 端点 http://localhost:8080/actuator/env
【SpringBoot2—Actuator指标监控】_第9张图片

5. Metrics端点

5.1 metrics 指标查看

访问 http://localhost:8080/actuator/metrics 可以看到默认就提供了很多的指标信息
【SpringBoot2—Actuator指标监控】_第10张图片
我们如果想要查看某一个指标的信息,只要在路径后加上指标的名称即可

例如 http://localhost:8080/actuator/metrics/application.started.time
【SpringBoot2—Actuator指标监控】_第11张图片

5.2 自定义metrice端点

创建一个类,使用 @Configuration 注解标记为配置类

@Configuration(proxyBeanMethods = false) 
public class MyMeterRegistryConfiguration {

    @Bean 
    public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
    	// 添加一个名为my.visit.count的计数指标,调用 increment 就会加1
        return (registry) -> registry.counter("my.visit.count", "tag1", "a", "tag2", "b")
                .increment();
    }
}

访问 http://localhost:8080/actuator/metrics/my.visit.count 可以看到我们定义的value 和 tags
【SpringBoot2—Actuator指标监控】_第12张图片

你可能感兴趣的:(SpringBoot,SpringBoot,actuator)