我已使用Prometheus存储performance metrics并以百分位数(例如95%的响应时间)查询结果。我用prometheus-net发射了它们。
Azure AppInsights中的等效项是什么?
我看到AppInsights / Kusto中有percentile functions,但是当我使用GetMetric(“ blah”)。TrackValue(42)时,它存储了Count,Min,Max,Sum和StdDev,这不是直方图我在普罗米修斯(Prometheus)中惯用的存储方式。
for(int i=0; i < 500; i++) {
//Write some metrics
telemetryClient.GetMetric("blah").TrackValue(42); //real data isn't constant
}
customMetrics
| where name == "blah"
//| summarize avg(value), percentiles(value, 50, 95) by bin(timestamp, 2m)
答案 0 :(得分:1)
在默认聚合中使用GetMetric().TrackValue()
API时,不会存储每个单独的值,在1分钟后生成一个值,并将该值以sum / count / min / max / ...分布发送给AI 。因此,以后无法在Analytics(分析)中绘制原始数据点的百分位数。
目前GetMetric().TrackValue()
API可用的聚合很少,直方图/ tdigest也不是其中一种。您可以在AI SDK GitHub repository上提交功能请求(或贡献)。
目前的解决方法是使用较旧的API,默认情况下,该API提交时间点度量标准,但不进行汇总:TrackMetric()
或TrackEvent()
中的一系列度量。这将增加发送的遥测项目的数量(每个度量标准将单独发送,而不会汇总1分钟的值),但这将为您提供每个值,以便在必要时在Analytics(分析)中执行百分位数汇总。