public void AddTheInitializerToGivenConfiguration()
        {
            Mock <ITelemetryChannel> channelMock = new Mock <ITelemetryChannel>();
            Mock <IKubernetesServiceCollectionBuilder> serviceCollectionBuilderMock = new Mock <IKubernetesServiceCollectionBuilder>();
            ServiceCollection sc = new ServiceCollection();

            sc.AddLogging();

            sc.AddSingleton <ITelemetryInitializer>(p =>
            {
                var envMock = new Mock <IK8sEnvironment>();
                envMock.Setup(env => env.ContainerID).Returns("Cid");
                var envFactoryMock = new Mock <IK8sEnvironmentFactory>();
                envFactoryMock.Setup(f => f.CreateAsync(It.IsAny <DateTime>())).ReturnsAsync(envMock.Object, TimeSpan.FromMinutes(1));
                return(new KubernetesTelemetryInitializer(envFactoryMock.Object, TimeSpan.FromSeconds(5), SDKVersionUtils.Instance, p.GetService <ILogger <KubernetesTelemetryInitializer> >()));
            });
            serviceCollectionBuilderMock.Setup(b => b.InjectServices(It.IsAny <IServiceCollection>(), It.IsAny <TimeSpan>()))
            .Returns(sc);

            TelemetryConfiguration telemetryConfiguration = new TelemetryConfiguration("123", channelMock.Object);

            telemetryConfiguration.AddApplicationInsightsKubernetesEnricher(null, serviceCollectionBuilderMock.Object, detectKubernetes: () => true);

            Assert.NotNull(telemetryConfiguration.TelemetryInitializers);
            Assert.True(telemetryConfiguration.TelemetryInitializers.Count == 1);
            Assert.True(telemetryConfiguration.TelemetryInitializers.First() is KubernetesTelemetryInitializer);
        }
