【SpringBoot2—Actuator指标监控】

Actuator

SpringBoot 版本为2.6.1
官网文档地址

1. maven依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

2. 查看监控信息

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

这里特别提一下在 2.6.1 版本中 info 端点已经不是默认开放了,官方文档截图如下
在这里插入图片描述

方式1:通过http请求查看

http://localhost:8080/actuator/**
**代表端点的名称如 health等
在这里插入图片描述

在这里插入图片描述

方式2:通过 JMX

打开cmd 输入 jconsole
选择你当前启动的SpringBoot应用,直接找你项目启动类的类名即可,然后按照下图的步骤就可以看到所有端点的信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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。否则就按照完整的类名展示
在这里插入图片描述

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
在这里插入图片描述

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
在这里插入图片描述

5. Metrics端点

5.1 metrics 指标查看

访问 http://localhost:8080/actuator/metrics 可以看到默认就提供了很多的指标信息
在这里插入图片描述
我们如果想要查看某一个指标的信息,只要在路径后加上指标的名称即可

例如 http://localhost:8080/actuator/metrics/application.started.time
在这里插入图片描述

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
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值