Skip to content

Commit 80b36f3

Browse files
committed
chore: add instrumentation
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
1 parent 638a99e commit 80b36f3

5 files changed

Lines changed: 1984 additions & 143 deletions

File tree

apps/server-nestjs/package.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@
4040
"@nestjs/config": "^4.0.2",
4141
"@nestjs/core": "^11.0.1",
4242
"@nestjs/platform-express": "^11.0.1",
43+
"@nestjs/schedule": "^5.0.1",
44+
"@opentelemetry/api": "^1.9.0",
45+
"@opentelemetry/auto-instrumentations-node": "^0.70.1",
46+
"@opentelemetry/exporter-metrics-otlp-proto": "^0.213.0",
47+
"@opentelemetry/exporter-trace-otlp-proto": "^0.213.0",
48+
"@opentelemetry/instrumentation-nestjs-core": "^0.58.0",
49+
"@opentelemetry/instrumentation-pino": "^0.59.0",
50+
"@opentelemetry/sdk-metrics": "^2.5.1",
51+
"@opentelemetry/sdk-node": "^0.212.0",
52+
"@opentelemetry/sdk-trace-node": "^2.5.1",
4353
"@prisma/client": "^6.0.1",
4454
"@ts-rest/core": "^3.52.1",
4555
"@ts-rest/fastify": "^3.52.1",
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { NodeSDK } from '@opentelemetry/sdk-node'
2+
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'
3+
import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'
4+
import { NestInstrumentation } from '@opentelemetry/instrumentation-nestjs-core'
5+
import { PinoInstrumentation } from '@opentelemetry/instrumentation-pino'
6+
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'
7+
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto'
8+
9+
function createSdk() {
10+
return new NodeSDK({
11+
traceExporter: new OTLPTraceExporter({}),
12+
metricReader: new PeriodicExportingMetricReader({
13+
exporter: new OTLPMetricExporter(),
14+
}),
15+
instrumentations: [
16+
getNodeAutoInstrumentations(),
17+
new NestInstrumentation(),
18+
new PinoInstrumentation(),
19+
],
20+
serviceName: 'cloud-pi-native-console',
21+
})
22+
}
23+
24+
export function instrument() {
25+
const sdk = createSdk()
26+
sdk.start()
27+
process.on('SIGTERM', () => {
28+
sdk.shutdown()
29+
})
30+
}

apps/server-nestjs/src/main.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NestFactory } from '@nestjs/core'
22
import { Logger } from 'nestjs-pino'
3-
3+
import { instrument } from './instrumentation'
44
import { MainModule } from './main.module'
55

66
async function bootstrap() {
@@ -9,4 +9,6 @@ async function bootstrap() {
99
app.flushLogs()
1010
await app.listen(process.env.PORT ?? 0)
1111
}
12+
13+
instrument()
1214
bootstrap()

docker/docker-compose.local.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,24 @@ services:
9696
- dso-network
9797
attach: false
9898

99+
jaeger:
100+
restart: unless-stopped
101+
image: jaegertracing/all-in-one:1.76.0
102+
container_name: dso-console_jaeger
103+
environment:
104+
COLLECTOR_ZIPKIN_HOST_PORT: :9411
105+
ports:
106+
- 16686:16686
107+
- 4317:4317
108+
- 4318:4318
109+
- 14250:14250
110+
- 14268:14268
111+
- 14269:14269
112+
- 9411:9411
113+
networks:
114+
- dso-network
115+
attach: false
116+
99117
networks:
100118
dso-network:
101119
driver: bridge

0 commit comments

Comments
 (0)