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

Phobos.Actor 2.0.0-beta1

Automatic Akka.NET tracing and monitoring integration as part of the Phobos Enterprise Framework.

Install-Package Phobos.Actor -Version 2.0.0-beta1
dotnet add package Phobos.Actor --version 2.0.0-beta1
<PackageReference Include="Phobos.Actor" Version="2.0.0-beta1"/>
paket add Phobos.Actor --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
4
1 day(s) ago
1577
46 day(s) ago
4448
94 day(s) ago
2286
128 day(s) ago
682
129 day(s) ago
1433
135 day(s) ago
843
142 day(s) ago
1250
162 day(s) ago
192
169 day(s) ago
1230
177 day(s) ago
56700
338 day(s) ago
783
348 day(s) ago
662
354 day(s) ago
16636
437 day(s) ago
9371
473 day(s) ago
2556
507 day(s) ago
640
541 day(s) ago
5965
548 day(s) ago
145
597 day(s) ago
6904
620 day(s) ago
11595
680 day(s) ago
409
683 day(s) ago
8367
738 day(s) ago
8686
764 day(s) ago
807
767 day(s) ago
4218
767 day(s) ago
93
772 day(s) ago
1879
820 day(s) ago
4
822 day(s) ago
1827
865 day(s) ago
257
954 day(s) ago
144
1027 day(s) ago
65459
1086 day(s) ago
126
1090 day(s) ago
92
1094 day(s) ago
104
1101 day(s) ago
16
1114 day(s) ago
4255
1138 day(s) ago
198
1144 day(s) ago
103
1145 day(s) ago
13646
1145 day(s) ago
56
1145 day(s) ago
439
1170 day(s) ago
4
1170 day(s) ago
12451
1180 day(s) ago
456
1214 day(s) ago
15
1215 day(s) ago
2060
1215 day(s) ago
101
1221 day(s) ago
106
1228 day(s) ago
7005
1244 day(s) ago
493
1257 day(s) ago
548
1268 day(s) ago
7182
1289 day(s) ago
1222
1326 day(s) ago
758
1328 day(s) ago
3308
1361 day(s) ago
2369
1382 day(s) ago
732
1390 day(s) ago
2019
1444 day(s) ago
1507
1460 day(s) ago
297
1466 day(s) ago
3457
1486 day(s) ago
5848
1529 day(s) ago
11106
1587 day(s) ago
163
1591 day(s) ago
138
1591 day(s) ago
138
1591 day(s) ago
138
1591 day(s) ago
611
1621 day(s) ago
262
1636 day(s) ago
1660
1657 day(s) ago
896
1691 day(s) ago
1305
1704 day(s) ago
133
1704 day(s) ago

Info

Statistics

  • 305575 total downloads
  • 101 downloads of current version

Owners and Products

Petabridge Petabridge

Authors

Petabridge

Copyright

Copyright © 2017-2021 Petabridge

Petabridge