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()); 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(); main();

View File

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