正如标题所暗示的,我正在使用上面的堆栈来深入了解特定方法调用随时间变化的频率。
这是在代码中设置收集指标的方式:
public void searchProducts(Query query) {
Meter meter = metricRegistry.meter(MetricRegistry.name("search.products"));
meter.mark();
// perform search
// ...
}
这是在 Grafana 中配置图形的方式:
这就是结果图的样子:
如您所见,当没有方法调用时,该行停留在最新值。当我停止应用程序时,发生了几次下降到 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一样——在应用程序的整个生命周期中递增值。
编辑:即使设置了“显示样式”->“零点模式”->“零”,这也是图表的样子。图表看起来与显示样式 -> 空点模式 -> 空设置完全相同。
更新:很抱歉延迟回复 - 直到最近我才回到这个问题。我发现了问题的根本原因——底层数据库是带有自定义 Metrics Reporters 的 InfluxDB(InfluxDB 没有官方的),并且报告逻辑中存在错误。
感谢大家的帮助。