batch tracing spans instead of sending them all individually

This commit is contained in:
Grant Limberg 2025-07-15 09:06:12 -07:00
parent 06bc1e5e6b
commit 5329326591

View file

@ -10,6 +10,7 @@
* of this software will be governed by version 2.0 of the Apache License.
*/
/****/
#define ZT_OPENTELEMETRY_ENABLED 1
#include <algorithm>
#include <condition_variable>
@ -60,6 +61,7 @@
#include <cpp-httplib/httplib.h>
#ifdef ZT_OPENTELEMETRY_ENABLED
#include "opentelemetry/exporters/memory/in_memory_data.h"
#include "opentelemetry/exporters/otlp/otlp_grpc_exporter.h"
#include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter.h"
#include "opentelemetry/exporters/otlp/otlp_grpc_metric_exporter.h"
@ -68,10 +70,11 @@
#include "opentelemetry/sdk/metrics/metric_reader.h"
#include "opentelemetry/sdk/metrics/provider.h"
#include "opentelemetry/sdk/resource/resource.h"
#include "opentelemetry/sdk/trace/batch_span_processor.h"
#include "opentelemetry/sdk/trace/batch_span_processor_options.h"
#include "opentelemetry/sdk/trace/processor.h"
#include "opentelemetry/sdk/trace/provider.h"
#include "opentelemetry/sdk/trace/samplers/trace_id_ratio.h"
#include "opentelemetry/sdk/trace/simple_processor.h"
#include "opentelemetry/sdk/trace/tracer.h"
#include "opentelemetry/sdk/trace/tracer_context.h"
#include "opentelemetry/sdk/trace/tracer_provider.h"
@ -1065,7 +1068,11 @@ class OneServiceImpl : public OneService {
opentelemetry::v1::exporter::otlp::OtlpGrpcExporterOptions opts;
opts.endpoint = _exporterEndpoint + "/v1/traces";
auto exporter = std::unique_ptr<opentelemetry::exporter::otlp::OtlpGrpcExporter>(new opentelemetry::exporter::otlp::OtlpGrpcExporter(opts));
auto processor = std::unique_ptr<sdktrace::SpanProcessor>(new sdktrace::SimpleSpanProcessor(std::move(exporter)));
sdktrace::BatchSpanProcessorOptions batch_options {};
batch_options.schedule_delay_millis = std::chrono::milliseconds(5000); // 5 seconds
auto processor = std::unique_ptr<sdktrace::SpanProcessor>(new sdktrace::BatchSpanProcessor(std::move(exporter), batch_options));
auto processors = std::vector<std::unique_ptr<sdktrace::SpanProcessor> >();
processors.push_back(std::move(processor));
char buf[256];