问题标签 [spring-micrometer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
445 浏览

graphite - Spring boot 2 micrometer 到 statsd 前缀不附加到指标

我已将 spring boot 1.x 迁移到 spring boot 2,并使用千分尺进行度量。之后可以通过 statsd 查看石墨中的指标。但是,我看不到它的前缀

之后,我通过在 spring boot 2 中按照 Configure micrometer-registry-statsd尝试基本原型。但是,看不到带有前缀的指标。它仅从注册表名称中显示

配置:

management: health: defaults: enabled: true metrics: enable: example: remote: true export: atlas: enabled: false statsd: enabled: true host: xx.xxx.xx.xx port: xxxx flavour: xxxx step: 10s **prefix: abc.xy** security: enabled: false

当我尝试打印 statsdConfig 属性时,前缀显示为默认值“statsd”。之后我也在代码中设置了前缀属性。那也没有帮助。

请分享有关如何附加 statsd.prefix 的详细信息

0 投票
1 回答
892 浏览

java - 千分尺与 DynaTrace 的集成

我有一个需要将指标导出到 DynaTrace 的 Spring Boot 应用程序。我从 Micrometer 的网站上找到了一个不错的库 (io.micrometer:micrometer-registry-dynatrace:latest.release),其中包含设置库并开始使用它的说明。按照他们的指示后,我注意到 Tomcat 无法启动,我不确定为什么。在我的 build.gradle 文件中,我正在导入“io.micrometer:micrometer-registry-dynatrace:latest.release”。我已经通过每个步骤来尝试隔离问题,虽然它主要是希望我提供 DynaTrace 配置项,但此时 Tomcat 无法启动。添加所有内容后,这是我从堆栈跟踪中得到的结果:org.springframework.boot.web.server.WebServerException:无法启动嵌入式 Tomcat。

0 投票
1 回答
2396 浏览

java - 带弹簧靴和千分尺的百分位数

我正在用 Spring boot 2 编写一个应用程序。我的方法尝试生成值,直到该值是唯一的。每个唯一生成的值都会添加到缓存中。通常,它应该在第一次尝试时生成值,但是应用程序运行的次数越多 - 生成的值重复的可能性就越大,并且需要再次生成它。

我想要指标,显示值的百分位数tryToGenerate

假设我的代码如下所示:

我正在使用千分尺,但不知道应该从什么开始。因为为了计算百分位数,我需要存储的不是单个值,而是值的数组

0 投票
1 回答
386 浏览

spring-boot - Spring boot for Micrometer registers filter in nested Prometheus registry not Global,在度量创建期间被忽略?

我正在尝试为反应流添加一个过滤器:

成功向 IoC 注册:

过滤器在 Prometheus 注册表中注册,但是当使用它时命中指标时,metrics()它不使用 Prometheus 注册表而是使用全局注册表,Spring Boot 不会在全局级别注册过滤器:

在此处输入图像描述

因此,当我使用getOrCreateMeter方法时,我的过滤器列表为空: 在此处输入图像描述

我可以看到metrics()调用:

所以指标注册表总是全球性的?因为我没有找到对第二个构造函数的任何调用。所以我不能指定要使用的注册表?

我知道如果这样做:

它会起作用,但这不是春天的方式。任何人都可以帮助用 IoC 做正确的事吗?

0 投票
1 回答
1838 浏览

prometheus - 从 Spring Boot 2.1.6 升级到 2.2.2 时,Prometheus 不导出 Kafka Consumer 数据

我们将 Spring Boot 版本从 2.1.6 升级到 2.2.2。在 2.1.6 的Prometheus端点中看到的某些属性在 2.2.2 中不可见。

  • kafka_consumer_records_consumed_total_records_total
  • kafka_consumer_records_lag_records
  • kafka_consumer_fetch_latency_max_seconds
  • kafka_consumer_bytes_consumed_total_bytes_total

但是,此数据正在 MBean 中注册。

kafka_consumer_records_consumed_total_records_total的示例

在此处输入图像描述

我错过了一些配置吗?如何将 MBean 中可用的这些数据导出到执行器端点(“ /prometheus”)?

更新:我们在两个版本中使用的 Prometheus 版本是相同的。

POM.xml(更改前)

POM.xml(修改后——只升级了Spring Boot)

0 投票
1 回答
2177 浏览

spring-boot - GraphQL + Spring Boot:如何收集(错误)指标?

我最近一直致力于在我们的 GraphQL 网关中添加监控指标。

我们正在为网关使用graphql-spring-boot 启动器。

阅读以下文档后,我设法将基本的 graphql.timer.query.* 指标发送到 Datadog

到目前为止,我所取得的成就是,当我发送 GraphQL 查询/突变时,我会相应地收集请求计数和时间。例如发送下面的查询

我会看到指标graphql.timer.query.count/graphql.timer.query.sum带有标签operationName=HelloWorldQuery

它工作得很好,直到我想测试一个有错误的查询。我意识到没有与失败查询相关的指标/标签。例如,如果我上面的查询返回空数据和一些 GraphQL 错误,我仍然会 collect graphql.timer.query.count (operationName=HelloWorldQuery),但没有其他标签可以告诉我该查询存在错误。

在网关中,我已经实现了一个 custom GraphQLErrorHandler,所以我想也许我应该在那个类中添加错误计数器(通过 MeterRegistry),但是我无法operationName从 GraphQLError 类型中简单地获取。我能得到的最好的是 error.getPath() ,它给出了方法名称(例如greeting)而不是自定义查询名称(HelloWorldQuery- 与graphql.timer.query.*提供的一致)。

我的问题是,如何解决上述问题?通常收集 GraphQL 查询指标(包括错误)的最佳方式是什么?

-------------------更新-------------------

2019-12-31我在这里 阅读了有关 GraphQL Instrumentation 的更多信息,并检查了graphql-spring-boot repo 中的MetricsInstrumentation实现,我想通过在其中添加错误度量来扩展 MetricsInstrumentation 类。

2020-01-02 我试图摄取我的 CustomMetricsInstrumentation 类,但没有运气。有内部自动配置接线,我不能在中间插入我的自动配置。

0 投票
2 回答
1934 浏览

apache-kafka - 如何使用千分尺+普罗米修斯在springboot中为生产者收集指标?

我正在尝试使用带有 Springboot 的千分尺来收集 Kafka 消费者和生产者的指标。但无法在千分尺库中找到该类。

消费者财产是:

props.put(ConsumerConfig.METRIC_REPORTER_CLASSES_CONFIG,“io.micrometer.core.instrument.binder.kafka.KafkaConsumerMetrics”);

但是如何为生产者收集指标,因为 io.micrometer.core.instrument.binder.kafka.KafkaProducerApiMetrics不存在于千分尺库中。

props.put(ConsumerConfig.METRIC_REPORTER_CLASSES_CONFIG,"io.micrometer.core.instrument.binder.kafka.KafkaProducerApiMetrics");

如果有人可以提供帮助,将非常感激。

车坦。

0 投票
2 回答
3620 浏览

spring-boot - 如何使用 Spring Boot 在运行时配置 Micrometer 的监控系统

我是一般指标的新手,尤其是千分尺,所以这可能是一个愚蠢的问题:

Micrometer 在主页上将自己描述为“门面”“没有供应商锁定”、“想想 SLF4J,但用于度量”。具有“对 [...] Netflix Atlas 的内置支持”。文档说它包含在 Spring Boot 2 中。

所以我期望的是能够在启动时配置监控系统——就像我使用 SLF4J 一样。因此,此文档描述了management.metrics.export.atlas.enabledSpring Boot 的设置(以及其他设置)。但即使使用此设置,自动连接 a 也会MeterRegistry registry失败,如下所示:

[snip] 中构造函数的参数 4 需要找不到类型为“io.micrometer.core.instrument.MeterRegistry”的 bean。

行动:

考虑在你的配置中定义一个“io.micrometer.core.instrument.MeterRegistry”类型的bean。

谷歌把我带到了 Baeldung,在那里我读到了一些micrometer-registry-atlas依赖以及提供MeterRegistry类型的 bean AtlasMeterRegistry。这行得通,但这不是我所说的“没有供应商锁定的外观”,但我想我做错了?

如何在运行时提供监控系统,在 Atlas 和任何其他系统之间切换而无需重新编译?

0 投票
2 回答
1011 浏览

prometheus - 千分尺/普罗米修斯:如何测量处理持续时间?

我想测量处理一些数据需要多长时间:我的应用程序以固定速率从给定源读取数据。在我存储的每个圆圈之前Instant.now()。我读取数据,将单个时间戳添加到每个条目。数据被存储、转换,就在我通过 WebSockets 发送出去之前,我想测量now()与初始时间戳之间的持续时间。

我试过了

但可视化这让我只使用processingDuration_seconds_count,_max_sum. count并且sum随着时间的推移而增加(当然),max大部分时间都是恒定的。那么我如何看到更高和更低的负载平台呢?我试图irate(processingDuration_seconds_sum[10m])至少看到跳跃,但由于irate()仅使用两个数据点,我仍然无法轻松识别较长时间的高负载。另外:图中的值约为 0.6,而记录的 ms 约为 5-10,所以我在这里失去了实际值。

所以我尝试使用 aGauge代替——它应该允许增加和减少值:

我以为这会在记录的毫秒范围内上下波动,但它一直是 92。

如何测量数据的整个时间?

0 投票
2 回答
3580 浏览

spring-boot - Spring Boot REST 方法中的 Micrometer @Timed 和 Prometheus 错误

我正在尝试使用 Micrometer 的 @Timed 注释从我的 Spring Boot 应用程序向 Prometheus 发送数据,并且看到了奇怪的行为。我在普罗米修斯中看到了我的方法的数据,但我也看到它在某些情况下失败,但以下例外。我包含了必要的库,并按照 Spring Boot 配置说明添加了 Micrometer @Timed 注释。在构建指标的键时,感觉就像是 Spring Boot / Micrometer 错误。我的定时注释很简单:

有什么想法我可能做错了吗?我很乐意回复额外的配置,但不想在这里粘贴我的整个项目。堆栈跟踪: