@apolitical/server
Version:
Node.js module to encapsulate Apolitical's express server setup
26 lines (23 loc) • 1.11 kB
JavaScript
;
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}`);
};
};