UNPKG

tilt-ts-core

Version:

A TypeScript implementation of a Tilt-like development tool for Kubernetes live development workflows

50 lines (49 loc) 2.12 kB
import { NodeSDK } from '@opentelemetry/sdk-node'; import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'; import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; import * as resources from '@opentelemetry/resources'; import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; import { logs } from '@opentelemetry/api-logs'; import { SimpleLogRecordProcessor, BatchLogRecordProcessor, ConsoleLogRecordExporter, LoggerProvider } from '@opentelemetry/sdk-logs'; import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http'; // src/instrumentation/telemetry.ts var resource = resources.resourceFromAttributes({ [SemanticResourceAttributes.SERVICE_NAME]: "tilt-ts-core", [SemanticResourceAttributes.SERVICE_VERSION]: "1.0.0" }); var sdk = new NodeSDK({ resource, traceExporter: new OTLPTraceExporter(), instrumentations: [getNodeAutoInstrumentations()] }); sdk.start(); var processors = [ new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()), new BatchLogRecordProcessor(new OTLPLogExporter()) ]; var loggerProvider = new LoggerProvider({ resource, processors }); logs.setGlobalLoggerProvider(loggerProvider); console.log("Tracing enabled"); var handleExit = (reason, e) => { console.log(`Trace Process exiting: ${reason}`, e); Promise.allSettled([sdk.shutdown(), loggerProvider.shutdown()]).then(() => console.log("Tracing terminated")).catch((error) => console.log("Error terminating tracing", error)).finally(() => process.exit(0)); }; process.on("SIGINT", () => handleExit("SIGINT")); process.on("SIGTERM", () => handleExit("SIGTERM")); process.on("uncaughtException", (err) => { handleExit("uncaughtException", err); }); process.on("unhandledRejection", (reason) => { handleExit("unhandledRejection", reason); }); process.on("beforeExit", (code) => { handleExit("beforeExit", { code }); }); var logger = logs.getLogger("app"); logger.emit({ severityText: "INFO", body: "server started", attributes: { port: 8080 } }); //# sourceMappingURL=telemetry.js.map //# sourceMappingURL=telemetry.js.map