我正在从 ASP.NET Core 8 Web API 记录自定义事件。我可以看到这些事件在发送后不久就显示在实时指标中,但我无法在任何“事件”表中找到它们以供稍后查询。
我已检查 Log Analytics 中的“customEvents”表,还检查了 Log Analytics 工作区中的“AppEvents”表。自从在实时指标中看到这些事件以来已经超过 24 小时了,我认为这足以进行处理。我有什么遗漏的吗?
我正在运行自定义
ITelemetryInitializer
,但它仅根据请求和依赖项遥测运行:
public class TelemetryInitializer : ITelemetryInitializer
{
public void InitializeTelemetry(ITelemetry telemetry)
{
if (telemetry is DependencyTelemetry dependency)
{
// manipulate dependency data
}
if (telemetry is RequestTelemetry request)
{
// manipulate request data
}
}
}
我的大部分配置都是在
appsettings.json
中完成的:
"ApplicationInsights": {
"InstrumentationKey": "redacted",
"DeveloperMode": false,
"EnableAdaptiveSampling": true,
"EnableRequestTrackingTelemetryModule": true,
"EnablePerformanceCountersCollectionModule": false,
"EnableActiveTelemetryConfigurationSetup": true,
"InitialSamplingPercentage": 5,
"SamplingSettings": {
"MaxTelemetryItemsPerSecond": 5,
"ExcludedTypes": "Event",
"IncludedTypes": "Exception;Dependency;Trace;Request"
}
}
我怀疑
AdaptiveSampling
与此有关,但我不确定为什么这会让我在实时指标中看到它,然后在表格中看不到它。
我可以使用默认值和您共享的配置在实时指标、事务搜索和日志中查看自定义事件。
实时指标:
交易搜索:
日志 - 应用程序洞察:
以及 LogAnalytics - AppEvents 表中。
我的Program.cs文件:
builder.Services.AddApplicationInsightsTelemetry(new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions
{
ConnectionString = builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]
});
我的
TelemetryInitializer.cs
文件:
private readonly TelemetryClient _tc;
if (telemetry is EventTelemetry eventTel)
{
if (eventTel.Name == "CustomEventName" && eventTel.Properties.ContainsKey("CustProp1"))
{
_tc.TrackEvent(eventTel.Name, eventTel.Properties, eventTel.Metrics);
}
}
我的控制器类:
private readonly TelemetryClient _tc;
public WeatherForecastController(TelemetryClient tc,ILogger<WeatherForecastController> logger)
{
_tc = tc;
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
var customEventTel = new EventTelemetry("CustomEventName");
customEventTel.Properties.Add("CustomProperty", "SamValTest1");
_tc.TrackEvent(customEventTel);
------
}
没有
EventTelemetry
:
_tc.TrackEvent("CustomEventName", new Dictionary<string, string>
{
{ "CustProp1", "SamValTest1" },
{ "CustProp2", "SamValTest2" }
});
我怀疑
与此有关,AdaptiveSampling
"ExcludedTypes": "Event",
文件中删除 appsettings.json
并检查一次。