fix(example): add flushInterval to report spans to Jaeger exporter (#383)

This commit is contained in:
Mayur Kale 2019-10-02 09:37:11 -07:00 committed by GitHub
parent 5f3e3982c7
commit 42a0e265b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 13 deletions

View File

@ -42,6 +42,12 @@ function main() {
console.log('Greeting:', response.getMessage());
});
});
// The process must live for at least the interval past any traces that
// must be exported, or some risk being lost if they are recorded after the
// last export.
console.log('Sleeping 5 seconds before shutdown to ensure all records are flushed.')
setTimeout(() => { console.log('Completed.'); }, 5000);
}
main();

View File

@ -8,10 +8,6 @@ const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin');
const EXPORTER = process.env.EXPORTER || '';
function setupTracerAndExporters(service) {
let exporter;
const options = {
serviceName: service
};
const tracer = new NodeTracer({
plugins: {
grpc: {
@ -21,19 +17,21 @@ function setupTracerAndExporters(service) {
}
}
});
let exporter;
if (EXPORTER.toLowerCase().startsWith('z')) {
// need ignoreOutgoingUrls: [/spans/] to avoid infinity loops
// TODO: manage this situation
const zipkinExporter = new ZipkinExporter(options);
exporter = new SimpleSpanProcessor(zipkinExporter);
exporter = new ZipkinExporter({
serviceName: service,
});
} else {
// need to shutdown exporter in order to flush spans
// TODO: check once PR #301 is merged
const jaegerExporter = new JaegerExporter(options);
exporter = new SimpleSpanProcessor(jaegerExporter);
exporter = new JaegerExporter({
serviceName: service,
// The default flush interval is 5 seconds.
flushInterval: 2000
});
}
tracer.addSpanProcessor(exporter);
tracer.addSpanProcessor(new SimpleSpanProcessor(exporter));
// Initialize the OpenTelemetry APIs to use the BasicTracer bindings
opentelemetry.initGlobalTracer(tracer);