@instana/core
Version:
Core library for Instana's Node.js packages
91 lines (72 loc) • 2.65 kB
JavaScript
/*
* (c) Copyright IBM Corp. 2021
* (c) Copyright Instana Inc. and contributors 2016
*/
;
exports.traceIdHeaderName = 'X-INSTANA-T';
exports.traceIdHeaderNameLowerCase = exports.traceIdHeaderName.toLowerCase();
exports.spanIdHeaderName = 'X-INSTANA-S';
exports.spanIdHeaderNameLowerCase = exports.spanIdHeaderName.toLowerCase();
exports.traceLevelHeaderName = 'X-INSTANA-L';
exports.traceLevelHeaderNameLowerCase = exports.traceLevelHeaderName.toLowerCase();
exports.syntheticHeaderName = 'X-INSTANA-SYNTHETIC';
exports.syntheticHeaderNameLowerCase = exports.syntheticHeaderName.toLowerCase();
// New Kafka trace correlation (string values) was introduced as an opt-in feature in 2021-10. Initially, it was sent
// out along with the legacy binary headers by default starting in 2022-10. However, as of 2024-10, only string headers
// are supported, and the legacy binary headers are no longer supported.
exports.kafkaTraceIdHeaderName = 'X_INSTANA_T';
exports.kafkaSpanIdHeaderName = 'X_INSTANA_S';
exports.kafkaTraceLevelHeaderName = 'X_INSTANA_L_S';
exports.kafkaTraceCorrelationDefault = true;
exports.allInstanaKafkaHeaders = [
exports.kafkaTraceIdHeaderName,
exports.kafkaSpanIdHeaderName,
exports.kafkaTraceLevelHeaderName
];
exports.w3cTraceParent = 'traceparent';
exports.w3cTraceState = 'tracestate';
exports.w3cInstana = 'in';
exports.w3cInstanaEquals = `${exports.w3cInstana}=`;
exports.ENTRY = 1;
exports.EXIT = 2;
exports.INTERMEDIATE = 3;
exports.SDK = {
ENTRY: 'entry',
EXIT: 'exit',
INTERMEDIATE: 'intermediate'
};
exports.sqsAttributeNames = {
TRACE_ID: 'X_INSTANA_T',
SPAN_ID: 'X_INSTANA_S',
LEVEL: 'X_INSTANA_L'
};
exports.snsSqsInstanaHeaderPrefixRegex = /"X_INSTANA_/i;
/**
* Determine if <span> is an entry span (server span).
* @param {import('../core').InstanaBaseSpan} span
* @returns {boolean}
*/
exports.isEntrySpan = function isEntrySpan(span) {
return span && span.k === exports.ENTRY;
};
/**
* Determine if <span> is an exit span (client span).
* @param {import('../core').InstanaBaseSpan} span
* @returns {boolean}
*/
exports.isExitSpan = function isExitSpan(span) {
return span && span.k === exports.EXIT;
};
/**
* Determine if <span> is an intermediate span (local span).
* @param {import('../core').InstanaBaseSpan} span
* @returns {boolean}
*/
exports.isIntermediateSpan = function isIntermediateSpan(span) {
return span && span.k === exports.INTERMEDIATE;
};
/**
* Set of all instrumentation groups that can be disabled.
* @type {Set<string>}
*/
exports.DISABLABLE_INSTRUMENTATION_GROUPS = new Set(['logging', 'messaging', 'databases']);