我有一个C#客户巫婆,我想用蔚蓝的见解进行监控。
我添加了以下Nuget:
Microsoft.ApplicationInsights v2.9.1
Microsoft.ApplicationInsights.Agent.Intercept v2.4.0
Microsoft.ApplicationInsights.DependencyCollector v2.9.1
Microsoft.ApplicationInsights.PerfCounterCollector v2.9.1
Microsoft.ApplicationInsights.Web v2.9.1
Microsoft.ApplicationInsights.WindowsServer v2.9.1
Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel v2.9.1
Microsoft.AspNet.TelemetryCorrelation v1.0.5
System.Diagnostics.DiagnosticSource v4.5.1
问题是Azure门户在使用类别中识别了我的事件和异常,但未将其识别为实时指标流。我的客户端已连接,实时度量标准流可用,但未显示跟踪事件或异常之类的数据。即使在Visual Studio中,在调试期间也没有可用的Application Insights数据。
我已经尝试了很多次以卸载并重新安装所有nuget。无需任何努力即可将它们更新到最新版本。
这是我的Azure客户端的相关代码。有效负载只是一类具有一些我想跟踪的属性的类。它被映射到字典中以供有效载荷发送。
public override void Initialize()
{
try
{
base.Initialize();
var configuration = new TelemetryConfiguration();
configuration.InstrumentationKey = Configuration.AnalyticsCodeId;
var dependencies = new DependencyTrackingTelemetryModule();
dependencies.Initialize(configuration);
configuration.TelemetryInitializers.Add(new Microsoft.ApplicationInsights.Extensibility.OperationCorrelationTelemetryInitializer());
configuration.TelemetryInitializers.Add(new ClientIpHeaderTelemetryInitializer());
configuration.TelemetryInitializers.Add(new AccountIdTelemetryInitializer());
customTelemetry = new AzureCustomTelemetryInitializer(Payload);
configuration.TelemetryInitializers.Add(customTelemetry);
client = new TelemetryClient(configuration);
if (CheckTrackingIsAllowed())
InitLiveMetric(configuration);
}
catch (Exception e)
{
Log.Write(e);
}
}
private void InitLiveMetric(TelemetryConfiguration configuration)
{
QuickPulseTelemetryProcessor processor = null;
configuration.TelemetryProcessorChainBuilder
.Use((next) =>
{
processor = new QuickPulseTelemetryProcessor(next);
return processor;
})
.Build();
var quickPulse = new QuickPulseTelemetryModule();
quickPulse.Initialize(configuration);
quickPulse.RegisterTelemetryProcessor(processor);
}
public override void SendEventAsync(string eventName, string modulName)
{
if (!CheckTrackingIsAllowed())
return;
Task.Run(() =>
{
var p = MapAzurePayload(Payload);
client.TrackEvent(eventName, p);
});
}
此代码似乎正常运行,因为我可以在Azure门户的使用类别中看到跟踪的事件和异常。但是正如我所说,不是实时指标,这会非常好,并且通常必须与我认为的代码配合使用。
有什么想法为什么实时指标流无法按预期运行?
编辑:找到原因...问题是,当客户端似乎根本没有准备好时,将发送我的第一个跟踪事件。如果我延迟发送,它将按预期工作。 我的解决方案是延迟曲目的首次发送。不好,但是我没有其他想法...