-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathresponse-validation.js
More file actions
48 lines (40 loc) · 1.95 KB
/
response-validation.js
File metadata and controls
48 lines (40 loc) · 1.95 KB
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
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter: OTLPTraceExporterHttp } = require('@opentelemetry/exporter-trace-otlp-http');
const { OTLPTraceExporter: OTLPTraceExporterProto } = require('@opentelemetry/exporter-trace-otlp-proto');
const { Resource } = require('@opentelemetry/resources');
const { ATTR_SERVICE_NAME } = require('@opentelemetry/semantic-conventions');
exports.handler = async (event, context) => {
const serviceName = context.functionName;
const requestId = context.awsRequestId;
const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4318';
const jsonProvider = new NodeTracerProvider({
resource: new Resource({ [ATTR_SERVICE_NAME]: serviceName }),
});
const jsonExporter = new OTLPTraceExporterHttp({
url: endpoint + '/v1/traces',
headers: { 'Content-Type': 'application/json' },
});
jsonProvider.addSpanProcessor(new SimpleSpanProcessor(jsonExporter));
jsonProvider.register();
const jsonSpan = jsonProvider.getTracer('json-test').startSpan('test-span-json');
jsonSpan.setAttribute('request_id', requestId);
jsonSpan.setAttribute('encoding', 'json');
jsonSpan.end();
await jsonProvider.forceFlush();
await jsonProvider.shutdown();
const protoProvider = new NodeTracerProvider({
resource: new Resource({ [ATTR_SERVICE_NAME]: serviceName }),
});
const protoExporter = new OTLPTraceExporterProto({
url: endpoint + '/v1/traces',
});
protoProvider.addSpanProcessor(new SimpleSpanProcessor(protoExporter));
const protoSpan = protoProvider.getTracer('proto-test').startSpan('test-span-protobuf');
protoSpan.setAttribute('request_id', requestId);
protoSpan.setAttribute('encoding', 'protobuf');
protoSpan.end();
await protoProvider.forceFlush();
await protoProvider.shutdown();
return { statusCode: 200, body: JSON.stringify({ message: 'Success' }) };
};