Azure 应用程序见解 - 从采样中排除自定义事件

Azure application insights - exclude custom event from sampling

我有一个 .NET Core Web 应用程序正在向 Application Insights 发送一些自定义事件遥测数据。 自定义事件使用遥测客户端实例发送,例如像那样:

  telemetryClient.TrackEvent(Names.FileDownload, new Dictionary<string, string>()
            {
                {PropertyKeys.ProjectName, project.ProjectName},
                {PropertyKeys.ProjectUri, project.ProjectUri},
                {PropertyKeys.IsLocal, isLocal.ToString() },
                {PropertyKeys.FileSize, fileSize?.ToString() },
            });

大多数发生的数据事件都是大量的,我不关心所有这些,所以我将采样设置为 50%。

但是,我有一个或两个事件很少发生,对于那些事件,我希望跟踪每次发生的事件。

启用采样后,我发现这个关键事件几乎从未被存储过。当我禁用采样时,它开始工作。

是否有可能以某种方式将某些遥测项目排除在采样过滤之外?

此致,
巴尔托斯

是的,这是可能的。您可以编写一个自定义 TelemetryInitializer,将您要保留的遥测项目的 SamplingPercentage 设置为 100。

示例代码如下:

public class MyTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        #write your own logic for somecondition
        if(somecondition)
        {
            ((ISupportSampling)telemetry).SamplingPercentage = 100;
        }
    }
}

有关详细信息,请参阅 article 部分中的 "There are certain rare events I always want to see. How can I get them past the sampling module?"。