gpt4 book ai didi

azure - TelemetryClient 在 Application Insights 中产生不一致的结果

转载 作者:行者123 更新时间:2023-12-02 23:48:07 27 4
gpt4 key购买 nike

我尝试过在刷新和不刷新的情况下跟踪自定义指标。但是,这些指标仅间歇性地显示在 Application Insights 的“自定义”部分下。第一个问题:是否需要在每次“TrackMetric(metric)”调用后运行“flush()”才能将遥测数据发送到 Application Insights?第二:为什么会出现这种间歇性的行为?我一次只编写一个指标,因此我并没有通过数千个单独的调用使 Application Insights 重载。这是我的代码(来自一个简单的控制台应用程序):

    public class Program
{
public static void Main(string[] args)
{
var telemetryClient = new TelemetryClient()
{
Context = { InstrumentationKey = "{{hidden instrumentation key}}" }
};
var metric = new MetricTelemetry
{
Name = "ImsWithContextMetric2",
Sum = 42.0
};
telemetryClient.TrackMetric(metric);
telemetryClient.Flush();
}
}

我还在 Application Insights 中遇到了这种奇怪的行为,其中我添加的自定义指标显示在“不可用/已弃用的指标”部分下。我什至没有添加一个名为“进程 CPU(所有核心)”的指标,它会在“自定义”部分下弹出。任何想法为什么会发生这种奇怪的行为?:

enter image description here

最佳答案

Is it required to run "flush()" after every single "TrackMetric(metric)" call in order for the telemetry to be sent to Application Insights?

由于您使用控制台应用程序将事件发送到 Application Insights(这可能是短暂的),因此每隔一段时间调用 .Flush() 绝对是一个好习惯。 SDK 使用 InMemoryChannel 发送遥测数据,并使用内存队列批量发送。所以调用.Flush()以便强制推送数据非常重要。一个好的做法可能是在事件发生后添加一些等待:

telemetryClient.Flush();
Thread.Sleep(1000);

更多阅读:Flushing data , Ensure you don't lose telemetry

However, the metrics only intermittently shows up in Application Insights under the "Custom" section. Why is there this intermittent behavior? I'm only writing one metric at a time, so it's not as if I'm overloading Application Insights with thousands of separate calls.

有时,Azure 门户中显示的指标会出现延迟。它也可能长达几分钟。但如果您设置正确,则不会超过 throttling limit ,和adaptive sampling被禁用,那么遥测就没有理由是间歇性的。但是,如果您仍然觉得有问题,请启动 fiddler 跟踪(确保从非浏览器 session 捕获)并检查是否有调用发送至 dc.services.visualstudio.com。确保响应为 200 OK 并且服务器是否接受了这些项目。

I'm also getting this strange behavior in Application Insights in which the custom metric I add shows up under a "Unavailable/deprecated Metrics" section.

您使用的 SDK 版本是什么?我刚刚尝试了相同的场景,自定义指标正确显示。

And a metric that I didn't even add called "Process CPU (all cores)" pops up under the "Custom" section.

“进程CPU”是performance counter用于跟踪 CPU 利用率。我相信只有当应用程序在 IIS 或 Azure 上运行时,SDK 才能跟踪这些计数器。它可能是在您创建 Application Insights 资源时在内部添加的。您可以忽略它,因为它没有可绘制图表的数据。

希望这有帮助!

关于azure - TelemetryClient 在 Application Insights 中产生不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43791604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com