Prometheus采集Java程序指标信息
Posted YOYOFx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus采集Java程序指标信息相关的知识,希望对你有一定的参考价值。
采集Java程序JVM信息
创建 Spring Boot Application 应用程序
进行 https://start.spring.io 使用版本 Spring Boot v2.7.11和JDK 17,并创建一个具有以下依赖项的简单JAVA应用程序。
- Spring Boot Actuator (Ops)
- Prometheus (Observability)
- Spring Web (Optional: only to create a simple REST controller.)
Maven POM 会生成以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<scope>runtime</scope>
</dependency>
接下来,我们需要公开一个执行器端点,Prometheus将通过该端点以Prometheus能够理解的格式收集指标数据。为此,我们需要添加以下属性。
management.endpoints.web.exposure.include=prometheus
接下来,让我们添加一个简单的控制器和一个简单的接口端点。
@RestController
@SpringBootApplication
public class MonitorApplication
public static void main(String[] args)
SpringApplication.run(MonitorApplication.class, args);
@GetMapping("/hello")
public String hello()
return "Hello World!";
现在,让我们启动应用程序并打开以下URL。
http://localhost:8080/actuator/prometheus
打开上述端点后,您将发现以下格式的一些指标数据,例如:
jvm_memory_used_bytesarea="heap",id="G1 Survivor Space", 1005592.0
作者: YOYOFx
出处:https://www.cnblogs.com/maxzhang1985/p/12673160.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
Prometheus 使用 PushGateway 进行数据上报采集
参考技术A Pushgateway是prometheus的一个重要组件,利用该组件可以实现自动以监控指标,从字面意思来看,该部件不是将数据push到prometheus,而是作为一个中间组件收集外部push来的数据指标,prometheus会定时从pushgateway上pull数据。【注意】如果client一直没有推送新的指标到pushgateway,那么Prometheus获取到的数据是client最后一次push的数据,直到指标消失(默认5分钟)。
Prometheus本身是不会存储指标的,但是为了防止pushgateway意外重启、工作异常等情况的发送,在pushgateway处允许指标暂存,参数--persistence.interval=5m,默认保存5分钟,5分钟后,本地存储的指标会删除。
使用pushgateway的理由:
1、prometheus默认采用pull模式,由于不在一个网络或者防火墙的问题,导致prometheus 无法拉取各个节点的数据。
2、监控业务数据时,需要将不同数据汇总,然后由prometheus统一收集
pushgateway的缺陷:
1、多个节点的数据汇总到pushgateway,当它宕机后影响很大
2、pushgateway可以持续化推送所有的监控数据,即使监控已经下线,还会获取旧的监控数据。需手动清理不需要的数据
3、重启后数据丢失
1、docker 启动pushgateway
2、访问9091端口( http://pushgatewayIP:9091 )
3、在prometheus中添加pushgateway节点
打开prometheus的配置文件
作用:如果没有设置instance标签,Prometheus服务器也会附加标签,否则instance标签值会为空
重启prometheus后,登陆web UI,查看prometheus的targets
4、API 方式 Push 数据到 PushGateway
接下来,我们要 Push 数据到 PushGateway 中,可以通过其提供的 API 标准接口来添加,默认 URL 地址为:http://<ip>:9091/metrics/job/<JOBNAME>/<LABEL_NAME>/<LABEL_VALUE>,其中 <JOBNAME> 是必填项,为 job 标签值,后边可以跟任意数量的标签对,一般我们会添加一个 instance/<INSTANCE_NAME> 实例名称标签,来方便区分各个指标。
以上是关于Prometheus采集Java程序指标信息的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot 使用Prometheus采集自定义指标数据
SpringBoot 使用Prometheus采集自定义指标数据