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



我有一个。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%。

然而,我有一两个很少发生的事件,对于这些事件,我希望每次发生都能被跟踪。

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

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

问候,
Bartosz

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

这是示例代码:

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

有关更多详细信息,请参阅本文中的"有些罕见事件我一直想看。我如何才能让它们通过采样模块?"一节。

最新更新