Skip to content

Instantly share code, notes, and snippets.

@object
Created May 4, 2021 05:52
Show Gist options
  • Select an option

  • Save object/e1dae92c8626a3ed4ec4c821d08c7aa5 to your computer and use it in GitHub Desktop.

Select an option

Save object/e1dae92c8626a3ed4ec4c821d08c7aa5 to your computer and use it in GitHub Desktop.
Phobos AppInsights configuration
module PhobosBootstrapper =
module AppInsights =
let createMetrics (mb : IMetricsBuilder) =
let metrics = mb.Configuration.Configure (fun opts ->
opts.GlobalTags.Add("host", Dns.GetHostName())
opts.DefaultContextLabel <- "akka.net"
opts.Enabled <- true
opts.ReportingEnabled <- true)
let metrics =
metrics.Report.ToApplicationInsights(fun opts ->
opts.InstrumentationKey <- connectionString "AppInsightsPhobos"
opts.ItemsAsCustomDimensions <- true
opts.DefaultCustomDimensionName <- "item")
metrics.Build()
let configureMetrics (services : IServiceCollection) =
services.AddMetricsTrackingMiddleware() |> ignore
services.AddMetrics(fun mb -> createMetrics mb |> ignore) |> ignore
services.AddMetricsReportingHostedService()
let createTracer telConfig =
let assemblyName = Reflection.Assembly.GetEntryAssembly().GetName().Name
let endpoint = ApplicationInsights.Endpoint(assemblyName, Dns.GetHostName(), Nullable())
let tracer = ApplicationInsights.ApplicationInsightsTracer(telConfig, ActorScopeManager(), B3Propagator(), DateTimeOffsetTimeProvider(), endpoint)
tracer
let configureTracing (services : IServiceCollection) =
services.AddSingleton<OpenTracing.ITracer>(fun sp ->
let telConfig = new TelemetryConfiguration(connectionString "AppInsightsPhobos")
let tracer = createTracer telConfig
tracer :> OpenTracing.ITracer)
let createConfigBuilder metricsRoot tracer =
Phobos.Actor.Configuration.PhobosConfigBuilder()
.WithMetrics(fun m -> m.SetMetricsRoot(metricsRoot) |> ignore)
.WithTracing(fun t -> t.SetTracer(tracer) |> ignore)
let createSetup (sp : IServiceProvider) =
let metrics = sp.GetRequiredService<IMetricsRoot>()
let tracer = sp.GetRequiredService<OpenTracing.ITracer>()
PhobosSetup.Create(createConfigBuilder metrics tracer)
// In the Program host builder:
Host.CreateDefaultBuilder(argv)
.UseWindowsService()
.ConfigureLogging(fun loggerFactory -> loggerFactory.AddEventLog() |> ignore)
.ConfigureServices(fun hostContext services ->
services.ConfigureMetrics () |> ignore
services.ConfigureTracing () |> ignore
services.AddHostedService<Worker>(fun sp -> Worker(sp)) |> ignore)
.UseSerilog(Log.Logger)
@Aaronontheweb
Copy link
Copy Markdown

This all looks correct to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment