Quick update to a post I did a while back regarding Orleans Dashboard — additional reporting metrics for your cluster! As a refresher, Orleans is a virtual actor model framework — a framework that can be used to build new, distributed “primitives”. These primitives’ work can be farmed out to a cluster of nodes as a means of getting “work” done faster than what would be possible if working constrained to a single piece of hardware. In a previous post: _Orleans is an easy to use actor framework, but how can you monitor your deployment? Luckily, there’s something simple…_medium.freecodecamp.org How to set up Microsoft Orleans’ Reporting Dashboard I had pointed out: Currently CPU/Memory usage is not visible from the .net core implementation of Orleans. Hopefully something will be done to remedy that in the future? Perhaps it’s a limitation of the API available in netstandard? This ***seems*** to have been true at a point in time, but it is no longer! (At least if you’re running in a windows runtime.) The additional CPU and memory metrics are completely dependant on a registered implementation. By default, a “NoImplementation” implementation is registered, and you would see something like this in your Orleans log: IHostEnvironmentStatistics Orleans log showing an issue that prevents LoadShedding from working And this on your dashboard: Sad Orleans Dashboard w/o CPU/Memory metrics :( The whole reason I stumbled across getting these CPU/Memory metrics working on the dashboard, was I was pursuing getting the feature to work — which was apparently dependant on these metrics. LoadShedding Through some back and forth on the I found out about the needed registered implementation of an class. One of these classes does exist in the Orleans code, though it’s in a separate package, and an internal only class to that package: Orleans Gitter IHostEnvironmentStatistics _Orleans - Distributed Virtual Actor Model. Contribute to dotnet/orleans development by creating an account on GitHub._github.com dotnet/orleans Luckily, there is a SiloHost extension method that registers this implementation of for use — albeit from a Windows only runtime environment (at least at the time of writing). IHostEnvironmentStatistics To get the CPU/Memory metrics work on our dashboard (and putting us in a position to work in ) we need to do a few things: LoadShedding Install a new NuGet package Register an implementation of — like the one provided in the NuGet package itself. IHostEnvironmentStatistics Install the NuGet Package The implementation exists within the package, install it via the GUI, CLI, etc. The csproj file from the SiloHost project should look something like this when done: IHostEnvironmentStatistics Microsoft.Orleans.OrleansTelemetryConsumers.Counters csproj after installing the NuGet package Microsoft.Orleans.OrleansTelemetryConsumers.Counters Registering the implementation of IHostEnvironmentStatistics As previously mentioned, the new NuGet package has a Windows specific implementation of contained within it, although it is an internal class. There is however, an extension method that can be used to register that internal class. IHostEnvironmentStatistics Let’s update our SiloHostBuilder: Original var builder = new SiloHostBuilder().ConfigureClustering(ServiceProvider.GetService<IOptions<OrleansConfig>>(),Startup.HostingEnvironment.EnvironmentName).Configure<ClusterOptions>(options =>{options.ClusterId = "dev";options.ServiceId = "HelloWorldApp";}).Configure<EndpointOptions>(options => options.AdvertisedIPAddress = IPAddress.Loopback).AddMemoryGrainStorage(Constants.OrleansMemoryProvider).ConfigureApplicationParts(parts =>{parts.AddApplicationPart(typeof(IGrainMarker).Assembly).WithReferences();}).ConfigureServices(DependencyInjectionHelper.IocContainerRegistration).UseDashboard(options => { }).UseInMemoryReminderService().ConfigureLogging(logging => logging.AddConsole()); And we just need to add . .UsePerfCounterEnvironmentStatistics() Updated var builder = new SiloHostBuilder().ConfigureClustering(ServiceProvider.GetService<IOptions<OrleansConfig>>(),Startup.HostingEnvironment.EnvironmentName).Configure<ClusterOptions>(options =>{options.ClusterId = "dev";options.ServiceId = "HelloWorldApp";}).Configure<EndpointOptions>(options => options.AdvertisedIPAddress = IPAddress.Loopback).AddMemoryGrainStorage(Constants.OrleansMemoryProvider).ConfigureApplicationParts(parts =>{parts.AddApplicationPart(typeof(IGrainMarker).Assembly).WithReferences();}).ConfigureServices(DependencyInjectionHelper.IocContainerRegistration).UsePerfCounterEnvironmentStatistics() // <- this guy.UseDashboard(options => { }).UseInMemoryReminderService().ConfigureLogging(logging => logging.AddConsole()); That’s all there is to it! Now, we should get our CPU/Memory utilization reported on the Orleans Dashboard, and be in a better position to work in — perhaps for the next post! LoadShedding Now, looking at our dashboard, we can see: CPU/Memory utilization! Now, we have even more insight into how our cluster is operating, and additional features such as are made available to us! LoadShedding Related: _Orleans is an easy to use actor framework, but how can you monitor your deployment? Luckily, there’s something simple…_medium.freecodecamp.org How to set up Microsoft Orleans’ Reporting Dashboard _Updated the readme to expand on enabling CPU/Memory metrics on the dashboard. These metrics (at the time of writing)…_github.com Info on enabling CPU/Memory metrics. by Kritner · Pull Request #212 ·… Code as of post — https://github.com/Kritner-Blogs/OrleansGettingStarted/releases/tag/v0.57 Getting Started with Microsoft Orleans Microsoft Orleans — Reusing Grains and Grain State Microsoft Orleans — Reporting Dashboard Using polymorphism to update Orleans Project to be ready for new Orleans Examples! Microsoft Orleans — Dependency Injection Microsoft Orleans — Easily switching between “development” and “production” configurations. .net core console application IOptions<T> configuration Microsoft Orleans — Observers