0


SpringBoot 指标监控——Actuator

1、SpringBoot Actuator

1.1、简介

  • 每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等
  • Actuator场景,对每个微服务快速引用即可获得生产级别的应用监控、审计等

1.2、导入 Actuator 开发场景

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

1.3、开发场景自动导入依赖

2、SpringBoot Actuator 使用

2.1、Actuator 访问权限

在默认状态下,Web方式只能访问Health和info端点

ID

JMX

Web

auditevents

Yes

No

beans

Yes

No

caches

Yes

No

conditions

Yes

No

configprops

Yes

No

env

Yes

No

flyway

Yes

No

health

Yes

Yes

heapdump

N/A

No

httptrace

Yes

No

info

Yes

Yes

integrationgraph

Yes

No

jolokia

N/A

No

logfile

N/A

No

loggers

Yes

No

liquibase

Yes

No

metrics

Yes

No

mappings

Yes

No

prometheus

N/A

No

scheduledtasks

Yes

No

sessions

Yes

No

shutdown

Yes

No

startup

Yes

No

threaddump

Yes

No

2.2、Web访问权限修改

management:
  endpoints:
    enabled-by-default: true #暴露所有端点信息
    web:
      exposure:
        include: '*'  #以web方式暴露

2.3、查看端点状态

访问:localhost:8000/actuator 及 localhost:8000/actuator/端点名称

1)访问 localhost:8000/actuator

2)访问 localhost:8000/actuator/health

3、Actuator Endpoint

3.1、默认可监控端点

其中常用端点为:Health监控状况、Metrics运行时指标、Loggers日志记录

ID

描述

auditevents

暴露当前应用程序的审核事件信息。需要一个

AuditEventRepository组件

beans

显示应用程序中所有Spring Bean的完整列表。

caches

暴露可用的缓存。

conditions

显示自动配置的所有条件信息,包括匹配或不匹配的原因。

configprops

显示所有

@ConfigurationProperties

env

暴露Spring的属性

ConfigurableEnvironment
flyway

显示已应用的所有Flyway数据库迁移。
需要一个或多个

Flyway

组件。

health

显示应用程序运行状况信息。

httptrace

显示HTTP跟踪信息(默认情况下,最近100个HTTP请求-响应)。需要一个

HttpTraceRepository

组件。

info

显示应用程序信息。

integrationgraph

显示Spring

integrationgraph

。需要依赖

spring-integration-core

loggers

显示和修改应用程序中日志的配置。

liquibase

显示已应用的所有Liquibase数据库迁移。需要一个或多个

Liquibase

组件。

metrics

显示当前应用程序的“指标”信息。

mappings

显示所有

@RequestMapping

路径列表。

scheduledtasks

显示应用程序中的计划任务。

sessions

允许从Spring Session支持的会话存储中检索和删除用户会话。需要使用Spring Session的基于Servlet的Web应用程序。

shutdown

使应用程序正常关闭。默认禁用。

startup

显示由

ApplicationStartup

收集的启动步骤数据。需要使用

SpringApplication

进行配置

BufferingApplicationStartup

threaddump

执行线程转储。

3.2、Health Endpoint

3.2.1、Health EndPoint作用

  • 健康检查端点,常用于云平台,平台会定时的检查应用的健康状况。
  • 需要Health Endpoint,为平台返回当前应用的一系列组件健康状况。

3.2.2、Health EndPoint配置

1)Health EndPoint默认显示较少的信息。

2)设置Health 显示情况

  endpoint:
    health:
      #设置health节点显示详细信息,默认为不显示详细信息
      show-details: always

3)修改后显示信息

3.3、Metrics Endpoint

3.3.1、Metrics Endpoint功能

  • 提供详细的、层级的、空间指标信息

4、管理Endpoints

4.1、开启与禁用Endpoints

1)默认所有的Endpoint除过shutdown都是开启的

2)需要开启或者禁用某个Endpoint:

    配置模式: **management.endpoint.****<endpointName>.enabled = true**

** ** 配置示例:

management:
  endpoint:
    beans:
      enabled: true

