/// <summary> /// Enables Application Insights Kubernetes for a given TelemetryConfiguration. /// </summary> /// <remarks> /// The use of AddApplicationInsightsKubernetesEnricher() on the ServiceCollection is always preferred unless you have more than one TelemetryConfiguration /// instance, or if you are using Application Insights from a non ASP.NET environment, like a console app. /// </remarks> public static void AddApplicationInsightsKubernetesEnricher( this TelemetryConfiguration telemetryConfiguration, TimeSpan?timeout = null, IKubernetesServiceCollectionBuilder kubernetesServiceCollectionBuilder = null, Func <bool> detectKubernetes = null) { IServiceCollection standaloneServiceCollection = new ServiceCollection(); standaloneServiceCollection = EnableKubernetesImpl(standaloneServiceCollection, detectKubernetes, kubernetesServiceCollectionBuilder, null, timeout); // Static class can't used as generic types. ILogger logger = standaloneServiceCollection.GetLogger <IKubernetesServiceCollectionBuilder>(); IServiceProvider serviceProvider = standaloneServiceCollection.BuildServiceProvider(); ITelemetryInitializer k8sTelemetryInitializer = serviceProvider.GetServices <ITelemetryInitializer>() .FirstOrDefault(ti => ti is KubernetesTelemetryInitializer); if (k8sTelemetryInitializer != null) { telemetryConfiguration.TelemetryInitializers.Add(k8sTelemetryInitializer); } else { logger.LogError($"Getting ${nameof(KubernetesTelemetryInitializer)} from the service provider failed."); } }