Skip to content

Commit

Permalink
feat: app insights - add grouped operation name
Browse files Browse the repository at this point in the history
  • Loading branch information
mirecad committed Apr 18, 2024
1 parent 6a6b6ec commit 7ced2df
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using DotVVM.Framework.Hosting;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.AspNetCore.Http;

namespace DotVVM.Tracing.ApplicationInsights.AspNetCore;

public class OperationNameTelemetryInitializer : ITelemetryInitializer
{
private readonly IHttpContextAccessor _accessor;

public OperationNameTelemetryInitializer(IHttpContextAccessor accessor)
{
_accessor = accessor;
}

public void Initialize(ITelemetry telemetry)
{
var url = _accessor.HttpContext?.GetDotvvmContext()?.Route?.Url;
if (string.IsNullOrWhiteSpace(url) == false && telemetry is RequestTelemetry)
{
var method = _accessor.HttpContext.Request.Method;
var operationName = $"{method} /{url}";

var requestTelemetry = telemetry as RequestTelemetry;
requestTelemetry.Name = operationName;
requestTelemetry.Context.Operation.Name = operationName;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public static IDotvvmServiceCollection AddApplicationInsightsTracing(this IDotvv
services.AddDotvvmApplicationInsights();

services.Services.AddApplicationInsightsTelemetryProcessor<RequestTelemetryFilter>();
services.Services.AddSingleton<ITelemetryInitializer, OperationNameTelemetryInitializer>();

services.Services.TryAddSingleton<JavaScriptSnippet>();
services.Services.AddTransient<IConfigureOptions<DotvvmConfiguration>, ApplicationInsightSetup>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Options" Version="2.0.0" />
<PackageReference Include="Microsoft.Owin.Host.SystemWeb" Version="4.2.2" />
<PackageReference Include="System.Text.Encodings.Web" Version="4.5.1" />
</ItemGroup>
<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Web;
using DotVVM.Framework.Hosting;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Channel;

namespace DotVVM.Tracing.ApplicationInsights.Owin;

public class OperationNameTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
var url = HttpContext.Current?.GetOwinContext()?.GetDotvvmContext()?.Route?.Url;
if (string.IsNullOrWhiteSpace(url) == false && telemetry is RequestTelemetry)
{
var method = HttpContext.Current.Request.HttpMethod;
var operationName = $"{method} /{url}";

var requestTelemetry = telemetry as RequestTelemetry;
requestTelemetry.Name = operationName;
requestTelemetry.Context.Operation.Name = operationName;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public static class TracingBuilderExtensions
public static IDotvvmServiceCollection AddApplicationInsightsTracing(this IDotvvmServiceCollection services)
{
TelemetryConfiguration.Active.TelemetryProcessorChainBuilder.Use(next => new RequestTelemetryFilter(next)).Build();
TelemetryConfiguration.Active.TelemetryInitializers.Add(new OperationNameTelemetryInitializer());

services.Services.TryAddSingleton<TelemetryClient>();
services.AddDotvvmApplicationInsights();
Expand Down

0 comments on commit 7ced2df

Please sign in to comment.