Phobos
Enterprise Application Monitoring and Management for Akka.NET OSS
Published by Petabridge
  • last updated 1 day(s) ago
  • 740 daily downloads
  • 1917347 total downloads
  • Latest version: 2.8.5

Phobos.Monitoring 2.0.0-beta1

High-performance monitoring and instrumentation library for .NET and .NET Core applications.

Install-Package Phobos.Monitoring -Version 2.0.0-beta1
dotnet add package Phobos.Monitoring --version 2.0.0-beta1
<PackageReference Include="Phobos.Monitoring" Version="2.0.0-beta1"/>
paket add Phobos.Monitoring --version 2.0.0-beta1

Release Notes

MAJOR RELEASE OF PHOBOS** In Phobos 2.0 we have migrated all of our tracing and monitoring capabilities to use [OpenTelemetry](https://opentelemetry.io/). As we mentioned in our recent blog post about Phobos 2.0 and its relationship with OpenTelemetry, we did this for the following reasons: OpenTelemetry is now the official APM solution for the entire .NET platform, including other popular frameworks such as ASP.NET and Entity Framework; All major APM vendors and OSS project such as Prometheus, Jaeger, DataDog, AWS, GCP, Azure, Elastic, and so on are all committed to supporting OpenTelemetry going forward and they implement their own first-party exporters that transmit data to those platforms; The performance of the `OpenTelemetry.Trace` and `OpenTelemetry.Metrics` implementations, which Phobos uses, are identical no matter which combination of exporters you adopt; and OpenTelemetry is much more decoupled and extensible than any of the previous solutions in market. We have replaced all of our OpenTracing and App.Metrics dependencies with 2.x going forward. Installation and Configuration** To use Phobos 2.0.0-beta* in your solution, all you need to do is: 1. Install [the appropriate `Phobos.Actor.*` package](https://phobos.petabridge.com/articles/setup/index.html#nuget-packages) into your application using the 2.0.0-beta* version; 2. Install the appropriate [`OpenTelemetry.Exporter.*` packages](https://www.nuget.org/packages?q=OpenTelemetry.Exporter) you want to use in combination with your preferred APM tools; and 3. Configure your `IServiceCollection` with the following (adjust as needed): ```csharp // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { // Prometheus exporter won't work without this services.AddControllers(); var resource = ResourceBuilder.CreateDefault() .AddService(Assembly.GetEntryAssembly().GetName().Name, serviceInstanceId: $"{Dns.GetHostName()}"); // enables OpenTelemetry for ASP.NET / .NET Core services.AddOpenTelemetryTracing(builder => { builder .SetResourceBuilder(resource) .AddPhobosInstrumentation() .AddSource("Petabridge.Phobos.Web") .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation() .AddJaegerExporter(opt => { opt.AgentHost = Environment.GetEnvironmentVariable(JaegerAgentHostEnvironmentVar); }); }); services.AddOpenTelemetryMetrics(builder => { builder .SetResourceBuilder(resource) .AddPhobosInstrumentation() .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation() .AddPrometheusExporter(opt => { }); }); // sets up Akka.NET ConfigureAkka(services); } ``` The `.AddPhobosInstrumentation()` line will ensure that OTel picks up all of the signals produced by Phobos - and you need to call this line for *both* metrics and tracing! Finally, you need to configure your `ActorSystem` to use Phobos and to leverage the `TracerProvider` and `MeterProvider`s from OpenTelemetry: ```csharp public static void ConfigureAkka(IServiceCollection services) { services.AddSingleton(sp => { var metrics = sp.GetRequiredService<MeterProvider>(); var tracer = sp.GetRequiredService<TracerProvider>(); var config = ConfigurationFactory.ParseString(File.ReadAllText("app.conf")) .BootstrapFromDocker() .UseSerilog(); var phobosSetup = PhobosSetup.Create(new PhobosConfigBuilder() .WithMetrics(m => m.SetMetricsRoot(metrics)) // binds Phobos to same IMetricsRoot as ASP.NET Core .WithTracing(t => t.SetTracer(tracer))) // binds Phobos to same tracer as ASP.NET Core .WithSetup(BootstrapSetup.Create() .WithConfig(config) // passes in the HOCON for Akka.NET to the ActorSystem .WithActorRefProvider(PhobosProviderSelection .Cluster)); // last line activates Phobos inside Akka.NET var sys = ActorSystem.Create("ClusterSys", phobosSetup); // create actor "container" and bind it to DI, so it can be used by ASP.NET Core return new AkkaActors(sys); }); // this will manage Akka.NET lifecycle services.AddHostedService<AkkaService>(); } ``` This is fundamentally not all that different from how Phobos 1.x works. We will update our official documentation and website with more Phobos 2.0-specific instructions as our releases mature, but for the time being please don't hesitate to submit an issue on the [Phobos Issue Tracker](https://github.com/petabridge/phobos-issues) if you run into trouble! Phobos 1.x Support Lifetime** Per our recent announcement, we will continue to support Phobos 1.x and 2.x concurrently. Phobos 1.x will exit support on December 31st, 2023.

Dependencies

.NETStandard

Versions

Version
Downloads
Last Updated
5
1 day(s) ago
1576
47 day(s) ago
4421
94 day(s) ago
2287
128 day(s) ago
681
129 day(s) ago
1432
136 day(s) ago
824
143 day(s) ago
1252
162 day(s) ago
192
169 day(s) ago
1216
177 day(s) ago
56601
338 day(s) ago
781
348 day(s) ago
641
354 day(s) ago
16370
437 day(s) ago
9361
473 day(s) ago
2558
507 day(s) ago
641
542 day(s) ago
5965
549 day(s) ago
146
597 day(s) ago
6885
620 day(s) ago
11575
680 day(s) ago
431
683 day(s) ago
8447
738 day(s) ago
8831
764 day(s) ago
800
767 day(s) ago
4212
767 day(s) ago
86
772 day(s) ago
1879
820 day(s) ago
2
822 day(s) ago
1828
866 day(s) ago
256
954 day(s) ago
142
1027 day(s) ago
65301
1086 day(s) ago
122
1090 day(s) ago
90
1094 day(s) ago
103
1101 day(s) ago
14
1115 day(s) ago
4252
1138 day(s) ago
195
1144 day(s) ago
70
1145 day(s) ago
13644
1145 day(s) ago
54
1145 day(s) ago
437
1171 day(s) ago
2
1171 day(s) ago
12449
1180 day(s) ago
454
1214 day(s) ago
13
1215 day(s) ago
2059
1215 day(s) ago
99
1221 day(s) ago
104
1228 day(s) ago
7008
1244 day(s) ago
490
1257 day(s) ago
543
1268 day(s) ago
7183
1289 day(s) ago
1216
1326 day(s) ago
755
1328 day(s) ago
3292
1361 day(s) ago
2367
1382 day(s) ago
730
1390 day(s) ago
2017
1444 day(s) ago
1506
1460 day(s) ago
293
1466 day(s) ago
3452
1486 day(s) ago
5837
1530 day(s) ago
11101
1587 day(s) ago
159
1591 day(s) ago
138
1591 day(s) ago
55387
1591 day(s) ago
607
1621 day(s) ago
259
1636 day(s) ago
1659
1657 day(s) ago
902
1691 day(s) ago
1286
1704 day(s) ago
139
1704 day(s) ago

Info

Statistics

  • 360112 total downloads
  • 99 downloads of current version

Owners and Products

Petabridge Petabridge

Authors

Petabridge

Copyright

Copyright © 2017-2021 Petabridge

Petabridge