Creating standard and "observable" instruments: System.Diagnostics.Metrics APIs - Part 3 This article explains the `System.Diagnostics.Metrics` APIs in .NET, focusing on the distinction between "observable" and "normal" instruments. For normal instruments, the application (producer) actively emits metric values as events occur, whereas for observable instruments, the consumer (like `dotnet-counters`) polls for the value on demand, which is more efficient for continuous or expensive-to-track metrics. The post also provides a refresher on the seven instrument types (e.g., `Counter`, `ObservableGauge`) and how to create them. In the first post in this series /creating-and-consuming-metrics-with-system-diagnostics-metrics-apis/ I provided an introduction to the System.Diagnostics.Metrics APIs introduced in .NET 6. I initially introduced the concept of "observable" Instrument s in that post, but didn't go into more details. In this post, we'll understand what being "observable" means, and how these Instrument s differ from non-observable Instrument s. I start the post with a quick refresher on the basics of the System.Diagnostics.Metrics APIs, such as the different types of instruments available. I then show how you can create each of the instrument types and produce values from them. System.Diagnostics.Metrics APIs system-diagnostics-metrics-apis The System.Diagnostics.Metrics APIs were introduced in .NET 6 but are available in earlier runtimes including .NET Framework by using the System.Diagnostics.DiagnosticSource https://www.nuget.org/packages/System.Diagnostics.DiagnosticSource/ NuGet package. There are two primary concepts exposed by these APIs: Instrument and Meter : Instrument : An instrument records the values for a single metric of interest. You might have separate Instrument s for "products sold", "invoices created", "invoice total", or "GC heap size". Meter : A Meter is a logical grouping of multiple instruments. For example, thecontains multiple System.Runtime Meter Instrument s about the workings of the runtime, while the https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/built-in?view=aspnetcore-10.0 microsoftaspnetcorehosting contains Microsoft.AspNetCore.Hosting Meter Instrument s about the HTTP requests received by ASP.NET Core. There are also currently, as of .NET 10 7 different types of Instrument : Counter