如何在Application Insights中禁用标准性能计数器?

时间:2017-03-19 18:49:01

标签: .net azure-application-insights

Application Insights中的标准性能计数器生成的卷太多。如何禁用它们并仅报告我自己的计数器+一些标准计数器(但不是全部),或者只是降低采样频率?

3 个答案:

答案 0 :(得分:4)

在我的情况下,向计数器添加计数器并没有影响默认计数器,因此两者都设置了我的并且报告了默认值。幸运的是收集器是open source,并且有一个明确的线索,你需要做什么才能删除它们。只需像这样定义一个空的 import os import re import shutil srcdir = '/home/username/pictures/' # if not os.path.isdir(srcdir): print("Error, %s is not a valid directory!" % srcdir) return None pts_cls # is the list of pairs (image_id, cluster_id) filelist = [(srcdir+fn) for fn in os.listdir(srcdir) if re.search(r'\.jpg$', fn, re.IGNORECASE)] filelist.sort(key=lambda var:[int(x) if x.isdigit() else x for x in re.findall(r'[^0-9]|[0-9]+', var)]) for f in filelist: fbname = os.path.splitext(os.path.basename(f))[0] for e,cls in enumerate(pts_cls): # for each (img_id, clst_id) pair if str(cls[0])==fbname: # check if image_id corresponds to file basename on disk) if cls[1]==-1: # if cluster_id is -1 (->noise) outdir = srcdir+'cluster_'+'Noise'+'/' else: outdir = srcdir+'cluster_'+str(cls[1])+'/' if not os.path.isdir(outdir): os.makedirs(outdir) dstf = outdir+os.path.basename(f) if os.path.isfile(dstf)==False: shutil.copy2(f,dstf)

DefaultCounters

答案 1 :(得分:2)

假设您使用的是最新的.NET SDK,则可以通过applicationinsights.config文件配置性能计数器或采样率。

Telemetry Processors section中,您可以添加以下内容来设置自适应采样:

<TelemetryProcessors>
  <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
    <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
  </Add>
</TelemetryProcessors>

设置特定性能计数器可以在Telemetry Modules section中(另请参阅this blog post),例如:

<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
  <Counters>
    <Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Handle Count" ReportAs="Process handle count" />
  </Counters>      
</Add>

删除 PerfCounterCollector 类型将完全禁用性能计数器收集。

阿萨夫

答案 2 :(得分:1)

为asp.netcore用户添加此答案。如图所示,修改您的startup.cs。您有两个选择。首先,完全禁用性能计数器。

public void ConfigureServices(IServiceCollection services)
{

    var serviceDescriptor = services.FirstOrDefault(descriptor => descriptor.ImplementationType == typeof(PerformanceCollectorModule));
    services.Remove(serviceDescriptor);
}

或第二个删除单个计数器,如果以后需要,可以添加自己的计数器。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{

    var modules = app.ApplicationServices.GetServices<ITelemetryModule>();
    var perfModule = modules.OfType<PerformanceCollectorModule>().First();
    perfModule.DefaultCounters.Clear();

}