diff --git a/src/FilterLists.Agent/FilterLists.Agent.csproj b/src/FilterLists.Agent/FilterLists.Agent.csproj
index 8847ece4d..c4dc85995 100644
--- a/src/FilterLists.Agent/FilterLists.Agent.csproj
+++ b/src/FilterLists.Agent/FilterLists.Agent.csproj
@@ -34,6 +34,7 @@
+
diff --git a/src/FilterLists.Agent/Infrastructure/ApplicationInsights/QuickPulseTelemetryModuleExtensions.cs b/src/FilterLists.Agent/Infrastructure/ApplicationInsights/QuickPulseTelemetryModuleExtensions.cs
new file mode 100644
index 000000000..a0d180303
--- /dev/null
+++ b/src/FilterLists.Agent/Infrastructure/ApplicationInsights/QuickPulseTelemetryModuleExtensions.cs
@@ -0,0 +1,26 @@
+using Microsoft.ApplicationInsights.Extensibility;
+using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
+
+namespace FilterLists.Agent.Infrastructure.ApplicationInsights
+{
+ public static class QuickPulseTelemetryModuleExtensions
+ {
+ public static void InitializeQuickPulseTelemetryModule(this QuickPulseTelemetryModule quickPulseTelemetryModule,
+ TelemetryConfiguration telemetryConfiguration)
+ {
+ QuickPulseTelemetryProcessor processor = null;
+ telemetryConfiguration.TelemetryProcessorChainBuilder
+ .Use(next =>
+ {
+ processor = new QuickPulseTelemetryProcessor(next);
+ return processor;
+ })
+ .Build();
+ quickPulseTelemetryModule.Initialize(telemetryConfiguration);
+ quickPulseTelemetryModule.RegisterTelemetryProcessor(processor);
+ foreach (var telemetryProcessor in telemetryConfiguration.TelemetryProcessors)
+ if (telemetryProcessor is ITelemetryModule telemetryModule)
+ telemetryModule.Initialize(telemetryConfiguration);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/FilterLists.Agent/Infrastructure/ApplicationInsights/ServiceCollectionExtensions.cs b/src/FilterLists.Agent/Infrastructure/ApplicationInsights/ServiceCollectionExtensions.cs
new file mode 100644
index 000000000..2c21c9785
--- /dev/null
+++ b/src/FilterLists.Agent/Infrastructure/ApplicationInsights/ServiceCollectionExtensions.cs
@@ -0,0 +1,28 @@
+using FilterLists.Agent.AppSettings;
+using Microsoft.ApplicationInsights;
+using Microsoft.ApplicationInsights.Extensibility;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
+
+namespace FilterLists.Agent.Infrastructure.ApplicationInsights
+{
+ public static class ServiceCollectionExtensions
+ {
+ public static void AddApplicationInsight(this IServiceCollection services)
+ {
+ services.AddSingleton(b =>
+ {
+ var applicationInsightsSettings = b.GetService>().Value;
+ return new TelemetryConfiguration
+ {
+ InstrumentationKey = applicationInsightsSettings.InstrumentationKey
+ };
+ });
+ services.AddSingleton(b =>
+ {
+ var configuration = b.GetService();
+ return new TelemetryClient(configuration);
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/FilterLists.Agent/Infrastructure/DependencyInjection/ServiceCollectionExtensions.cs b/src/FilterLists.Agent/Infrastructure/DependencyInjection/ServiceCollectionExtensions.cs
index e544abab1..b92d70bec 100644
--- a/src/FilterLists.Agent/Infrastructure/DependencyInjection/ServiceCollectionExtensions.cs
+++ b/src/FilterLists.Agent/Infrastructure/DependencyInjection/ServiceCollectionExtensions.cs
@@ -1,6 +1,7 @@
using System;
using CommandLine;
using FilterLists.Agent.AppSettings;
+using FilterLists.Agent.Infrastructure.ApplicationInsights;
using FilterLists.Agent.Infrastructure.Disk;
using FilterLists.Agent.Infrastructure.FilterListsApi;
using FilterLists.Agent.Infrastructure.GitHub;
@@ -10,7 +11,6 @@
using Microsoft.ApplicationInsights;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Options;
using Serilog;
namespace FilterLists.Agent.Infrastructure.DependencyInjection
@@ -20,7 +20,8 @@ public static class ServiceCollectionExtensions
public static void ConfigureServices(this IServiceCollection services)
{
services.AddConfiguration();
- services.AddLoggingCustom();
+ services.AddApplicationInsight();
+ services.AddLogging();
services.AddLocalization();
services.AddTransient();
services.AddMediatR(AppDomain.CurrentDomain.GetAssemblies());
@@ -54,16 +55,8 @@ private static void ConfigureCustom(this IServiceCollection services,
configuration.GetSection(typeof(TSettings).Name.Replace("Settings", "", StringComparison.Ordinal)));
}
- private static void AddLoggingCustom(this IServiceCollection services)
+ private static void AddLogging(this IServiceCollection services)
{
- services.AddSingleton(b =>
- {
- var applicationInsightsSettings = b.GetService>().Value;
- return new TelemetryClient
- {
- InstrumentationKey = applicationInsightsSettings.InstrumentationKey
- };
- });
services.AddLogging(b =>
{
var telemetryClient = b.Services.BuildServiceProvider().GetService();
diff --git a/src/FilterLists.Agent/Program.cs b/src/FilterLists.Agent/Program.cs
index 1d017fba7..6fb268afa 100644
--- a/src/FilterLists.Agent/Program.cs
+++ b/src/FilterLists.Agent/Program.cs
@@ -4,9 +4,12 @@
using CommandLine;
using FilterLists.Agent.Features.Lists;
using FilterLists.Agent.Features.Urls;
+using FilterLists.Agent.Infrastructure.ApplicationInsights;
using FilterLists.Agent.Infrastructure.DependencyInjection;
using MediatR;
using Microsoft.ApplicationInsights;
+using Microsoft.ApplicationInsights.Extensibility;
+using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
using Microsoft.Extensions.DependencyInjection;
namespace FilterLists.Agent
@@ -14,6 +17,7 @@ namespace FilterLists.Agent
public static class Program
{
private static IServiceProvider _serviceProvider;
+ private static QuickPulseTelemetryModule _quickPulseTelemetryModule;
public static async Task Main(string[] args)
{
@@ -39,10 +43,15 @@ private static void Setup()
var serviceCollection = new ServiceCollection();
serviceCollection.ConfigureServices();
_serviceProvider = serviceCollection.BuildServiceProvider();
+
+ var telemetryConfiguration = _serviceProvider.GetService();
+ _quickPulseTelemetryModule = new QuickPulseTelemetryModule();
+ _quickPulseTelemetryModule.InitializeQuickPulseTelemetryModule(telemetryConfiguration);
}
private static void Teardown()
{
+ _quickPulseTelemetryModule.Dispose();
var telemetryClient = _serviceProvider.GetService();
telemetryClient.Flush();
Thread.Sleep(5000);