统一 Node 22 与后端安全运行基线(07-15-production-trust-closeout-cleanup)

这个提交包含在:
2026-07-16 05:17:18 +08:00
父节点 dcf34d7ac6
当前提交 abb6a22f5c
共修改 28 个文件,包含 2250 行新增和 3012 行删除
+47 -33
查看文件
@@ -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 };