コード例 #1
0
 public ContextTelemetryInitializer(AppInsightsSettings serviceContext)
 {
     _settings = serviceContext;
 }
コード例 #2
0
        public static IServiceCollection AddAppInsights(this IServiceCollection services, AppInsightsSettings settings, string instrumentationKey)
        {
            var serviceProvider = services.BuildServiceProvider();

            if (serviceProvider.GetService <IHostingEnvironment>() == null)
            {
                // force to use aspnetcore hosting environment so that all modules can be loaded
                services.TryAddSingleton <IHostingEnvironment, HostingEnvironment>();
            }

            var appInsightsConfig = TelemetryConfiguration.Active;

            appInsightsConfig.InstrumentationKey = instrumentationKey;
            appInsightsConfig.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
            appInsightsConfig.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());
            appInsightsConfig.TelemetryInitializers.Add(new ContextTelemetryInitializer(settings));

            var module = new DependencyTrackingTelemetryModule();

            module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.ServiceBus");
            module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.EventHubs");
            module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.KeyVault");
            module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.DocumentDB");
            module.Initialize(appInsightsConfig);

            var appFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location);

            services.TryAddSingleton <ITelemetryChannel>(new ServerTelemetryChannel()
            {
                StorageFolder = appFolder,
                DeveloperMode = true
            });

            // var telemetryClient = new TelemetryClient();
            // services.AddSingleton(telemetryClient);
            services.AddApplicationInsightsTelemetry(o =>
            {
                o.RequestCollectionOptions.EnableW3CDistributedTracing = true;
                o.InstrumentationKey = instrumentationKey;
                o.EnableDebugLogger  = true;
                o.AddAutoCollectedMetricExtractor = true;
                o.EnableAdaptiveSampling          = false;
            });

            return(services);
        }