Spring Boot 集成 Prometheus

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)

发布了378 篇原创文章 · 获赞 1419 · 访问量 632万+

猜你喜欢

转载自blog.csdn.net/catoop/article/details/103969116