App Insights не использует RequestTelemetryFilter для проверки работоспособности контроллера в приложении Spring Boot

#azure-application-insights

#azure-application-insights

Вопрос:

У меня есть приложение Spring Boot с несколькими контроллерами, я хочу отслеживать их зависимости (включая исходящие Http-запросы). Все работает, как ожидалось. Однако у меня есть один контроллер для проверки работоспособности (возвращающий 204), для которого мне не нужна телеметрия. Во всех других ответах упоминаются компоненты пользовательского кода, но, согласно документации, это должно быть выполнимо в AI-Agent.xml конфигурация.

 <BuiltInProcessors>
  <Processor type="RequestTelemetryFilter">
    <Add name="NotNeededResponseCodes" value="204" />
  </Processor>
</BuiltInProcessors>
  

Я заметил в пути к классу, что есть два экземпляра RequestTelemtryFilter (один из ai-core и один из ai-web, ни один из которых не попадает при отладке).

Ответ №1:

Настройка агента (через AI-Agent.xml) отличается от настройки пользовательской телеметрии (через Applicationinsights.xml). Spring boot агент требует использования пользовательского процессора телеметрии и подключения к вашей конфигурации через @Bean. Никакого дополнительного XML в AI-агенте не требуется.

 public class HealthCheckTelemetryFilter implements TelemetryProcessor
{

  public HealthCheckTelemetryFilter()
  {
    // TODO Auto-generated constructor stub
  }

  @Override
  public boolean process(Telemetry telemetry)
  {
    RequestTelemetry reqTel = (RequestTelemetry) telemetry;

    if(reqTel.getResponseCode().equals(HttpStatus.NO_CONTENT.toString()))
        return false;
    else
        return true;
  }

}
  

ПРИМЕЧАНИЕ: не забудьте проверить соответствующий тип