我正在使用依赖项'io.micrometer:micrometer-registry-prometheus'来计算平均请求处理时间。为此,我编写了以下java代码
public void processingTypeEvent(String eventType, Runnable runnable) {
meterRegistry
.timer("myapplication.processingTimeEvent", EVENT_TYPE_TAG, eventType)
.record(runnable);
}
因此,使用该代码, timer 会测量可运行对象(请求方法)所花费的时间,并计算该方法被调用的次数。结果,生成了两个可以在Datadog中使用的指标:
"prometheus.myapplication_processingTimeEvent_seconds.sum" and "prometheus.myapplication_processingTimeEvent_seconds.count"
然后,为了计算平均请求处理时间,我在datadog中创建了一个“查询值”图,并使用了 avg by 函数。但是,DataDog似乎没有计算出平均时间,而是计算了每种事件类型的平均请求时间的总和,并显示了以秒为单位的不断增加的平均请求时间(即错误,因为我登录了Java代码,请求时间都在100毫秒以下;因此,平均值必须在毫秒范围内。
所以我想我做错了什么。我的问题是如何使用DataDog图计算平均响应时间?
作为解决方案,我还尝试了使用datadog函数“添加查询”将计数除以总和。简而言之
prometheus.myapplication_processingTimeEvent_seconds.sum DIVIDED BY prometheus.myapplication_processingTimeEvent_seconds.count
但是一些同事认为,这不是计算平均值的适当方法,它应该能够使用DataDog开箱即用地计算平均值。 您如何看待该解决方案?
致谢