Skip to content

Commit

Permalink
fix(#171): fixes missing observation callback for observable metrics
Browse files Browse the repository at this point in the history
fixes #171
  • Loading branch information
pragmaticivan committed Jan 3, 2022
1 parent c11cfa3 commit 7d89c1f
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 12 deletions.
11 changes: 7 additions & 4 deletions src/metrics/metric-data.ts
@@ -1,6 +1,6 @@
import {
Counter, MetricOptions, metrics, UpDownCounter,
Histogram, ObservableGauge, ObservableCounter, ObservableUpDownCounter,
Histogram, ObservableGauge, ObservableCounter, ObservableUpDownCounter, ObservableResult,
} from '@opentelemetry/api-metrics';
import { OTEL_METER_NAME } from '../opentelemetry.constants';

Expand Down Expand Up @@ -70,44 +70,47 @@ export function getOrCreateUpDownCounter(
export function getOrCreateObservableGauge(
name: string,
options: MetricOptions,
callback?: (observableResult: ObservableResult) => void,
): ObservableGauge {
if (meterData.has(name)) {
return meterData.get(name) as ObservableGauge;
}

const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);

const observableGauge = meter.createObservableGauge(name, options);
const observableGauge = meter.createObservableGauge(name, options, callback);
meterData.set(name, observableGauge);
return observableGauge;
}

export function getOrCreateObservableCounter(
name: string,
options: MetricOptions,
callback?: (observableResult: ObservableResult) => void,
): ObservableCounter {
if (meterData.has(name)) {
return meterData.get(name) as ObservableCounter;
}

const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);

const observableCounter = meter.createObservableCounter(name, options);
const observableCounter = meter.createObservableCounter(name, options, callback);
meterData.set(name, observableCounter);
return observableCounter;
}

export function getOrCreateObservableUpDownCounter(
name: string,
options: MetricOptions,
callback?: (observableResult: ObservableResult) => void,
): ObservableUpDownCounter {
if (meterData.has(name)) {
return meterData.get(name) as ObservableUpDownCounter;
}

const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);

const observableCounter = meter.createObservableCounter(name, options);
const observableCounter = meter.createObservableCounter(name, options, callback);
meterData.set(name, observableCounter);
return observableCounter;
}
28 changes: 20 additions & 8 deletions src/metrics/metric.service.ts
@@ -1,11 +1,11 @@
import { Injectable } from '@nestjs/common';
import {
MetricOptions,
MetricOptions, ObservableResult,
} from '@opentelemetry/api-metrics';
import {
getOrCreateCounter, getOrCreateHistogram,
getOrCreateObservableCounter, getOrCreateObservableGauge,
getOrCreateObservableUpDownCounter, getOrCreateUpDownCounter, MetricType,
getOrCreateObservableUpDownCounter, getOrCreateUpDownCounter,
} from './metric-data';

@Injectable()
Expand All @@ -22,15 +22,27 @@ export class MetricService {
return getOrCreateHistogram(name, options);
}

getObservableCounter(name: string, options?: MetricOptions) {
return getOrCreateObservableCounter(name, options);
getObservableCounter(
name: string,
options?: MetricOptions,
callback?: (observableResult: ObservableResult) => void,
) {
return getOrCreateObservableCounter(name, options, callback);
}

getObservableGauge(name: string, options?: MetricOptions) {
return getOrCreateObservableGauge(name, options);
getObservableGauge(
name: string,
options?: MetricOptions,
callback?: (observableResult: ObservableResult) => void,
) {
return getOrCreateObservableGauge(name, options, callback);
}

getObservableUpDownCounter(name: string, options?: MetricOptions) {
return getOrCreateObservableUpDownCounter(name, options);
getObservableUpDownCounter(
name: string,
options?: MetricOptions,
callback?: (observableResult: ObservableResult) => void,
) {
return getOrCreateObservableUpDownCounter(name, options, callback);
}
}

0 comments on commit 7d89c1f

Please sign in to comment.