@ogcio/o11y-sdk-node
Version:
Opentelemetry standard instrumentation SDK for NodeJS based project
25 lines (24 loc) • 942 B
JavaScript
import { createNoopMeter, metrics, } from "@opentelemetry/api";
const MetricsFactoryMap = {
gauge: (meter) => meter.createGauge,
histogram: (meter) => meter.createHistogram,
counter: (meter) => meter.createCounter,
updowncounter: (meter) => meter.createUpDownCounter,
"async-counter": (meter) => meter.createObservableCounter,
"async-updowncounter": (meter) => meter.createObservableUpDownCounter,
"async-gauge": (meter) => meter.createObservableGauge,
};
function getMeter({ meterName }) {
if (!meterName) {
console.error("Invalid metric name!");
return createNoopMeter();
}
return metrics.getMeter(`custom_metric.${meterName}`);
}
export function getMetric(type, p) {
const meter = getMeter(p);
if (!MetricsFactoryMap[type]) {
throw new Error(`Unsupported metric type: ${type}`);
}
return MetricsFactoryMap[type](meter).bind(meter)(p.metricName, p.options);
}