MS Application Insights - 如何限制 Sql 依赖项

MS Application Insights - How to throttle Sql Dependencies

有没有办法告诉 Application Insights 只捕获一部分与 SQL 依赖项 相关的数据?大概是 10%?如果没有,有没有办法一起禁用它?

您可以 "throttle"(或 Microsoft 称之为样本)的不同方式。一种方法是使用 built-in 配置选项来限制所有内容,但是如果您只想限制特定的依赖项,则需要实现自己的 ITelemetryChannel。
可以在此处找到有关如何完成此操作的指南:http://apmtips.com/blog/2015/05/06/diy-data-sampling/

然后,在 Send(ITelemetry item) 方法中,您可以检查传入的项目是否是依赖项并与 SQL 相关,它看起来像这样:

if (item is DependencyTelemetry)
{  
    var dependency = item as DependencyTelemetry;  
    if (dependency.DependencyTypeName == "SQL")  
    {  
        //implement throttling from the guide  
    }  
}  

如 link 所示,您将需要创建一个 ServerTelemetryChannel 实例并在此调用 Send() 方法 - 您需要对要实际发送到应用程序的任何遥测项目执行此操作见解。
这意味着您还可以使用此实现来完全过滤掉任何 SQL 依赖项遥测,如下所示:

public void Send(ITelemetry item)
{
    if (item is DependencyTelemetry)
    {
        var dependency = item as DependencyTelemetry;  
        if (dependency.DependencyTypeName == "SQL")  
        {  
            return;
        }  
    }        
    this.channel.Send(item);
}

根据我在下面的评论,这个答案在尝试实现自定义 TelemetryProcessor 时应该有所帮助。