我有一个.NET核心网络应用程序,是发送一些自定义事件遥测到应用程序洞察。自定义事件是使用遥测客户端实例发送的,例如:
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%。
但是,我有一两个事件很少发生,对于那些事件,我希望每个事件都被跟踪。
在启用采样的情况下,我看到这个关键事件几乎从未被存储过。当我禁用采样,它就开始工作了。
有可能以某种方式排除某些遥测项目被采样过滤吗?
致以敬意,
巴托兹
发布于 2020-05-05 01:38:49
是的,这是可能的。您可以编写一个自定义TelemetryInitializer,它将希望保留的遥测项的SamplingPercentage设置为100。
下面是示例代码:
public class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
#write your own logic for somecondition
if(somecondition)
{
((ISupportSampling)telemetry).SamplingPercentage = 100;
}
}
}有关更多细节,请参考这个文章,在“有一些我一直想要看到的罕见事件,我如何才能让他们通过抽样模块?”。
https://stackoverflow.com/questions/61589253
复制相似问题