【问题标题】:Azure Functions missing rows in AppInsightsAzure Functions 在 AppInsights 中缺少行
【发布时间】:2020-04-02 10:41:46
【问题描述】:

我需要记录 Azure 中函数应用的 所有 调用(无论成功与否)的信息。我第一次尝试只使用 log.LogInformation() 并发现消息不是从所有函数调用中写入的。通过一些研究,我了解到在高负载场景中(我的场景是高负载场​​景),有时运行时决定不记录一些成功的调用。很公平。

然后我尝试使用自定义事件进行日志记录并捕获我需要的信息:

                    TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
                    TelemetryClient tc = new TelemetryClient(config);
                    Dictionary<string, string> props = new Dictionary<string, string>();
                    props["msgid"] = msgid;
                    tc.TrackEvent("MsgToBenefitsService", props);

仍然没有运气,在我进行的一些运行中,我在 1000 次调用的应用洞察中只看到了 82 行。我找不到任何说明可能未记录自定义事件的文档,所以我预计我会看到 1000 次调用记录了 1000 个事件。

上面的日志记录代码有什么问题吗?是否有任何选项可以保证我可以将信息从调用写入 AppInsights ?或者我是否坚持必须从函数应用程序中明确记录自己?

作为背景,此函数应用有一个服务总线触发器,用于从主题中读取消息。我正在使用运行时的 v3。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 可能由于采样而过滤掉了结果?您可以手动排除事件,请参阅the docs
  • 我没有明确的答案,但我建议将 TelemetryClient 设置为静态成员变量,而不是为每个请求重新创建一个新变量。您在大量情况下从您的函数生成大量出站连接,而这些出站连接是有限的。

标签: azure function appinsights


【解决方案1】:

请在 host.json 中禁用采样:​​

"applicationInsights": {
  "samplingSettings": {
    "isEnabled": false
  }
}

applicationInsights.samplingSettings
Sampling in Application Insights

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2023-03-19
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多