common-core-pkg
Version:
Common package for all the utils
36 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupOpenTelemetry = setupOpenTelemetry;
const sdk_node_1 = require("@opentelemetry/sdk-node");
const resources_1 = require("@opentelemetry/resources");
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
const auto_instrumentations_node_1 = require("@opentelemetry/auto-instrumentations-node");
const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
const exporter_prometheus_1 = require("@opentelemetry/exporter-prometheus");
async function setupOpenTelemetry(config) {
const detectedResource = await (0, resources_1.detectResources)({
detectors: [resources_1.envDetector, resources_1.processDetector],
});
const resource = (0, resources_1.resourceFromAttributes)({
[semantic_conventions_1.ATTR_SERVICE_NAME]: config.appName,
[semantic_conventions_1.ATTR_SERVICE_VERSION]: config.appVersion,
'deployment.environment': config.deplomentEnv,
});
const mergedResource = detectedResource.merge(resource);
const traceExporter = new exporter_trace_otlp_http_1.OTLPTraceExporter({
url: config.traceUrl,
});
const prometheusExporter = new exporter_prometheus_1.PrometheusExporter({
port: 9464,
endpoint: '/metrics',
});
const sdk = new sdk_node_1.NodeSDK({
resource: mergedResource,
traceExporter,
metricReader: prometheusExporter,
instrumentations: [(0, auto_instrumentations_node_1.getNodeAutoInstrumentations)()],
});
console.log('✅ OpenTelemetry started at http://localhost:9464/metrics');
return sdk;
}
//# sourceMappingURL=index.js.map