Grafana singlestat和transformNull

时间:2018-10-05 00:02:34

标签: spring-boot grafana graphite spring-boot-actuator

我将Grafana 5.0.3与Graphite数据源一起使用,并且在使用transformNull函数的Singlestat中遇到一些问题。下面引用的数据源来自Spring Boot 2 Micrometer的http指标,因此我无法修改生成此数据的代码。

我有一个跟踪自上次服务器重新启动以来HTTP 500错误的图形。

方案1-数据变为空

当我重新启动服务器并且没有发生新的HTTP 500错误时,会发生这种情况: graph with nulls

我还有一个Singlestat显示该图的当前值。如果我使用transformNull将null数据转换为0s,则它将按预期工作(在sumSeries之前或之后的transformNull显示相同的结果): singlestat 1 with tranformnull

如果我省略了transformNull,那么我似乎会得到上一次收集数据时的总和,无论当前值应为0的事实是什么: enter image description here

方案1解决方案

我应该使用transformNull,因为这将说明当前数据为空。

方案2-数据为非空

在发生错误并且服务器仍在运行之后,会发生这种情况: enter image description here

如果我的Singlestat不包含transformNull函数,则它将按预期工作。我想这是因为它显示了收集数据的最后时刻的数据: enter image description here

但是,如果我包含了transformNull,我会看到数据相当频繁地归零。我的猜测是,由于数据是从Graphite中提取的,因此有时Grafana会绘制图形直到“现在”,但是“现在”的Graphite数据不存在。我的Spring Boot服务器每15秒将数据推送到Graphite。 enter image description here

方案2解决方案

我不应该不要使用transformNull,因为那样可以确保从上次收集数据时获取数据。

问题

如何在Singlestat中准确显示此数据?这是我将数据从Spring Boot推送到Graphite的速率和Grafana刷新间隔的神奇组合吗?

1 个答案:

答案 0 :(得分:1)

我不知道任何底层解决方案,但这对我有用。我使用了 transformNull 来确保最新的样本具有正确的数字,然后更改了时间范围,使其不是实时的,但延迟了30秒或一分钟。例如。对于“过去1小时”,我将窗口从“从:现在-1小时,到:现在”更改为“从:现在-1小时,到:现在-30秒”。

它不能解决问题,但是对我来说这是一种解决方法。