Have a look at Metrics.NET, a relatively new project that should cover most of these needs. It's a port of Java's 'metrics' project.

(Added March 2016:) The Metrics.NET project has been transferred to new people after a long period of no updates.

Answer from Warren Rumak on Stack Overflow
🌐
GitHub
github.com › AppMetrics › AppMetrics
GitHub - AppMetrics/AppMetrics: App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
App Metrics is an open-source and cross-platform .NET library used to record metrics within an application. App Metrics can run on .NET Core or on the full .NET framework.
Starred by 2.2K users
Forked by 291 users
Languages   C#
🌐
Microsoft Learn
learn.microsoft.com › en-us › aspnet › core › log-mon › metrics › metrics
ASP.NET Core metrics | Microsoft Learn
Instrumentation: Code in .NET libraries takes measurements and associates these measurements with a metric name. .NET and ASP.NET Core include many built-in metrics. Collection and storage: A .NET app configures named metrics to be transmitted from the app for external storage and analysis.
🌐
Alhardy
alhardy.github.io › app-metrics-docs
What is App Metrics?
App Metrics is an open-source and cross-platform .NET library used to record metrics within an application.
Top answer
1 of 4
18

Have a look at Metrics.NET, a relatively new project that should cover most of these needs. It's a port of Java's 'metrics' project.

(Added March 2016:) The Metrics.NET project has been transferred to new people after a long period of no updates.

2 of 4
8

You could take a look at building something on top of StatsD:

https://github.com/etsy/statsd/

There's a .NET package for that can be found here:

https://github.com/robbihun/NStatsD.Client

It's lightweight as it's basically just firing off an UDP packet to a remote server. That remote server then aggregates it and stores it in Graphite which is good at taking this data and turning it into graphs and it manages things like data retention for you. For analysis, Graphite also allows you to output the data as JSON (which basically turns your metrics into an array of doubles) and has many functions and filters you can apply to recorded metrics which you could then feed into your other systems.

See here for some examples of what is possible with Graphite:

http://matt.aimonetti.net/posts/2013/06/26/practical-guide-to-graphite-monitoring

It doesn't meet all your requirements however, such as being able to record data about the client like computer names. But you can probably reach that goal by using namespacing in your metric names; so you would record your metric with a key like "client567.orders.loadtime" and "client567" would be an entry in some other database that stores that client567 uses IE11 on Windows 7, for example.

So it's not a complete out-of-the-box solution, but it forms a nice basis I think.

Another option is to use a commercial platform such as NewRelic:

http://newrelic.com/

It comes with performance monitoring for a lot of technologies (from ASP.NET to SQL Server to Solr). It does however require an agent process (a service on Windows) running in the background that handles the monitoring for you, which might or might not be an option for you. It's more or less meant for webservers and would probably not be very suitable to monitor a client-side WPF application.

🌐
SourceForge
sourceforge.net › projects › app-metrics.mirror
App Metrics download | SourceForge.net
Download App Metrics for free. App Metrics is an open-source and cross-platform .NET library . App Metrics is an open-source and cross-platform .NET library used to record metrics within an application.
🌐
Microsoft Learn
learn.microsoft.com › en-us › dotnet › core › diagnostics › metrics
Metrics Overview - .NET | Microsoft Learn
Instrumentation: Code in .NET libraries takes measurements and associates these measurements with a metric name. Collection: A .NET app configures named metrics to be transmitted from the app for external storage and analysis.
🌐
App-metrics
app-metrics.io › getting-started
Getting Started :: App Metrics
If integrating App Metrics in an ASP.NET Core application, install the App.Metrics.AspNetCore.All nuget package which schedules reporting via an Microsoft.Extensions.Hosting.IHostedService implementation. Create a new dotnet core console application and install the App.Metrics and App.Metrics.Reporting.Console nuget packages.
Find elsewhere
🌐
Microsoft Learn
learn.microsoft.com › en-us › dotnet › core › diagnostics › metrics-collection
Collect metrics - .NET | Microsoft Learn
Creating a custom collection tool using the underlying .NET MeterListener API. For more information on custom metric instrumentation and options, see Compare metric APIs. ... Before metrics can be collected, measurements must be produced. This tutorial creates an app that has basic metric ...
🌐
Packt
packtpub.com › en-us › learning › how-to-tutorials › app-metrics-analyze-http-traffic-errors-network-performance-net-core-app
Use App Metrics to analyze HTTP traffic, errors & network performance of a .NET Core app [Tutorial]
App Metrics is an open source tool that can be plugged in with the ASP.NET Core applications. It provides real-time insights about how the application is performing and provides a complete overview of the application's health status.
🌐
Alhardy
alhardy.github.io › app-metrics-docs › getting-started › intro.html
Getting started
App Metrics includes ASP.NET Core middleware which will collect typical metrics related to a web application.
🌐
The Pokies Net
app-metrics.io › pokies.net › pokies.net casino🔥 › 🎁 the pokies net casino australia | payid pokies real money
App Metrics
Your credentials work seamlessly on the main domain, The Pokies Net 86, The Pokies Net 111, and mobile apps—no need to create separate accounts for different access points. The platform remembers your device with the "Remember Me" feature, reducing subsequent logins to a single click.
🌐
DEV Community
dev.to › me_janki › collecting-metrics-in-aspnet-core-applications-49cm
Collecting Metrics in ASP.NET Core Applications - DEV Community
December 20, 2023 - App Metrics is a cross-platform .NET library for instrumenting applications and collecting metrics. It supports exporting metrics to various backends like Prometheus, InfluxDB, ElasticSearch, etc.
🌐
Microsoft Learn
learn.microsoft.com › en-us › dotnet › core › diagnostics › metrics-instrumentation
Creating Metrics - .NET | Microsoft Learn
In code that uses DI, such as ASP.NET Core or apps with Generic Host, create the Meter object using IMeterFactory. Starting in .NET 8, hosts will automatically register IMeterFactory in the service container or you can manually register the type in any IServiceCollection by calling AddMetrics. The meter factory integrates metrics ...
🌐
Microsoft Learn
learn.microsoft.com › en-us › dotnet › fundamentals › networking › telemetry › metrics
Networking metrics - .NET | Microsoft Learn
There are several ways to collect networking metrics in .NET. For a quick overview using a simple, self-contained example, see Collect metrics with dotnet-counters. For production-time metrics collection and monitoring, you can use Grafana with OpenTelemetry and Prometheus or Azure Monitor Application ...
🌐
Grafana
grafana.com › grafana › dashboards › 17681-microservices-monitoring
App Metrics - Web Monitoring | Grafana Labs
App Metrics is an open-source and cross-platform .NET library used to record metrics within an application.
🌐
IronPDF
ironpdf.com › ironpdf blog › .net help › appmetrics c#
Appmetrics C# (How It Works For Developers)
July 29, 2025 - AppMetrics C# is a tool designed for application monitoring and performance analysis, allowing developers to track and retrieve various application metrics efficiently in .NET Core and .NET Framework.
🌐
App-metrics
app-metrics.io › web-monitoring
Web Applications :: App Metrics
Overview App Metrics provides a set of packages designed for ASP.NET Core monitoring. The core packages are as follows: Package Description App.Metrics.AspNetCore.All Metapackage containing a full set of AspNetCore AppMetrics features. App.Metrics.AspNetCore.Tracking A set of middleware components ...