UNPKG

@ogcio/o11y-sdk-node

Version:

Opentelemetry standard instrumentation SDK for NodeJS based project

25 lines (24 loc) 942 B
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); }