diff --git a/app.ts b/app.ts index f67b2c6..da5feec 100644 --- a/app.ts +++ b/app.ts @@ -1 +1,16 @@ -console.log("Hello via Bun!"); \ No newline at end of file +import express from "express"; + +const PORT = parseInt(process.env.PORT || "8080"); +const app = express(); + +function getRandomNumber(min: number, max: number) { + return Math.floor(Math.random() * (max - min) + min); +} + +app.get("/rolldice", (req, res) => { + res.send(getRandomNumber(1, 6).toString()); +}); + +app.listen(PORT, () => { + console.log(`Listening for requests on http://localhost:${PORT}`); +}); diff --git a/bun.lockb b/bun.lockb index be364da..c53e25a 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/instrumentation.ts b/instrumentation.ts new file mode 100644 index 0000000..c2fee7a --- /dev/null +++ b/instrumentation.ts @@ -0,0 +1,18 @@ +// Require dependencies +import { NodeSDK } from "@opentelemetry/sdk-node"; +import { ConsoleSpanExporter } from "@opentelemetry/sdk-trace-node"; +import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node"; +import { + PeriodicExportingMetricReader, + ConsoleMetricExporter, +} from "@opentelemetry/sdk-metrics"; + +const sdk = new NodeSDK({ + traceExporter: new ConsoleSpanExporter(), + metricReader: new PeriodicExportingMetricReader({ + exporter: new ConsoleMetricExporter(), + }), + instrumentations: [getNodeAutoInstrumentations()], +}); + +sdk.start(); diff --git a/package.json b/package.json index 37717d6..6654f28 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,20 @@ "name": "otel-auto-bun-repro", "module": "app.ts", "type": "module", + "scripts": { + "start": "bun run --preload ./instrumentation.ts ./app.ts" + }, "devDependencies": { "@types/bun": "latest" }, "peerDependencies": { "typescript": "^5.0.0" + }, + "dependencies": { + "@opentelemetry/auto-instrumentations-node": "^0.41.0", + "@opentelemetry/sdk-metrics": "^1.21.0", + "@opentelemetry/sdk-node": "^0.48.0", + "@opentelemetry/sdk-trace-node": "^1.21.0", + "express": "^4.18.2" } -} \ No newline at end of file +}