统一 Node 22 与后端安全运行基线(07-15-production-trust-closeout-cleanup)
这个提交包含在:
@@ -1,42 +1,56 @@
|
||||
const { NodeSDK } = require('@opentelemetry/sdk-node');
|
||||
const { ConsoleSpanExporter } = require('@opentelemetry/sdk-trace-node');
|
||||
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');
|
||||
const { Resource } = require('@opentelemetry/resources');
|
||||
const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions');
|
||||
const { NodeSDK } = require("@opentelemetry/sdk-node");
|
||||
const { ConsoleSpanExporter } = require("@opentelemetry/sdk-trace-node");
|
||||
const { getNodeAutoInstrumentations } = require("@opentelemetry/auto-instrumentations-node");
|
||||
const { resourceFromAttributes } = require("@opentelemetry/resources");
|
||||
const { ATTR_SERVICE_NAME } = require("@opentelemetry/semantic-conventions");
|
||||
|
||||
let sdk = null;
|
||||
|
||||
function initTracing(config) {
|
||||
if (config.otelTracesEnabled !== true) {
|
||||
return;
|
||||
}
|
||||
function initTracing(config, overrides = {}) {
|
||||
if (config.otelTracesEnabled !== true) {
|
||||
return null;
|
||||
}
|
||||
if (sdk) {
|
||||
return sdk;
|
||||
}
|
||||
|
||||
const exporter = new ConsoleSpanExporter();
|
||||
try {
|
||||
const NodeSDKImpl = overrides.NodeSDK ?? NodeSDK;
|
||||
const ConsoleSpanExporterImpl = overrides.ConsoleSpanExporter ?? ConsoleSpanExporter;
|
||||
const createResource = overrides.resourceFromAttributes ?? resourceFromAttributes;
|
||||
const buildInstrumentations = overrides.getNodeAutoInstrumentations ?? getNodeAutoInstrumentations;
|
||||
const logger = overrides.logger ?? console;
|
||||
const serviceName = overrides.serviceName ?? "hyb-oa-server";
|
||||
|
||||
sdk = new NodeSDK({
|
||||
resource: new Resource({
|
||||
[SemanticResourceAttributes.SERVICE_NAME]: 'hyb-oa-server',
|
||||
sdk = new NodeSDKImpl({
|
||||
resource: createResource({
|
||||
[ATTR_SERVICE_NAME]: serviceName,
|
||||
}),
|
||||
traceExporter: new ConsoleSpanExporterImpl(),
|
||||
instrumentations: [
|
||||
buildInstrumentations({
|
||||
"@opentelemetry/instrumentation-fs": { enabled: false },
|
||||
}),
|
||||
traceExporter: exporter,
|
||||
instrumentations: [getNodeAutoInstrumentations({
|
||||
'@opentelemetry/instrumentation-fs': { enabled: false },
|
||||
})]
|
||||
});
|
||||
|
||||
try {
|
||||
sdk.start();
|
||||
console.log('OTel tracing initialized');
|
||||
} catch (error) {
|
||||
console.error('Error initializing OTel tracing', error);
|
||||
}
|
||||
|
||||
process.on('SIGTERM', () => {
|
||||
if (sdk) {
|
||||
sdk.shutdown()
|
||||
.then(() => console.log('OTel tracing terminated'))
|
||||
.catch((error) => console.log('Error terminating OTel tracing', error));
|
||||
}
|
||||
],
|
||||
});
|
||||
sdk.start();
|
||||
logger.log("OTel tracing initialized");
|
||||
return sdk;
|
||||
} catch (error) {
|
||||
sdk = null;
|
||||
(overrides.logger ?? console).error("Error initializing OTel tracing", error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { initTracing };
|
||||
async function shutdownTracing() {
|
||||
if (!sdk) {
|
||||
return;
|
||||
}
|
||||
|
||||
const activeSdk = sdk;
|
||||
sdk = null;
|
||||
await activeSdk.shutdown();
|
||||
}
|
||||
|
||||
module.exports = { initTracing, shutdownTracing };
|
||||
|
||||
在新工单中引用
屏蔽一个用户