示例#2
0
        static void Main(string[] args)
        {
            configuration.TelemetryInitializers.Add(new CloudRoleTelemetryInitializer());
            configuration.AddApplicationInsightsKubernetesEnricher();

            TelemetryClient client = new TelemetryClient(configuration);

            try
            {
                var connectingMsg = $"Connecting to message queue url: {Env.MessageQueueUrl}";
                client.TrackTrace(connectingMsg);
                Console.WriteLine(connectingMsg);
                using (var connection = MessageQueue.CreateConnection())
                {
                    var subscription = connection.SubscribeAsync(SaleCreatedEvent.MessageSubject, QUEUE_GROUP);
                    subscription.MessageHandler += SaveSale;
                    subscription.Start();

                    var listeningMsg = $"Listening on subject: {SaleCreatedEvent.MessageSubject}, queue: {QUEUE_GROUP}";
                    client.TrackTrace(listeningMsg);
                    Console.WriteLine(listeningMsg);

                    _ResetEvent.WaitOne();
                    connection.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Exception: {ex} in Main");
                var method = new Dictionary <string, string> {
                    { "Method", "Main" }
                };
                client.TrackException(ex, method);
            }
        }
示例#3
0
        public void AddTheInitializerToGivenConfiguration()
        {
            TelemetryConfiguration telemetryConfiguration = new TelemetryConfiguration();

            telemetryConfiguration.AddApplicationInsightsKubernetesEnricher(null, new KubernetesTestServiceCollectionBuilder(), () => true);
            Assert.NotNull(telemetryConfiguration.TelemetryInitializers);
            Assert.Single(telemetryConfiguration.TelemetryInitializers);
            Assert.True(telemetryConfiguration.TelemetryInitializers.First() is KubernetesTelemetryInitializer);
        }
示例#4
0
 public static void EnableKubernetes(
     this TelemetryConfiguration telemetryConfiguration,
     TimeSpan?timeout = null,
     IKubernetesServiceCollectionBuilder kubernetesServiceCollectionBuilder = null,
     Func <bool> detectKubernetes = null)
 {
     telemetryConfiguration.AddApplicationInsightsKubernetesEnricher(
         timeout, kubernetesServiceCollectionBuilder, detectKubernetes);
 }
示例#5
0
        public static void Initialize(string instrumentationKey)
        {
            configuration = new TelemetryConfiguration(instrumentationKey);
            var observer = new ApplicationInsightsKubernetesDiagnosticObserver(DiagnosticLogLevel.Trace);

            ApplicationInsightsKubernetesDiagnosticSource.Instance.Observable.SubscribeWithAdapter(observer);

            configuration.AddApplicationInsightsKubernetesEnricher(applyOptions: null);

            // client = new TelemetryClient();
            // client.InstrumentationKey = instrumentationKey;
        }
示例#6
0
        public void EnableAppInsightsForKubernetesWithDefaultTimeOut()
        {
            TelemetryConfiguration telemetryConfiguration = new TelemetryConfiguration();

            telemetryConfiguration.AddApplicationInsightsKubernetesEnricher(
                applyOptions: null,
                kubernetesServiceCollectionBuilder: new KubernetesTestServiceCollectionBuilder(),
                detectKubernetes: () => true);
            ITelemetryInitializer targetTelemetryInitializer = telemetryConfiguration.TelemetryInitializers.FirstOrDefault(ti => ti is KubernetesTelemetryInitializer);

            if (targetTelemetryInitializer is KubernetesTelemetryInitializer target)
            {
                Assert.StrictEqual(TimeSpan.FromMinutes(2), target._options.InitializationTimeout);
            }
            else
            {
                Assert.True(false, "Not the target telemetry initializer.");
            }
        }
示例#7
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            // Application Insights 1
            TelemetryConfiguration aiConfig = new TelemetryConfiguration("your iKey 1", app.ApplicationServices.GetService <ITelemetryChannel>());

            aiConfig.AddApplicationInsightsKubernetesEnricher(applyOptions: null);
            TelemetryClient client = new TelemetryClient(aiConfig);

            // Invoking the constructor for the TelemetryInitializer
            client.TrackEvent("Hello");

            // Application Insights 2
            TelemetryConfiguration aiConfig2 = new TelemetryConfiguration("your iKey 2", app.ApplicationServices.GetService <ITelemetryChannel>());

            aiConfig2.AddApplicationInsightsKubernetesEnricher(applyOptions: null);
            TelemetryClient client2 = new TelemetryClient(aiConfig2);

            var _forget = ThrowAnotherHelloAsync(client, client2);

            app.UseStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
示例#8
0
        static void Main(string[] args)
        {
            IConfiguration config = new ConfigurationBuilder().AddEnvironmentVariables().Build();
            string         iKey   = config["APPINSIGHTS_INSTRUMENTNATIONKEY"];

            if (string.IsNullOrEmpty(iKey))
            {
                Console.WriteLine("Can't do empty iKey.");
            }

            using (TelemetryConfiguration configuration = new TelemetryConfiguration(iKey))
            {
                configuration.AddApplicationInsightsKubernetesEnricher(applyOptions: null);

                TelemetryClient client = new TelemetryClient(configuration);
                Console.WriteLine("Sending trace telemetry once a while.");
                while (true)
                {
                    client.TrackTrace("Hello from AI SDK");
                    client.Flush();
                    Thread.Sleep(30000);
                }
            }
        }
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            // uService_prototype
            TelemetryConfiguration aiConfig = new TelemetryConfiguration("8e9838a3-ad63-4d30-96f7-2f0a505bc0f6", app.ApplicationServices.GetService <ITelemetryChannel>());

            aiConfig.AddApplicationInsightsKubernetesEnricher();
            TelemetryClient client = new TelemetryClient(aiConfig);

            // Invoking the constructor for the TelemetryInitializer
            client.TrackEvent("Hello");
            // saarsfun01
            TelemetryConfiguration aiConfig2 = new TelemetryConfiguration("5789ad10-8b39-4f8a-88dc-632d1342d5e0", app.ApplicationServices.GetService <ITelemetryChannel>());

            aiConfig2.AddApplicationInsightsKubernetesEnricher();
            TelemetryClient client2 = new TelemetryClient(aiConfig2);

            var _forget = ThrowAnotherHelloAsync(client, client2);

            app.UseStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }