Почему TrackValue поддерживает 10 значений измерений, а GetMetric поддерживает только 4 имени измерений? - PullRequest
0 голосов
/ 11 апреля 2019

В пространстве имен Microsoft.ApplicationInsights класс Metric содержит методы TrackValue, которые поддерживают до 10 значений измерений, но класс TelemetryClient имеет методы GetMetric, которые поддерживают до 4 имен измерений.

Мое приложение хотело бы отслеживать 6 значений измерения для метрики, но метод GetMetric поддерживает только 4 имени измерения. В моем сценарии, какими будут имена 5-го и 6-го измерений?

Я написал небольшое приложение .Net Core, которое отправляет метрики в ApplicationInsights. Когда количество имен измерений в вызове GetMetric совпадает с количеством значений измерений в вызове TrackValue, вызов TrackValue завершается успешно. Однако, когда количество имен измерений не совпадает с числом значений измерений, метод TrackValue выдает исключение System.ArgumentException с сообщением «Попытка получить ряд метрик путем указания 6 измерений, но метрика имеет 4 измерения. «

TelemetryClient tc = new TelemetryClient();
tc.InstrumentationKey = "AppInsight Instrumentation Key";

var itemMetric = tc.GetMetric("Item", "Amount", "Source", "Locale", "PaymentType");
itemMetric.TrackValue(1.0d, "25", "web", "en-US", "CC", "USD", "US");

При вызове TrackValue создается исключение System.ArgumentException, подробно описанное над кодом.

Есть ли способ указать более 4 имен измерений для метрики, чтобы вызов TrackValue завершился успешно?

1 Ответ

1 голос
/ 11 апреля 2019

Вы можете использовать от MetricIdentifier до GetMetric() с 4+ размерами следующим образом:

MetricIdentifier id = new MetricIdentifier("namespace", "name", "dim1", "dim2", "dim3", "dim4", "dim5");
Metric myMetric = client.GetMetric(id);

Существующие перегрузки являются просто удобными методами для охвата большинства популярных случаев с ограниченным количеством измерений.

...