我正在使用Prometheus的Summary
指标来收集API调用的延迟。我只是调用Thread.sleep(1000)
来模拟1秒的api呼叫延迟值,而不是进行实际的API调用 - 这使得Summary
保持值为.01(延迟时间为1秒)。但是,例如,如果我在同一分钟内调用Thread.sleep(1000)
两次,那么Summary
指标的最终值为.02(延迟时间为2秒),而不是两个单独的.01延迟实例,恰好发生在同一分钟。我的问题是普罗米修斯查询。我目前使用的普罗米修斯查询是:rate(my_custom_summary_sum[1m])
。
我的普罗米修斯查询应该是什么,这样我就可以看到每个Thread.sleep(1000)
调用的延迟。截至目前,Summary
指标收集并显示每分钟的总延迟总和。如何显示每次调用Thread.sleep(1000)
的延迟(即API请求)?
private static final Summary mySummary = Summary.build()
.name("my_custom_summary")
.help("This is a custom summary that keeps track of latency")
.register();
Summary.Timer requestTimer = mySummary.startTimer(); //starting timer for mySummary 'Summary' metric
Thread.sleep(1000); //sleep for one second
requestTimer.observeDuration(); //record the time elapsed
这是此查询产生的图表:Prometheus graph
Prometheus是一个基于指标的监控系统,它关注整体性能和行为 - 而不是个人请求。
您正在寻找的是基于日志的系统,例如Graylog或ELK堆栈。