我正在使用Azure函数中的以下C#代码向Application Insights(Azure Monitor?)发送自定义指标。
(它测量排队的服务总线消息和执行功能代码之间的经过时间)
this.TelemetryClient.GetMetric("QueueTriggerLagMs").TrackValue((now - serviceBusMessage.SystemProperties.EnqueuedTimeUtc).TotalMilliseconds);
我希望这可以由SDK进行汇总,并在门户中显示为汇总,但我认为它是汇总。
Microsoft.ApplicationInsights.TelemetryClient.TrackMetric不是发送度量的首选方法。指标应始终在发送之前的一段时间内预先汇总。使用GetMetric(..)重载之一获取用于访问SDK预聚合功能的指标对象。如果要实现自己的预聚合逻辑,则可以使用TrackMetric()方法发送结果聚合。如果您的应用程序要求每次都发送单独的遥测项目,而又不跨时间进行汇总,则可能有事件遥测的用例;请参阅TelemetryClient.TrackEvent(Microsoft.ApplicationInsights.DataContracts.EventTelemetry)。
来源https://docs.microsoft.com/en-gb/azure/azure-monitor/app/api-custom-events-metrics
这很有趣,在输入此问题时,我重新阅读并注意到该Pullquote中的措词令人困惑,并且我需要自己进行汇总。
使用GetMetric(..)重载之一获取用于访问SDK预聚合功能的指标对象。
听起来像是通过使用该方法而不是TrackMetric
来进行预先聚合,但我不认为这就是他们的意思。
我认为内置的行为是为我聚合,而不是强迫每个开发人员在未知的某个批处理时间段内编写相同的代码进行聚合。
我完全迷路了。
有人知道我应该怎么做才能追踪那个滞后时间吗?
与问题有关。
Azure Function is not logging LogMetric telemetry to Application Insights