Azure Application Insight 自定义遥测失败

Azure Application Insight Custom Telemetry Failures

我在 Azure 函数中使用 Telemetry Client 记录自定义遥测事件。几乎每次触发某个事件时它都会记录自定义事件,但它偶尔会失败,说千分之一。我可以确定没有异常被抛出,事件被成功处理,没有任何错误。这是我如何记录自定义遥测的示例。

        try
            {
                _telemetryClient.TrackEvent("MyCustomEventName",
                    new KeyValuePair<string, string>("CustomEvent",
                        JsonSerializer.Serialize(customEventObject)));
            }
            catch (Exception e)
            {
                _logger.LogError(e,"Failed to log CustomEventObject");
            }

如果遥测客户端失败并且记录器未显示异常,我将记录异常。 Telemetry Client 是否有任何原因无法发送事件?如果是,如何诊断和处理?

我在 .net core 3.1 和 Azure Function Runtime 3.1.3.0

您可以使用以下两种采样方式来诊断和处理派发事件失败:

  • 自适应采样 自动调整从您的 ASP.NET/ASP.NET Core 应用中的 SDK 发送的遥测量,和 Azure Functions。这是使用 ASP.NET 或 ASP.NET Core SDK 时的默认采样。自适应采样目前仅适用于 ASP.NET 服务器端遥测和 Azure Functions。

  • 固定速率采样减少了从您的ASP.NET或ASP.NET核心或[=39=发送的遥测量] 服务器和您用户的浏览器。您设定费率。客户端和服务器将同步它们的采样,以便在搜索中,您可以在相关页面视图和请求之间导航。

默认添加了两个AdaptiveSamplingTelemetryProcessor节点,一个包含Event类型采样,一个不包含Event类型采样。

<TelemetryProcessors>
    <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
        <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        <ExcludedTypes>Event</ExcludedTypes>
    </Add>
    <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
        <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        <IncludedTypes>Event</IncludedTypes>
    </Add>
</TelemetryProcessors>

可以参考Types of Sampling, How can I track telemetry that's not automatically collected?, and open GitHub issue at How do you correctly get TelemetryClient dependency injected in ASP.NET Core?