3)禁用所有的Endpoint然后手动开启指定的Endpoint

management:
  endpoints:
    enabled-by-default: false
  endpoint:
    beans:
      enabled: true
    health:
      enabled: true

5、定制 Endpoint

5.1、定制化health信息

5.1.1、配置Health显示情况

Health Endpoint详细界面显示配置

management:
    health:
      enabled: true
      show-details: always #总是显示详细信息。可显示每个模块的状态信息

5.1.2、定制Health Endpoint

添加信息:

1)继承 AbstractHealthIndicator 类

2)定义参数 Health.Builder builder

3)向参数 builder 中添加状态及相关信息

@Component
//类名截去HealthIndicator后,为显示时的组件名
public class MyComHealthIndicator extends AbstractHealthIndicator {

    //真实的检查方法
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        // 获取链接进行测试
        Map<String, Object> map = new HashMap<>();

        //检查完成
        if (1 == 1) {
            //健康
            builder.status(Status.UP);
            map.put("count", 1);
        } else {
            //不健康
            builder.status(Status.OUT_OF_SERVICE);
            map.put("err", "连接超时");
            map.put("time", 3000);
        }

        builder.withDetail("code", 100)
               .withDetails(map);
    }
}

查看Health Endpoint信息:

    成功信息:

    失败信息: 

5.2、定制info信息

    两种定制方式

5.2.1、编写配置文件

(笔者springboot版本为2.6.6,使用配置文件未成功)

info:
  appName: boot-admin
  version: 2.0.1
  mavenProjectName: @project.artifactId@  #使用@@可以获取maven的pom文件值
  mavenProjectVersion: @project.version@

5.2.2、 编写InfoContributor

1)继承 public class ExampleInfoContributor implements InfoContributor

2)定义 Info.Builder builder 参数

3)向builder中添加参数信息

@Component
public class ExampleInfoContributor implements InfoContributor {

    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("msg", "你好")
               .withDetail("hello", "uclass")
               .withDetails(Collections.singletonMap("key", "value"));

    }
}

5.3、定制Metrics信息

5.3.1、利用service层构造器,在注册中心中添加cityService.saveCity.count指标

@Service
public class CityServiceImpl implements CityServices {

    @Autowired
    CityMapper cityMapper;

    Counter counter;

    //利用构造器,在注册中心中添加cityService.saveCity.count指标
    public CityServiceImpl(MeterRegistry meterRegistry) {
        //指标中心注册新的指标项
        counter = meterRegistry.counter("cityService.saveCity.count");
    }

    public void saveCity(City city) {
        counter.increment();
        cityMapper.insertCity(city);
    }
}

5.3.2、在配置类中新建配置,添加指标

@ServletComponentScan(basePackages = "com.uclass.thymeleaf")
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {
    @Bean
    MeterBinder queueSize(Queue queue) {
        return (registry) -> Gauge.builder("queueSize", queue::size).register(registry);
    }
}
    //利用构造器,在注册中心中添加cityService.saveCity.count指标
    public CityServiceImpl(MeterRegistry meterRegistry) {
        //指标中心注册新的指标项
        counter = meterRegistry.counter("cityService.saveCity.count");
    }

5.3.3、 添加后的结果

5.4、自定义新端点

5.4.1、利用 @Endpoint(id = "myservice") 注解

  • id属性代表新增的端点名称
  • 利用@ReadOperation @WritOperation注解,在端点中添加信息
@Component
@Endpoint(id = "myservice")
public class MyServiceEndPoint {

    @ReadOperation
    public Map getDockerInfo () {
        //端点的读操作
        return Collections.singletonMap("dockerInfo", "docker start...");
    }

    @WriteOperation
    private void restartDocker(){
        System.out.println("docker restarted....");
    }
}

5.4.2、新增监控端点效果

标签: spring boot java

本文转载自: https://blog.csdn.net/weixin_44302046/article/details/124310990
版权归原作者 我的眼里只有学习 所有, 如有侵权,请联系我们删除。

“SpringBoot 指标监控——Actuator”的评论:

还没有评论