Created
May 4, 2021 05:52
-
-
Save object/e1dae92c8626a3ed4ec4c821d08c7aa5 to your computer and use it in GitHub Desktop.
Phobos AppInsights configuration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This all looks correct to me.