azure 无法关闭应用程序洞察的采样

e5njpo68  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(173)

我有一个DotNet 6应用程序ASP.NET Web API应用程序,它作为Azure中的应用程序服务运行。
我没有启用固定采样。应用程序中也没有applicationinsights.json文件。
我有代码在ConfigureServices方法中禁用自适应采样。代码片段如下:'

if (!string.IsNullOrEmpty(configuration["ApplicationInsights:InstrumentationKey"]))
            {
                services.AddApplicationInsightsTelemetry(options =>
                {
                    if (webHostEnvironment.IsDevelopment())
                    {
                        options.DeveloperMode = true;
                        options.EnableDebugLogger = false;
                    }
                    options.EnableAdaptiveSampling = false;
                    options.InstrumentationKey = configuration["ApplicationInsights:InstrumentationKey"];
                });
                services.AddApplicationInsightsTelemetryProcessor<FilterProcessor>();
                services.AddSingleton<ITelemetryInitializer, NopContextInitializer>();
            }

'
我的Azure应用程序洞察设置如下所示,用于接收采样

当我运行下面的查询时,我继续看到采样发生:'

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType

'几周前我的应用程序是.NET Core 3.1,无法关闭采样。即使升级到DotNet 6后,我也无法关闭采样。
有什么线索说明为什么会发生这种情况吗?

bxgwgixi

bxgwgixi1#

我的应用程序中也没有applicationinsights.json文件。
当我们从Visual Studio =〉项目根文件夹添加Application Insights Telemetry时,默认情况下ApplicationInsights.config会自动生成。

我已经从项目根文件夹中添加了Application Insights Telemetry,即使我没有找到添加到应用程序中的ApplicationInsights.config
添加ApplicationInsights Telemetry中可能有一些最新更改。
我们可以禁用ApplicationInsights.configcode的采样。
由于我们没有ApplicationInsights.config文件,将尝试从代码中禁用采样。
如MSDoc中所述,
目前只有ASP.NET服务器端遥测支持自适应采样。
Program.cs中,添加以下代码行

var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false; 
builder.Services.AddApplicationInsightsTelemetry(aiOptions);
  • 此代码仅适用于Production Environment(部署的应用程序)。
    适用于.NET核心6
    我的程序.cs
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
using Microsoft.ApplicationInsights.Extensibility;
var builder = WebApplication.CreateBuilder(args);

var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
builder.Services.AddApplicationInsightsTelemetry(aiOptions);

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
   app.UseSwagger();
   app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

我的应用程序设置. json文件

{
  "Logging": {
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Debug",
        "Microsoft": "Error"
      }
    },
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=********;IngestionEndpoint=https://****.in.applicationinsights.azure.com/;LiveEndpoint=https://****.livediagnostics.monitor.azure.com/",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
  }
}
  • 重新部署应用程序,访问URL并检查跟踪/日志。

引用自MSDoc

相关问题