首页 文章

Dropwizard指标(Meter)3.1.0 InfluxDB 0.9.x Grafana坚持最新 Value

提问于
浏览
1

正如 Headers 所示,我使用上面的堆栈来深入了解特定方法调用的频率 .

这是在代码中设置收集指标的方法:

public void searchProducts(Query query) {
    Meter meter = metricRegistry.meter(MetricRegistry.name("search.products"));
    meter.mark();

    // perform search
    // ...
  }

这就是Grafana中图表的配置方式:

graph configuration in Grafana

这就是生成的图形的样子:

resulting graph

如您所见,当没有方法调用时,该行将停留在最新值 . 当我停止应用程序时,会发生几次下降到0(在开始时有两个大的“驼峰”,在结尾处有一个) .

在最后一个标记之后经过一段时间后,该线是否应该降至0?例如 . 启动应用程序,发生几个方法调用,每次方法调用之间传递1秒,然后在大约30秒后,该行应该返回到0并保持在那里 . 像这样:

  • 00:00 应用程序启动(行位于 0

  • 00:01 方法调用(行转到 1

  • 00:02 方法调用(行转到 2

  • 00:03 方法调用(行转到 3

  • 00:04 没有任何反应(行停留在 3

  • 00:05 没有任何反应(行停留在 3

  • ......

  • 00:30 没有任何反应(行下降到 0

相反,在这种情况下,Meter似乎表现得像Counter - 应用程序整个生命周期的递增值 .

EDIT: 以下是图表的样子,即使使用显示样式 - >零点模式 - > null,因为设置为零 . 图表看起来与显示样式完全相同 - >空点模式 - >空设置 .

enter image description here

UPDATE :抱歉延迟回复 - 最近才回到这个问题 . 我找到了问题的根本原因 - 底层数据库是InfluxDB,带有自定义Metrics Reporters(InfluxDB没有官方版本),并且记者逻辑中存在错误 .

谢谢大家的帮助 .

3 回答

  • 1

    对于图形,“显示样式”选项卡下有一个选项,您可以在其中选择如何处理空值 . 如果选择了连接,那么您将看到您描述的行为 . 还有另外两个选项,null - > no line或null as zero - > line drop to zero .

    在旧版本的Grafana上,该选项是调用Null点模式(docs here

    以下是Grafana 3.1中选项的屏幕截图:

    Null value drop down

  • 1

    这种类型的输出可能来自使用默认的ExponentiallyDecayingReservoir . 这将导致在没有最近更新时返回最新值 . 水库永远不会被冲洗干净 .

    潜在的解决方案包

    • 切换到滑动时间窗库(性能最差,最容易实现)
      每次报告/记录数据时
    • 刷新值

    可以在这里找到更深入的帖子(http://taint.org/2014/01/16/145944a.html) .

  • 0

    您可以使用仪表或计数器来总结或计算每个任意间隔的计数(总计):

    hitcount(perSecond(your.count), '1day')
    

    Afaik它完成了所有的黑魔法 . 包括但不限于 summarize(scaleToSeconds(nonNegativeDerivative(your.count),1), '1day') ,并且还应根据碳的保留期(一个或多个)进行缩放,这些保留期落入选定的聚合间隔 .

相关问题