У меня есть клиент на C #, которого я хочу отслеживать с помощью лазурных идей.
Я добавил следующие Nugets:
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 во время отладки.
Я много раз пытался удалить и переустановить все нюансы.Обновил их до последней версии, но без каких-либо усилий.
Это связанный код для моего клиента Azure.Payload - это просто класс с несколькими свойствами, которые я хочу отслеживать.Он сопоставлен со словарем для отправки полезной нагрузки.
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.Но, как я уже сказал, не такая живая метрика, что было бы неплохо и должно нормально работать с кодом, который я думаю.
Есть идеи, почему поток живой метрики не работает так, как задумано?
Править: Нашел причину ... Проблема в том, что мое первое событие отслеживания отправляется, когда клиент, кажется, не готов вообще.Если я отложил отправку, он работает как положено.Мое решение - отложить первую отправку трека.Не хорошо, но у меня нет другой идеи ...