forked from GoogleCloudPlatform/microservices-demo
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathtracer.js
45 lines (36 loc) · 1.46 KB
/
tracer.js
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
'use strict';
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const { GrpcInstrumentation } = require('@opentelemetry/instrumentation-grpc');
const { PinoInstrumentation } = require('@opentelemetry/instrumentation-pino');
const { Resource } = require('@opentelemetry/resources');
const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions');
const os = require('os');
const resource = new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: 'CurrencyService',
[SemanticResourceAttributes.SERVICE_INSTANCE_ID]: process.env.HOSTNAME || os.hostname(),
[SemanticResourceAttributes.K8S_POD_UID]: process.env.POD_UID
});
const traceProvider = new NodeTracerProvider({
resource,
});
let url = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
const collectorOptions = {
url,
};
const traceExporter = new OTLPTraceExporter(collectorOptions);
traceProvider.addSpanProcessor(new BatchSpanProcessor(traceExporter));
traceProvider.register();
registerInstrumentations({
instrumentations: [
new PinoInstrumentation({
logHook: (_span, record) => {
record['service.name'] =
traceProvider.resource.attributes['service.name'];
},
}),
new GrpcInstrumentation(),
],
});