mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
enable AppInsights Live Metrics
This commit is contained in:
parent
74110bdff6
commit
3f6fb2b3ff
5 changed files with 68 additions and 11 deletions
|
|
@ -34,6 +34,7 @@
|
|||
<PackageReference Include="MediatR" Version="7.0.0" />
|
||||
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.10.0" />
|
||||
<PackageReference Include="Microsoft.ApplicationInsights.PerfCounterCollector" Version="2.10.0" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.3" />
|
||||
<PackageReference Include="Microsoft.DotNet.Analyzers.Compatibility" Version="0.2.12-alpha" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.4" />
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<IOptions<ApplicationInsightsSettings>>().Value;
|
||||
return new TelemetryConfiguration
|
||||
{
|
||||
InstrumentationKey = applicationInsightsSettings.InstrumentationKey
|
||||
};
|
||||
});
|
||||
services.AddSingleton(b =>
|
||||
{
|
||||
var configuration = b.GetService<TelemetryConfiguration>();
|
||||
return new TelemetryClient(configuration);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Parser>();
|
||||
services.AddMediatR(AppDomain.CurrentDomain.GetAssemblies());
|
||||
|
|
@ -54,16 +55,8 @@ private static void ConfigureCustom<TSettings>(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<IOptions<ApplicationInsightsSettings>>().Value;
|
||||
return new TelemetryClient
|
||||
{
|
||||
InstrumentationKey = applicationInsightsSettings.InstrumentationKey
|
||||
};
|
||||
});
|
||||
services.AddLogging(b =>
|
||||
{
|
||||
var telemetryClient = b.Services.BuildServiceProvider().GetService<TelemetryClient>();
|
||||
|
|
|
|||
|
|
@ -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<TelemetryConfiguration>();
|
||||
_quickPulseTelemetryModule = new QuickPulseTelemetryModule();
|
||||
_quickPulseTelemetryModule.InitializeQuickPulseTelemetryModule(telemetryConfiguration);
|
||||
}
|
||||
|
||||
private static void Teardown()
|
||||
{
|
||||
_quickPulseTelemetryModule.Dispose();
|
||||
var telemetryClient = _serviceProvider.GetService<TelemetryClient>();
|
||||
telemetryClient.Flush();
|
||||
Thread.Sleep(5000);
|
||||
|
|
|
|||
Loading…
Reference in a new issue