UNPKG

@apolitical/server

Version:

Node.js module to encapsulate Apolitical's express server setup

26 lines (23 loc) 1.11 kB
'use strict'; const { NodeSDK } = require('@opentelemetry/sdk-node'); const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc'); const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node'); const { resourceFromAttributes } = require('@opentelemetry/resources'); const { ATTR_SERVICE_NAME } = require('@opentelemetry/semantic-conventions'); module.exports = ({ logger }) => { return async function load() { const serviceName = process.env.PROJECT_NAME || 'unknown-v1-api'; const oltpEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://opentelemetry-collector.public.svc.cluster.local:4317'; const sdk = new NodeSDK({ resource: resourceFromAttributes({ [ATTR_SERVICE_NAME]: serviceName, }), traceExporter: new OTLPTraceExporter({ url: oltpEndpoint }), instrumentations: [getNodeAutoInstrumentations()], }); sdk.start(); const log = logger.where(__filename, 'load'); log.info(`OpenTelemetry SDK started with service name ${serviceName} and endpoint ${oltpEndpoint}`); }; };