Prometheus是一个根据应用的metrics来进行监控的开源工具。其原理使用主动采集服务暴露的指标接口的方式拉取指标数据,所以需要给需要被监控的服务暴露数据指标接口,对于SpringBoot服务,集成起来非常简单,如下:
一、为pom添加依赖
<!-- prometheus -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
二、配置文件添加配置
management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
# 开启Micormeter
management.metrics.distribution.percentiles-histogram.http.server.requests=true
# Micormeter bucket指标配置,千分尺分段记录
management.metrics.distribution.sla.http.server.requests=100ms,200ms,400ms
# Micormeter quantile指标配置
management.metrics.distribution.percentiles.http.server.requests=0.5,0.9,0.95,0.99,0.999
三、访问验证
可以看到输出很多指标数据,表示完成。
四、集成 JVM (Micrometer)
JVM (Micrometer) 是一个 dashboard 模板,官网地址: https://grafana.com/grafana/dashboards/4701
SpringBoot 集成它只需要做一点简单的改动即可,添加 MeterRegistryCustomizer
如下:
public class StartApplication {
…省略代码…
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(
@Value("${spring.application.name}") String applicationName) {
return (registry) -> registry.config().commonTags("application", applicationName);
}
}
然后在 application 配置文件中添加配置:
management.metrics.tags.application=${spring.application.name}
特别提醒!!!
特别提醒!!!
特别提醒!!!
开启 actuator
后要注意要防护,请勿将开启 actuator
的服务直接对外。如果你需要这么做,可以新增一个过滤器对 /actuator
进行过滤,只允许内网IP地址访问。
(如果单纯的开启 security 可能为很多第三方监控系统带来麻烦,所以请选择适合自己的方案)
包含但不限于以下接口都是在开启 actuator 之后可以访问的(默认统一前缀 /actuator
):
序号 | 接口 | Method | 说明 |
---|---|---|---|
1 | /health/{component}/{instance} | GET | 报告程序的健康指标,这些数据由HealthIndicator实现类提供 |
2 | /info | GET | 获取程序指定发布的信息,这些信息由配置文件中info打头的属性提供 |
3 | /configprops | GET | 描述配置属性(包含默认值)如何注入到bean |
4 | /beans | GET | 描述程序中的bean,及之间的依赖关系 |
5 | /env | GET | 获取全部环境属性 |
6 | /env/{name} | GET | 根据名称获取指定的环境属性值 |
7 | /mappings | GET | 描述全部的URI路径,及和控制器的映射关系 |
8 | /metrics/{requiredMetricName} | GET | 统计程序的各种度量信息,如内存用量和请求数 |
9 | /httptrace | GET | 提供基本的http请求跟踪信息,如请求头等 |
10 | /threaddump | GET | 获取线程活动的快照 |
11 | /conditions | GET | 提供自动配置报告,记录哪些自动配置通过,哪些没有通过 |
12 | /loggers/{name} | GET | 查看日志配置信息 |
13 | /auditevents | GET | 查看系统发布的事件信息 |
14 | /caches/{cache} | GET/DELETE | 查看系统的缓存管理器,另可根据缓存管理器名称查询;另DELETE操作可清除缓存 |
15 | /scheduledtasks | GET | 查看系统发布的定时任务信息 |
16 | /features | GET | 查看Springcloud全家桶组件信息 |
17 | /refresh | POST | 重启应用程序,慎用 |
18 | /shutdown | POST | 关闭应用程序,慎用 |
19 | /dump | GET | 获取线程活动的快照 |
20 | /metrics | GET | 报告各种应用程序度量信息,比如内存用量和HTTP请求计数 |
21 | /trace | GET | 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等) |
(END)