Я следил за этим руководством и этим руководство по добавлению Azure App Insights в наш Angular применение. Он отлично работает, но проблема, с которой я сталкиваюсь, заключается в том, как мы можем запускать / загружать и останавливать / выгружать отслеживание идей при определенных условиях?

По сути, у нас есть переключатель в нашем приложении, который позволяет пользователю включать сбор данных, и Application Insights должен анализировать и собирать данные. Как только пользователь выключит этот переключатель, он должен прекратить анализ и отслеживание.

Похоже, что как только мы вызываем this.appInsights.loadAppInsights(), нет возможности разблокировать / выгрузить / прекратить прослушивание. Если есть способ разблокировать / выгрузить / прекратить прослушивание, дайте мне знать.

Спасибо.

3
AliF50 3 Ноя 2020 в 23:47

2 ответа

Лучший ответ

Вы можете обратиться к документу Отключение телеметрии.

Например, если вы хотите выгрузить аналитические данные о приложении в javascript, используйте приведенный ниже код:

telemetry.config.disableAppInsights = true;
1
Ivan Yang 16 Ноя 2020 в 00:28

В итоге я создал общий сервис, связанный со всем, с помощью AppInsights, вдохновленный здесь.

import { AngularPlugin, AngularPluginService } from '@microsoft/applicationinsights-angularplugin-js';
import {
  ApplicationInsights,
  IEventTelemetry,
  IExceptionTelemetry
 } from '@microsoft/applicationinsights-web';
....

export class ApplicationInsightService {
  private appInsights: ApplicationInsights;

  constructor(private router: Router, private angularPluginService: AngularPluginService) {
    const angularPlugin = new AngularPlugin();
    this.angularPluginService.init(angularPlugin, this.router);
    this.appInsights = new ApplicationInsights({ config: {
      instrumentationKey: 'Your key here',
      extensions: [angularPlugin],
      extensionConfig: {
        [angularPlugin.identifier]: { router: this.router },
      }
    }});
    this.appInsights.loadAppInsights();
    this.appInsights.trackPageView();
  }

  setUserId(userId: string) {
    this.appInsights.setAuthenticatedUserContext(userId);
  }

  clearUserId() {
    this.appInsights.clearAuthenticatedUserContext();
  }

  logPageView(name?: string, uri?: string) {
    this.appInsights.trackPageView({ name, uri });
  }

  logEvent(event: IEventTelemetry, customProperties: { [key: string]: any }) {
    this.appInsights.trackEvent(event, customProperties);
  }

  trackError(exception: Error) {
    let telemetry = {
      exception,
    } as IExceptionTelemetry;
    this.appInsights.trackException(telemetry);
  }

  stopTelemetry() { // !! this is how you stop tracking
    this.appInsights.config.disableTelemetry = true;
  }

  startTelemetry() { // !! this is how you start/re-start it
    this.appInsights.config.disableTelemetry = false;
  }
}

Часть JavaScript документация не помогла, потому что этих методов / свойств не существовало, но документация C # помогла, и, похоже, она похожа на это.

0
AliF50 13 Ноя 2020 в 15:42