我有一个 .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 ,在“我总是想看到某些罕见事件。如何让它们通过采样模块?”部分。
关于Azure 应用程序见解 - 从采样中排除自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61589253/