相关疑难解决方法(0)

为什么读取千分尺测量值有时会返回 NaN?

我正在尝试以编程方式读取仪表,如下所示:

获取注册表:

MeterRegistry registry = Metrics.globalRegistry.getRegistries().iterator().next();
Run Code Online (Sandbox Code Playgroud)

读取测量值:

    double systemCpuUsage = registry.get("system.cpu.usage").gauge().measure().iterator().next().getValue();
Run Code Online (Sandbox Code Playgroud)

问题是有时我会得到NaN.

我在文档中读到了这一点:为什么我的仪表报告 NaN 或消失?

但我不确定我该怎么做。另外,我正在阅读 Spring Boot 执行器的“内置”仪表(由 公开management.metrics.enable.process.cpu.usage=true),因此我无法更改它的构造。

java spring-boot micrometer spring-micrometer

5
推荐指数
1
解决办法
3920
查看次数

如何使用 Spring Boot 和 Micrometer 创建自定义仪表?

我编写了一个 Spring Boot 应用程序,我想使用Micrometer向 Prometheus 公开自定义指标。这是一个代码片段,我在其中递增计数器(有效)并尝试设置几个仪表(无效):

@Scheduled(cron = "*/2 * * * * *") // run every 2 seconds
private void logTemperature() throws UnknownHostException {

    // get measurement
    SensorReader sensorReader = new SensorReader();
    SensorReading sensorReading = sensorReader.getSensorReading();

    Metrics.counter("measurements").increment();
    Metrics.gauge("fahrenheit", sensorReading.getFahrenheit());
    Metrics.gauge("humidity", sensorReading.getHumidity());

    // do stuff with measurement
    // ...

}
Run Code Online (Sandbox Code Playgroud)

完整的源代码在这里:https : //github.com/alexwoolford/htu21d_logger/tree/master/htu21d-logger-spring

对象中的fahrenheit字段sensorReading是 a float。输出中存在仪表,但值是NaN(即不是数字):

# HELP measurements_total  
# TYPE measurements_total counter
measurements_total 82.0
...
# HELP humidity  
# …
Run Code Online (Sandbox Code Playgroud)

spring-boot prometheus micrometer

2
推荐指数
1
解决办法
3155
查看次数