Skip to content
Snippets Groups Projects

Enable head-based sampling and add some scripts for large scale deployment

Merged Zhiqiang Xie requested to merge zxie into main
1 file
+ 1
1
Compare changes
  • Side-by-side
  • Inline
+ 28
42
@@ -12,6 +12,9 @@
#include "opentelemetry/exporters/jaeger/jaeger_exporter.h"
#include "opentelemetry/exporters/memory/in_memory_span_exporter.h"
#include "opentelemetry/exporters/ostream/span_exporter.h"
#include "opentelemetry/sdk/trace/sampler.h"
#include "opentelemetry/sdk/trace/samplers/always_on.h"
#include "opentelemetry/sdk/trace/samplers/parent.h"
#include "opentelemetry/sdk/trace/simple_processor.h"
#include "opentelemetry/sdk/trace/tracer_provider.h"
#include "opentelemetry/trace/noop.h"
@@ -19,15 +22,12 @@
namespace hindsightgrpc {
namespace trace_sdk = opentelemetry::sdk::trace;
using opentelemetry::sdk::resource::Resource;
using opentelemetry::trace::TracerProvider;
inline void initStdoutOpenTelemetry() {
auto exporter = std::unique_ptr<trace_sdk::SpanExporter>(
new opentelemetry::exporter::trace::OStreamSpanExporter);
auto processor = std::unique_ptr<trace_sdk::SpanProcessor>(
new trace_sdk::SimpleSpanProcessor(std::move(exporter)));
inline void initNoopOpenTelemetry() {
auto provider = nostd::shared_ptr<TracerProvider>(
new trace_sdk::TracerProvider(std::move(processor)));
new opentelemetry::trace::NoopTracerProvider());
// Set the global trace provider
trace_api::Provider::SetTracerProvider(provider);
@@ -36,30 +36,33 @@ inline void initStdoutOpenTelemetry() {
initGrpcPropagation();
}
inline void initNoopOpenTelemetry() {
auto provider = nostd::shared_ptr<TracerProvider>(
new opentelemetry::trace::NoopTracerProvider());
inline void initTracer(std::unique_ptr<trace_sdk::SpanExporter>& exporter) {
auto processor = std::unique_ptr<trace_sdk::SpanProcessor>(
new trace_sdk::SimpleSpanProcessor(std::move(exporter)));
std::vector<std::unique_ptr<trace_sdk::SpanProcessor>> processors;
processors.push_back(std::move(processor));
auto context = std::make_shared<trace_sdk::TracerContext>(
std::move(processors), Resource::Create({}),
std::unique_ptr<trace_sdk::Sampler>(new trace_sdk::ParentBasedSampler(
std::make_shared<trace_sdk::AlwaysOnSampler>())));
auto provider = opentelemetry::nostd::shared_ptr<TracerProvider>(
new trace_sdk::TracerProvider(context));
// Set the global trace provider
trace_api::Provider::SetTracerProvider(provider);
// Set the global propagator
initGrpcPropagation();
}
inline void initStdoutOpenTelemetry() {
auto exporter = std::unique_ptr<trace_sdk::SpanExporter>(
new opentelemetry::exporter::trace::OStreamSpanExporter);
initTracer(exporter);
}
inline void initLocalMemoryOpenTelemetry() {
auto exporter = std::unique_ptr<trace_sdk::SpanExporter>(
new opentelemetry::exporter::memory::InMemorySpanExporter);
auto processor = std::unique_ptr<trace_sdk::SpanProcessor>(
new trace_sdk::SimpleSpanProcessor(std::move(exporter)));
auto provider = nostd::shared_ptr<TracerProvider>(
new trace_sdk::TracerProvider(std::move(processor)));
// Set the global trace provider
trace_api::Provider::SetTracerProvider(provider);
// Set the global propagator
initGrpcPropagation();
initTracer(exporter);
}
inline void initJaegerOpenTelemetry(std::string exporter_ip,
@@ -69,28 +72,11 @@ inline void initJaegerOpenTelemetry(std::string exporter_ip,
opts.server_port = exporter_port;
opts.transport_format =
opentelemetry::exporter::jaeger::TransportFormat::kThriftUdpCompact;
auto exporter = std::unique_ptr<opentelemetry::sdk::trace::SpanExporter>(
auto exporter = std::unique_ptr<trace_sdk::SpanExporter>(
new opentelemetry::exporter::jaeger::JaegerExporter(opts));
auto processor = std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor>(
new opentelemetry::sdk::trace::SimpleSpanProcessor(std::move(exporter)));
std::vector<std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor>>
processors;
processors.push_back(std::move(processor));
// Default is an always-on sampler.
auto context = std::make_shared<opentelemetry::sdk::trace::TracerContext>(
std::move(processors));
auto provider =
opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider>(
new opentelemetry::sdk::trace::TracerProvider(context));
// Set the global trace provider
opentelemetry::trace::Provider::SetTracerProvider(provider);
// Set the global propagator
initGrpcPropagation();
initTracer(exporter);
}
} // namespace hindsightgrpc
} // namespace hindsightgrpc
#endif // SRC_TRACING_OPENTELEMETRY_H_
\ No newline at end of file
#endif // SRC_TRACING_OPENTELEMETRY_H_
\ No newline at end of file
Loading