-
Notifications
You must be signed in to change notification settings - Fork 0
/
instrumentation-node.ts
57 lines (44 loc) · 1.48 KB
/
instrumentation-node.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
'use strict'
import { NodeSDK } from '@opentelemetry/sdk-node';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';
import * as logsAPI from '@opentelemetry/api-logs'
import {
LoggerProvider,
BatchLogRecordProcessor
} from '@opentelemetry/sdk-logs';
import {
SEMRESATTRS_SERVICE_NAME,
SEMRESATTRS_SERVICE_VERSION,
} from '@opentelemetry/semantic-conventions';
import { Resource } from '@opentelemetry/resources';
const logExporter = new OTLPLogExporter();
const loggerProvider = new LoggerProvider({
resource: new Resource({
[SEMRESATTRS_SERVICE_NAME]: 'morphic',
})
});
loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));
logsAPI.logs.setGlobalLoggerProvider(loggerProvider);
const traceExporter = new OTLPTraceExporter();
const sdk = new NodeSDK({
resource: new Resource({
[SEMRESATTRS_SERVICE_NAME]: 'morphic',
}),
traceExporter,
instrumentations: [
getNodeAutoInstrumentations({
'@opentelemetry/instrumentation-fs': {
requireParentSpan: true,
},
})
],
});
process.on('SIGTERM', () => {
sdk.shutdown()
.then(() => console.log('Tracing terminated'))
.catch((error) => console.log('Error terminating tracing', error))
.finally(() => process.exit(0));
});
sdk.start();