MetricFlow is a lightweight .NET library designed to help developers define and track functional and domain-oriented metrics (such as counters, timers, and event-based measurements).
- Counters: Track the number of occurrences of an event.
- Timers: Measure the duration of operations.
- Event-based Measurements: Capture and analyze specific events within your application.
- Metadata and Tags: Add contextual information to your metrics for better analysis and filtering.
- Sampling: Control the frequency of metric collection to manage performance and data volume.
- .NET SDK installed on your machine
-
Clone the repository:
git clone https://github.com/yourusername/DotnetKit.git cd DotnetKit/MetricFlow
-
Restore dependencies:
dotnet restore
To use MetricFlow in your project, follow these steps:
-
Define a metric tracker:
var tracker = new MetricTracker("ExecutionTimeMetricsTopic", new() { ["tenant_id"] = "TenantId1", ["session_id"] = Guid.NewGuid().ToString() });
-
Track metrics in different ways:
tracker.In("GlobalOperation"); for (var i = 0; i < 10; i++) { using (var __ = tracker.Track("Operation1", new() { ["operation_id"] = $"{i}" })) { await Task.Delay(2); } using (var __ = tracker.Track("Operation2", new() { ["operation_id"] = $"{10 - i}" })) { await Task.Delay(4); } } tracker.Out("GlobalOperation"); Console.WriteLine(tracker.ToString());
The SimpleMetricCountersExample
demonstrates how to use the MetricFlow
library to track and measure metrics in a .NET application. The example includes a BenchRunner
class that simulates operations and tracks their execution times.
To run the example, execute the following command:
dotnet run --project examples/SimpleMetricCountersExample