问题

我使用Prometheus存储性能指标并将结果查询为百分位(例如.95百分位响应时间).我使用 prometheus-net 发出它们.

Azure Appinsights中的等价物是什么?

我看到在Appinsights / Kusto中有百分比函数,但是当我使用GetMetric(“blah”).TrackValue(42)时,它存储Count,Min,Max,Sum和stddev,这不是我在Prometheus中使用的直方图bucking方法.

 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)
 

这是我用随机值记录的一些数据.值列是sum,这不正确,所以我不知道如何在这个数据上正确地执行百分比. enter image description here

  最佳答案

当使用默认聚合时使用GetMetric().TrackValue() API时,每个单独的值都不存储,一个值在1分钟后产生,该值用sum / count / min / max / ...分布发送到AI.因此,以后不可能在分析中绘制原始数据点的百分比.

目前只有很少的聚合可用于GetMetric().TrackValue() API,直方图/摘要不是其中之一.您可以在 AI SDK GitHub存储库上提交功能请求(或贡献).

当时的解决方法是使用旧的API,默认情况下在没有聚合的情况下提交point-intime度量:TrackMetric()TrackEvent()中的一系列测量.这将增加发送的遥测项目数量(每个度量将单独发送,而不需要1分钟聚合值),但如有必要,这将为您提供在分析中执行百分点聚合的每个值.