接入介绍
在使用 Spring Boot 作为开发框架时,需要监控应用的状态,例如 JVM/Spring MVC 等。
针对Spring Boot应用,社区提供了开箱即用的Spring Boot Actuator框架,方便Java开发者进行代码埋点和监测数据收集、输出。
从Spring Boot 2.0开始,Actuator将底层改为Micrometer,同时提供了更强、更灵活的监测能力。
Micrometer是一个监测门面,可以类比成监测界的Slf4j ,借助Micrometer,应用则能够对接各种监测系统。例如,AppOptics、Datadog、Elastic、InfluxDB以及Prometheus监控等。
Micrometer在将Prometheus监控指标对接到Java应用的指标时,支持应用开发者用三个类型的语义来映射:
Micrometer指标类型 | Prometheus监控指标类型 | 典型用途 |
---|---|---|
Counter | Counter | 计数器,单调递增场景。例如,统计PV和UV,接口调用次数等。 |
Gauge | Gauge | 持续波动的变量。例如,资源使用率、系统负载、请求队列长度等。 |
Timer | Histogram | 统计数据分布。例如,统计某接口调用延时的P50、P90、P99等。 |
DistributionSummary | Summary | 统计数据分布,与Histogram用途类似。 |
- Micrometer中的Counter指标类型对应于Prometheus监控中的Counter指标类型,用来描述一个单调递增的变量。如某个接口的访问次数、缓存命中或者访问总次数等。Timer在逻辑上蕴含了Counter,即如果使用Timer采集每个接口的响应时间,必然也会采集访问次数。因此无需为某个接口同时指定Timer与Counter两个指标。
- MicroMeter中的Gauge指标类型对应于Prometheus监控中的Gauge指标类型,用来描述在一个范围内持续波动的变量。如CPU使用率、线程池任务队列数等。
- MicroMeter中的Timer指标类型对应于Prometheus监控中的Histogram,用来描述与时间相关的数据。如某个接口RT时间分布等。
- Micrometer中的DistributionSummary指标类型对应Prometheus监控中的Summary指标类型 ,与Histogram类似,Summary也是用于统计数据分布的,但由于数据的分布情况是在客户端计算完成后再传入Prometheus监控进行存储,因此Summary的结果无法在多个机器之间进行数据聚合,无法统计全局视图的数据分布,使用起来有一定局限性。
操作步骤
SpringBoot为2.0+,可以直接选择 io.micrometer 的依赖包来实现;更低版本的不能使用这种方式,需要使用官方提供的client来实现,本篇博客未介绍。
修改应用的依赖及配置
步骤1:修改 pom 依赖
项目中已经引用 spring-boot-starter-web 的基础上,在 pom.xml 文件中添加 actuator/prometheus Maven 依赖项。
注意,spring-boot-dependencies-2.4.8.pom中已经添加了micrometer-bom的依赖,已经包含了micrometer.version的定义。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>${micrometer.version}</version>
</dependency>
步骤2:修改配置
编辑 resources 目录下的 application.yml 文件,修改 actuator 相关的配置来暴露 Prometheus 协议的指标数据。
management:
endpoints:
web:
exposure:
include: prometheus # 打开 Prometheus 的 Web 访问 Path
metrics:
# 在 Prometheus 中添加特别的 Labels
tags:
# 必须加上对应的应用名,因为需要以应用的维度来查看对应的监控
application: ${spring.application.name}
或者是 application.properties 文件:
# 以应用的维度来查看对应的监控
management.metrics.tags.application=${spring.application.name}
# 打开 Prometheus 的 Web 访问 Path
management.endpoints.web.exposure.include=prometheus
本地验证
本地启动项目后,可以通过 http://localhost:8080/actuator/prometheus 访问到 Prometheus 协议的指标数据,说明相关的依赖配置已经正确。
prometheus配置
prometheus安装,可以参考下面的博客:
修改prometheus.yml文件,添加下面的内容:
- job_name: application
metrics_path: "/actuator/prometheus"
static_configs:
- targets: ["111.111.0.88:8080"]
labels:
instance: application
保存后,执行:curl -X POST http://localhost:9090/-/reload
,打开Prometheus界面上的 Status -> Targets,就可以看到刚添加上去的job。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155598.html