diagnostics library

Provides metrics and instrumentation support for application telemetry.

This library contains the default implementation of meter factory and extension methods for registering metrics providers with dependency injection, inspired by Microsoft.Extensions.Diagnostics.

Metrics Collection

Create and use meters for collecting application metrics:

final meterFactory = provider.getRequiredService<MeterFactory>();
final meter = meterFactory.create('MyApp.Metrics');

// Create a counter
final requestCounter = meter.createCounter<int>('requests');
requestCounter.add(1);

// Create a histogram
final latencyHistogram = meter.createHistogram<double>('latency');
latencyHistogram.record(42.5);

Metrics Listeners

Subscribe to metrics via listeners:

services.addMetrics(builder => builder
  .addListener<MyMetricsListener>());

Classes

InstrumentRule
Contains a set of parameters used to determine which instruments are enabled for which listeners. Unspecified parameters match anything.
ListenerSubscription
MeasurementHandlers
A set of supported measurement types. If a listener does not support a given type, the measurement will be skipped.
MetricsBuilder
Represents a type used to configure the metrics system by registering MetricsListeners and using rules to determine which metrics are enabled.
MetricsListener
Represents a type used to listen to metrics emitted from the system.
MetricsSubscriptionManager
ObservableInstrumentsSource
An interface registered with each MetricsListener using MetricsListener.initialize(ObservableInstrumentsSource). The listener can call recordObservableInstruments to receive the current set of measurements for enabled observable instruments.

Enums

MeterScope
This is used by InstrumentRule to distinguish between meters created via Meter constructors (global) and those created via Dependency Injection with IMeterFactory.Create(MeterOptions) (local).

Typedefs

MeasurementCallback<TValue> = void Function(Instrument instrument, TValue measurement, Map<String, Object?> tags, Object? state)
A callback to represent the MeterListener callbacks used in measurements recording operation.