Информация о приложении - TelemetryClient - DependencyTelemetry - UseSampling - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь включить выборку с помощью моего класса AppInsightsHelper, который запускает операции Depedancy для отслеживания производительности.

Вот как я инициализирую свой TelematryClient:

 public ApplicationInsightsHelper(string key)
 {
        var config = TelemetryConfiguration.CreateDefault();
        config.InstrumentationKey = key;
        config.DefaultTelemetrySink.TelemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 1);

        _telemetryClient = new TelemetryClient(config);
 }

, а затем запуска и остановки операция:

   IOperationHolder<DependencyTelemetry> operation = null;
   operation = _telemetryClient.StartOperation<DependencyTelemetry>(friendlyName);
   operation.Telemetry.Name = friendlyName;
   operation.Telemetry.Type = type;
   operation.Telemetry.Timestamp = DateTime.UtcNow;

   operation.Telemetry.Duration = DateTime.UtcNow - operation.Telemetry.Timestamp;
   _telemetryClient.StopOperation(operation);

Проблема в том, что приведенный выше код игнорирует настройку выборки, и все операции отслеживаются. Я также включил: исключения типа: «Зависимость» в UseAdaptiveSampling, чтобы увидеть, если что-то происходит, и, как и ожидалось, Зависимости не игнорируются.

1 Ответ

1 голос
/ 09 января 2020

Если это функция azure, вы можете установить выборку через хост. json, подробности см. здесь и здесь . Пример ниже:

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 1
      }
    }
  }
}

И если вы хотите использовать TelemetryClient с настройками, вы должны следовать этой статье . В конструкторе функции azure используйте код, подобный приведенному ниже:

        /// Using dependency injection will guarantee that you use the same configuration for telemetry collected automatically and manually.
        public HttpTrigger2(TelemetryConfiguration telemetryConfiguration)
        {
            this.telemetryClient = new TelemetryClient(telemetryConfiguration);
        }

Но на данный момент существует проблема с использованием telemetryConfiguration.

...