UNPKG

@boxyhq/metrics

Version:

Internal SDK for OTel instrumentation

47 lines (46 loc) 2.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeMetrics = initializeMetrics; const api_1 = require("@opentelemetry/api"); const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http"); const exporter_metrics_otlp_grpc_1 = require("@opentelemetry/exporter-metrics-otlp-grpc"); const sdk_metrics_1 = require("@opentelemetry/sdk-metrics"); const resources_1 = require("@opentelemetry/resources"); const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); /** * Configure the exporter and also a global MeterProvider. * * See https://opentelemetry.io/docs/instrumentation/js/instrumentation/#initialize-metrics */ function initializeMetrics(serviceInfo) { if (process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT || process.env.OTEL_EXPORTER_OTLP_ENDPOINT) { /** exportIntervalMillis must be greater than exportTimeoutMillis */ const exportIntervalMillis = Number(process.env.OTEL_EXPORT_INTERVAL_MS) || 60000; const exportTimeoutMillis = Number(process.env.OTEL_EXPORT_INTERVAL_MS) - 1000 || 30000; let metricExporter; if (process.env.OTEL_EXPORTER_OTLP_PROTOCOL === 'grpc' || process.env.OTEL_EXPORTER_OTLP_METRICS_PROTOCOL === 'grpc') { metricExporter = new exporter_metrics_otlp_grpc_1.OTLPMetricExporter(); } else { metricExporter = new exporter_metrics_otlp_http_1.OTLPMetricExporter(); } const meterProvider = new sdk_metrics_1.MeterProvider({ resource: (0, resources_1.resourceFromAttributes)({ [semantic_conventions_1.ATTR_SERVICE_NAME]: `${serviceInfo.name}`, [semantic_conventions_1.ATTR_SERVICE_VERSION]: `${serviceInfo.version}`, }), readers: [ new sdk_metrics_1.PeriodicExportingMetricReader({ exporter: metricExporter, exportIntervalMillis, exportTimeoutMillis, }), ], }); api_1.metrics.setGlobalMeterProvider(meterProvider); } if (process.env.OTEL_EXPORTER_DEBUG) { api_1.diag.setLogger(new api_1.DiagConsoleLogger(), api_1.DiagLogLevel.DEBUG); } }