08.Telemetry
install dependencies
pnpm add @effect/opentelemetrypnpm add @opentelemetry/exporter-trace-otlp-httppnpm add @opentelemetry/sdk-trace-basepnpm add @opentelemetry/sdk-trace-nodepnpm add @opentelemetry/sdk-trace-webpnpm add @opentelemetry/sdk-metricspnpm add @opentelemetry/exporter-prometheuspnpm add @opentelemetry/auto-instrumentations-node
สร้าง folder telemetry
src├── configure├── controllers├── index.ts├── repositories├── runtimes│ └── index.ts├── schema├── services├── telemetry│ └── node-sdk.ts└── types
src/telemetry/node-sdk.ts
import { NodeSdk } from "@effect/opentelemetry"import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node"import { PrometheusExporter } from "@opentelemetry/exporter-prometheus"import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base"
export const NodeSdkLive = NodeSdk.layer(() => { return { instrumentations: [getNodeAutoInstrumentations()], metricReader: new PrometheusExporter({ port: 9464, }), resource: { serviceName: "Overtime Tracking API", }, spanProcessor: new BatchSpanProcessor( new OTLPTraceExporter({ url: "http://34.126.124.178:4318/v1/traces", // Tempo OTLP HTTP }), ), }})