private MeterAdapter(MeterAdapterOptions options) { _options = options; _metricFactory = Metrics.WithCustomRegistry(_options.Registry); _counter = _metricFactory.CreateCounter("dotnet_meters_counter", "Incrementing counters from the .NET Meters API.", new CounterConfiguration { LabelNames = new[] { "meter", "instrument", "unit", "description" } }); _gauge = _metricFactory.CreateGauge("dotnet_meters_gauge", "Raw values from the .NET Meters API.", new GaugeConfiguration { LabelNames = new[] { "meter", "instrument", "unit", "description" } }); _countersListener.InstrumentPublished += OnCounterInstrumentPublished; _countersListener.SetMeasurementEventCallback <byte>(OnCounterMeasurement); _countersListener.SetMeasurementEventCallback <short>(OnCounterMeasurement); _countersListener.SetMeasurementEventCallback <int>(OnCounterMeasurement); _countersListener.SetMeasurementEventCallback <long>(OnCounterMeasurement); _countersListener.SetMeasurementEventCallback <float>(OnCounterMeasurement); _countersListener.SetMeasurementEventCallback <double>(OnCounterMeasurement); _countersListener.SetMeasurementEventCallback <decimal>(OnCounterMeasurement); _countersListener.Start(); _gaugesListener.InstrumentPublished += OnGaugeInstrumentPublished; _gaugesListener.SetMeasurementEventCallback <byte>(OnGaugeMeasurement); _gaugesListener.SetMeasurementEventCallback <short>(OnGaugeMeasurement); _gaugesListener.SetMeasurementEventCallback <int>(OnGaugeMeasurement); _gaugesListener.SetMeasurementEventCallback <long>(OnGaugeMeasurement); _gaugesListener.SetMeasurementEventCallback <float>(OnGaugeMeasurement); _gaugesListener.SetMeasurementEventCallback <double>(OnGaugeMeasurement); _gaugesListener.SetMeasurementEventCallback <decimal>(OnGaugeMeasurement); _gaugesListener.Start(); Task.Run(TimerLoopAsync); }
public static IDisposable StartListening(MeterAdapterOptions options) => new MeterAdapter(options);