Esempio n. 1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // TODO: add scoped request telemetries
            //services.AddScoped(telemetry.GetType());
            services.AddHttpContextAccessor();

            services.AddSingleton <ITelemetryInitializer, HttpTelemetryInitializer>();
            services.AddSingleton <ITelemetryInitializer, HttpRequestTelemetryInitializer>();
            services.AddSingleton <ITelemetryInitializer, ClaimsTelemetryInitializer>();

            ApplicationInsightsExtensions.AddApplicationInsightsTelemetry(services, Configuration)
            .AddApplicationInsightsTelemetryProcessor <TelemetryUnAuthorizedFilter>()
            .AddApplicationInsightsTelemetryProcessor <TelemetryPathFilter>()
            .AddApplicationInsightsTelemetryProcessor <TelemetryBotFilter>()
            .AddApplicationInsightsTelemetryProcessor <TelemetryFastRemoteDependencyCallsFilter>()
            .AddApplicationInsightsTelemetryProcessor <SuccessfulDependencyFilter>()
            ;

            services.AddControllers().AddControllersAsServices();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "ApplicationInsight", Version = "v1"
                });
            });
        }
Esempio n. 2
0
        public void EnableAppInsightsForKubernetesWithTimeOutSetThroughConfiguration()
        {
            IServiceCollection services = new ServiceCollection();
            IConfiguration     config   = new ConfigurationBuilder().AddInMemoryCollection(
                new Dictionary <string, string>()
            {
                { "a", "b" },
                { "AppInsightsForKubernetes:InitializationTimeout", "3.1:12:15.34" }
            }).Build();

            services.AddSingleton(config);

            ApplicationInsightsExtensions.ConfigureKubernetesTelemetryInitializer(services, () => true, new KubernetesTestServiceCollectionBuilder(), null);
            Assert.NotNull(services.FirstOrDefault(sd => sd.ImplementationType == typeof(KubernetesTelemetryInitializer)));

            IServiceProvider      serviceProvider            = services.BuildServiceProvider();
            ITelemetryInitializer targetTelemetryInitializer = serviceProvider.GetServices <ITelemetryInitializer>().FirstOrDefault(ti => ti is KubernetesTelemetryInitializer);

            if (targetTelemetryInitializer is KubernetesTelemetryInitializer target)
            {
                Assert.StrictEqual(new TimeSpan(days: 3, hours: 1, minutes: 12, seconds: 15, milliseconds: 340), target._options.InitializationTimeout);
            }
            else
            {
                Assert.True(false, "Not the target telemetry initializer.");
            }
        }
Esempio n. 3
0
        /// <inheritdoc />
        public void Configure(ApplicationInsightsServiceOptions options)
        {
            if (this.configuration != null)
            {
                ApplicationInsightsExtensions.AddTelemetryConfiguration(this.configuration, options);
            }

            if (Debugger.IsAttached)
            {
                options.DeveloperMode = true;
            }
        }
Esempio n. 4
0
        /// <inheritdoc />
        public void Configure(ApplicationInsightsServiceOptions options)
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(this.hostingEnvironment.ContentRootPath)
                                .AddJsonFile("appsettings.json", true)
                                .AddEnvironmentVariables();

            ApplicationInsightsExtensions.AddTelemetryConfiguration(configBuilder.Build(), options);

            if (Debugger.IsAttached)
            {
                options.DeveloperMode = true;
            }
        }
Esempio n. 5
0
        /// <inheritdoc />
        public void Configure(ApplicationInsightsServiceOptions options)
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(this.hostingEnvironment.ContentRootPath ?? Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json", true)
                                .AddJsonFile(string.Format(CultureInfo.InvariantCulture, "appsettings.{0}.json", hostingEnvironment.EnvironmentName), true)
                                .AddEnvironmentVariables();

            ApplicationInsightsExtensions.AddTelemetryConfiguration(configBuilder.Build(), options);

            if (Debugger.IsAttached)
            {
                options.DeveloperMode = true;
            }
        }
Esempio n. 6
0
        public void ServiceInjected()
        {
            IServiceCollection services = new ServiceCollection();

            ApplicationInsightsExtensions.ConfigureKubernetesTelemetryInitializer(services, () => true, new KubernetesTestServiceCollectionBuilder(), null);
            Assert.NotNull(services.FirstOrDefault(sd => sd.ImplementationType == typeof(KubernetesTelemetryInitializer)));

            IServiceProvider      serviceProvider            = services.BuildServiceProvider();
            ITelemetryInitializer targetTelemetryInitializer = serviceProvider.GetServices <ITelemetryInitializer>().FirstOrDefault(ti => ti is KubernetesTelemetryInitializer);

            Assert.NotNull(targetTelemetryInitializer);

            // K8s services
            serviceProvider.GetRequiredService <IKubeHttpClientSettingsProvider>();
            serviceProvider.GetRequiredService <KubeHttpClientFactory>();
            serviceProvider.GetRequiredService <K8sQueryClientFactory>();
            serviceProvider.GetRequiredService <IK8sEnvironmentFactory>();
        }