From 590d519c7609809a761a33d873d1b68926ca6db8 Mon Sep 17 00:00:00 2001 From: limfriend Date: Thu, 11 Jul 2019 11:49:37 +0800 Subject: [PATCH] add option 'endpoint', the default endpoint is '/api/v1/spans' --- zipkin/include/zipkin/tracer.h | 2 +- zipkin/src/zipkin_core_constants.h | 1 - zipkin/src/zipkin_http_transporter.cc | 12 +++++++----- zipkin/src/zipkin_http_transporter.h | 1 + zipkin_opentracing/include/zipkin/opentracing.h | 1 + zipkin_opentracing/src/opentracing.cc | 1 + 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/zipkin/include/zipkin/tracer.h b/zipkin/include/zipkin/tracer.h index 0831a07..16f0f03 100644 --- a/zipkin/include/zipkin/tracer.h +++ b/zipkin/include/zipkin/tracer.h @@ -55,7 +55,7 @@ typedef std::unique_ptr ReporterPtr; * @return a Reporter object. */ ReporterPtr makeHttpReporter( - const char *collector_host, uint32_t collector_port, + const char *collector_host, uint32_t collector_port, const char* collecotor_endpoint, std::chrono::milliseconds collector_timeout = DEFAULT_TRANSPORT_TIMEOUT, SteadyClock::duration reporting_period = DEFAULT_REPORTING_PERIOD, size_t max_buffered_spans = DEFAULT_SPAN_BUFFER_SIZE); diff --git a/zipkin/src/zipkin_core_constants.h b/zipkin/src/zipkin_core_constants.h index 7b340fe..e115e9b 100644 --- a/zipkin/src/zipkin_core_constants.h +++ b/zipkin/src/zipkin_core_constants.h @@ -35,7 +35,6 @@ class ZipkinCoreConstantValues { const std::string ALWAYS_SAMPLE = "1"; - const std::string DEFAULT_COLLECTOR_ENDPOINT = "/api/v1/spans"; }; typedef ConstSingleton ZipkinCoreConstants; diff --git a/zipkin/src/zipkin_http_transporter.cc b/zipkin/src/zipkin_http_transporter.cc index 0424321..ce3a7b2 100644 --- a/zipkin/src/zipkin_http_transporter.cc +++ b/zipkin/src/zipkin_http_transporter.cc @@ -7,17 +7,17 @@ #include namespace zipkin { -static std::string getUrl(const char *collector_host, uint32_t collector_port) { +static std::string getUrl(const char *collector_host, uint32_t collector_port, const char *collector_endpoint) { return std::string{"http://"} + collector_host + ":" + - std::to_string(collector_port) + - ZipkinCoreConstants::get().DEFAULT_COLLECTOR_ENDPOINT; + std::to_string(collector_port) + collector_endpoint; } ZipkinHttpTransporter::ZipkinHttpTransporter(const char *collector_host, uint32_t collector_port, + const char *collector_endpoint, std::chrono::milliseconds collector_timeout) { auto rcode = curl_easy_setopt(handle_, CURLOPT_URL, - getUrl(collector_host, collector_port).c_str()); + getUrl(collector_host, collector_port, collector_endpoint).c_str()); if (rcode != CURLE_OK) { throw CurlError{rcode}; } @@ -59,11 +59,13 @@ void ZipkinHttpTransporter::transportSpans(SpanBuffer &spans) try { ReporterPtr makeHttpReporter(const char *collector_host, uint32_t collector_port, + const char *collector_endpoint, std::chrono::milliseconds collector_timeout, SteadyClock::duration reporting_period, size_t max_buffered_spans) try { std::unique_ptr transporter{ - new ZipkinHttpTransporter{collector_host, collector_port, collector_timeout}}; + new ZipkinHttpTransporter{collector_host, collector_port, collector_endpoint, + collector_timeout}}; std::unique_ptr reporter{new ReporterImpl{ std::move(transporter), reporting_period, max_buffered_spans}}; return reporter; diff --git a/zipkin/src/zipkin_http_transporter.h b/zipkin/src/zipkin_http_transporter.h index e70de64..8fe4d3e 100644 --- a/zipkin/src/zipkin_http_transporter.h +++ b/zipkin/src/zipkin_http_transporter.h @@ -91,6 +91,7 @@ class ZipkinHttpTransporter : public Transporter { * Throws CurlError if the handle can't be initialized. */ ZipkinHttpTransporter(const char *collector_host, uint32_t collector_port, + const char *collector_endpoint, std::chrono::milliseconds collector_timeout = DEFAULT_TRANSPORT_TIMEOUT); /** diff --git a/zipkin_opentracing/include/zipkin/opentracing.h b/zipkin_opentracing/include/zipkin/opentracing.h index f8e9e0d..37d1c8c 100644 --- a/zipkin_opentracing/include/zipkin/opentracing.h +++ b/zipkin_opentracing/include/zipkin/opentracing.h @@ -12,6 +12,7 @@ struct ZipkinOtTracerOptions { double sample_rate = 1.0; std::string service_name; + std::string collector_endpoint = "/api/v1/spans"; IpAddress service_address; }; diff --git a/zipkin_opentracing/src/opentracing.cc b/zipkin_opentracing/src/opentracing.cc index 302edc2..94186e4 100644 --- a/zipkin_opentracing/src/opentracing.cc +++ b/zipkin_opentracing/src/opentracing.cc @@ -398,6 +398,7 @@ std::shared_ptr makeZipkinOtTracer(const ZipkinOtTracerOptions &options) { auto reporter = makeHttpReporter(options.collector_host.c_str(), options.collector_port, + options.collector_endpoint.c_str(), options.collector_timeout, options.reporting_period, options.max_buffered_spans); return makeZipkinOtTracer(options, std::move(reporter));