Azure Function 未将 LogMetric 遥测记录到 Application Insights

问题描述 投票:0回答:3

我在 v2 SDK 上有一个 3 周前的函数,并使用开箱即用的 App Insights 支持,即只需设置环境变量并......神奇。

我确实读到,默认情况下它不会将 Information 级别日志发送到 AppInsights,这看起来是正确的,因为我看不到任何信息跟踪,但我确实看到我使用自定义消息注销时偶尔出现的错误。

但对于指标来说,它是破碎的。我可以在日志中看到一些遥测数据。很奇怪。

看。


现在看看这些奇怪的日志。

...看到那些与我的代码中的

n/a
行相匹配的
LogMetric
了吗?


当我明确搜索其中之一时,什么也没找到。


如果我深入研究那些

n/a
日志。

...它们很空。


是我的问题还是这一切都很可疑?

如何以有效的方式记录函数中的指标?

azure azure-functions azure-application-insights
3个回答
3
投票

首先,对于指标,您的意思是自定义指标吗?如果是,那么您应该在应用见解的

customMetrics
表中找到它。

第二,您使用什么方法发送指标?从你的代码来看,

this.Logger?.LogMetric
方法的实现是什么?

要发送指标,您可以使用 TrackMetric(刚刚使用此方法测试,并且有效)或 GetMetric 方法。

使用 TrackMetric(已弃用,但仍然可以使用)/ GetMetric(推荐)方法的示例代码:

            TelemetryConfiguration.Active.InstrumentationKey = "your key";
            TelemetryClient client = new TelemetryClient();            
            client.TrackMetric("my metric", 60);
            client.GetMetric("my metric").TrackValue(89);
            client.Flush();

1
投票

就我而言,host.json 文件中的设置排除了访问 Application Insights 的指标。指标正在

Information
级别记录,我最初将我的配置为
Warning
级别。

"logging": {
    "logLevel": {
        "Function.<function name>": "Information", //<--won't see metrics if set to Warning
        ...

请参阅此处,了解有关配置日志记录级别的更多信息。


0
投票

嗯,一开始,这可能会让人感觉断章取义,但这就是我身上发生的事情。我的代码绝对正确,但问题是我的 Application Insights 连接到了一个 Azure Log Analytics 工作区,该工作区连接了许多其他 App Insights,因此会吸收大量数据。而且,Log Analytics 工作区每日上限为 5 GB。

因此,

即使您的代码正确但 Log Analytics 工作区有任何限制,您也不会收到任何错误,并且您的代码将无缝工作,但应用程序中不会显示任何痕迹、信息、错误、事件等见解。

建议检查 App Insights 或 Log Analytics 工作区中是否启用了任何此类设置。另一件可以检查的事情是网络隔离,如果虚拟网络访问配置部分的两个选项都有

,有时会阻止来自公共来源的遥测。

© www.soinside.com 2019 - 2024. All rights reserved.