当前位置: 首页 > 知识库问答 >
问题:

如何从Java(Spring boot)应用程序向Prometheus公开度量

杨腾
2023-03-14

我的Spring Boot应用程序只是有一个计数器指标。我只是不知道如何将这些信息发送给普罗米修斯。我正在使用Maven(构建工具)和Spring Boot(Java)。

共有3个答案

邵旺
2023-03-14

Spring防尘套2.0.0

检查Spring Boot属性文件,确保已启用度量和Prometheus导出。

例如:

management.endpoints.web.exposure.include=*
management.endpoint.metrics.enabled=true
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
储思聪
2023-03-14

要集成普罗米修斯,请在POM中添加以下依赖项。XML

<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_spring_boot</artifactId>
    <version>0.1.0</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_servlet</artifactId>
    <version>0.1.0</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_hotspot</artifactId>
    <version>0.1.0</version>
</dependency>

在您的SpringBoot应用程序类中,添加Annonation@EnablePrometheusEndpoint

在您的控制器中,您可以定义一个自定义计数器

private static final Counter myCounter = Counter.build()
        .name("CounterName")
        .labelNames("status")
        .help("Counter desc").register();

在你的服务中,你可以为你的计数器设置适当的逻辑,普罗米修斯会自动拉动计数器

@RequestMapping("/myService")
    public void endpoint() {
           String processingResult = yourLogic(myCounter);
            myCounter.labels("label1",processingResult).inc();
            }
谭景明
2023-03-14

Prometheus和Graphite一样,是一个时间序列存储引擎。

然后,Grafana可以查询普罗米修斯生成图形和警报。

https://prometheus.io/docs/introduction/faq/

正如留档所引用的,普罗米修斯与其他指标存储系统不同,使用(有争议的)“拉”模型。

这意味着必须下载/安装一个(独立的)Prometheus服务器。然后,该服务器定期向应用程序服务器列表(例如JavaSpringBoot服务器)发出HTTP GET请求(拉取)以获取(内存中)存储的指标。

裁判:https://prometheus.io/docs/introduction/faq/#why-do-you-pull-rather-than-push?

因此,(Spring Boot)应用程序必须公开Prometheus服务器可以从中提取的度量终点(默认为/度量)。

参考号:https://github.com/prometheus/client_java

因此,Google上有很多可用的文档,但这是一个(可以说是复杂的)拓扑结构,以及SoundCloud和普罗米修斯(Prometheus)的人关于为什么像其他所有度量框架所采用的那样,“拉”模型优于“推”模型的论点。

 类似资料:
  • 在将我的应用程序(堆栈spring boot、camel、hystrix)从spring Boot1.5迁移到spring Boot2之后。我无法让hystrix度量显示在/Acturet/Prometheus中。 正如许多解决方案和教程所建议的那样,我已经确定了以下依赖项 并添加了以下配置类,我确信它正在实例化,正如我在Spring Boot自动配置日志中所检查的: 为了避免假设这样的教程/答案

  • 我能找到的唯一东西就是这个问题及其相关的promise。 但我还是无法获得prometheus出口的缓存指标。我尝试设置一些属性: 但没有真正起作用。我可以看到Hazelcast缓存管理器正在启动,注册缓存管理器bean等等--但是和都没有显示任何统计信息。使用注释填充缓存。这在Spring Boot1.5中起作用了--我想是通过Hazelcast通过JMX公开它的度量,然后prometheus

  • 我想启用cassandra cqlsession度量。当尝试注册cqlsession度量时,它提供可选的。springboot应用程序中的empty()。这里我使用的是cassandra datastax java驱动程序4.6。 这是我的代码: 正在引发IllegalArgumentException错误。 当参考卡桑德拉税务局的官方文件时(https://docs.datastax.com/e

  • 我正试图为以下内容做POC: 但是,它不能从我的本地应用程序连接到Azure上的Kafka。 你能建议我在这里做错了什么吗?我将如何从本地应用程序连接到运行在azure(或任何云)上的容器中的kafka?

  • 我有一个简单的Maven Spring-Boot应用程序(Java),并使用Prometheus从其中收集度量信息。我在pom文件中有所有必要的Prometheus依赖项,并且我在@SpringBootApplication类中包含了@EnablePrometheusEndpoint注释,但是当我运行应用程序并尝试访问localhost:8080/Prometheus(我认为这是Prometheu

  • 我已经用Camel 3.9配置了一个Spring Boot2应用程序,以便通过endpoint使用Micrometer公开度量标准,并正确返回一些Camel度量标准: 通过研究mbeans,我可以看到还有一些我也感兴趣的其他度量(例如,路由平均处理时间) 问题是,我如何使Spring靴执行器+千分尺+普罗米修斯包括那些额外的度量? CamelContextConfiguration: applic