pub struct CollectorPipeline { /* private fields */ }
Available on crate features collector_client or wasm_collector_client only.
Expand description

CollectorPipeline config and build a exporter targeting a jaeger collector using HTTP protocol.

Environment variables

  • OTEL_EXPORTER_JAEGER_ENDPOINT: set the endpoint of the collector. Usually starts with http:// or https://

  • OTEL_EXPORTER_JAEGER_TIMEOUT: set the timeout of the http client timeout. It only applies to build in http clients.

  • OTEL_EXPORTER_JAEGER_USER: set the username. Part of the authentication for the collector. It only applies to build in http clients.

  • OTEL_EXPORTER_JAEGER_PASSWORD: set the password. Part of the authentication for the collector. It only applies to build in http clients.

Built-in http clients

To help user setup the exporter, opentelemetry-jaeger provides the following build in http client implementation and relative configurations.

Additionally you can enable https

Note that the functions to setup build in http clients override each other. That means if you have a pipeline with the following setup

let tracer = opentelemetry_jaeger::new_collector_pipeline()
        .with_surf()
        .with_reqwest()
        .install_batch(opentelemetry::runtime::Tokio)

The pipeline will use reqwest http client.

Implementations§

source§

impl CollectorPipeline

source

pub fn with_timeout(self, collector_timeout: Duration) -> Self

Available on crate feature collector_client only.

Set the http client timeout.

This function only applies to build in http clients.

Default to be 10s.

source

pub fn with_endpoint<T>(self, collector_endpoint: T) -> Selfwhere Uri: TryFrom<T>, <Uri as TryFrom<T>>::Error: Into<InvalidUri>,

Set the collector endpoint.

E.g. “http://localhost:14268/api/traces”

source

pub fn with_username<S: Into<String>>(self, collector_username: S) -> Self

Set the username used in authentication to communicate with the collector.

Note that if the password is not set by calling with_password or set OTEL_EXPORTER_JAEGER_PASSWORD environment variables. The username will be ignored.

This function only applies to build in http clients.

source

pub fn with_password<S: Into<String>>(self, collector_password: S) -> Self

Set the password used in authentication to communicate with the collector.

Note that if the username is not set by calling with_username or set OTEL_EXPORTER_JAEGER_USER environment variables. The username will be ignored.

This function only applies to build in http clients.

source

pub fn collector_username(&self) -> Option<String>

Get collector’s username set in the builder. Default to be the value of OTEL_EXPORTER_JAEGER_USER environment variable.

If users uses custom http client. This function can help retrieve the value of OTEL_EXPORTER_JAEGER_USER environment variable.

source

pub fn collector_password(&self) -> Option<String>

Get the collector’s password set in the builder. Default to be the value of OTEL_EXPORTER_JAEGER_PASSWORD environment variable.

If users uses custom http client. This function can help retrieve the value of OTEL_EXPORTER_JAEGER_PASSWORD environment variable.

source

pub fn with_http_client<T: HttpClient + 'static>(self, client: T) -> Self

Available on crate feature collector_client only.

Custom http client used to send spans.

Note that all configuration other than the endpoint are not applicable to custom clients.

source

pub fn with_isahc(self) -> Self

Available on crate feature isahc_collector_client only.

Use isahc http client in the exporter.

source

pub fn with_surf(self) -> Self

Available on crate feature surf_collector_client only.

Use surf http client in the exporter.

source

pub fn with_reqwest(self) -> Self

Available on crate feature reqwest_collector_client only.

Use reqwest http client in the exporter.

source

pub fn with_reqwest_blocking(self) -> Self

Available on crate feature reqwest_blocking_collector_client only.

Use reqwest blocking http client in the exporter.

source

pub fn with_hyper(self) -> Self

Available on crate feature hyper_collector_client only.

Use hyper http client in the exporter.

source

pub fn with_service_name<T: Into<String>>(self, service_name: T) -> Self

Set the service name of the application. It generally is the name of application. Critically, Jaeger backend depends on Span.Process.ServiceName to identify the service that produced the spans.

Opentelemetry allows set the service name using multiple methods. This functions takes priority over all other methods.

If the service name is not set. It will default to be unknown_service.

source

pub fn with_instrumentation_library_tags(self, should_export: bool) -> Self

Config whether to export information of instrumentation library.

It’s required to report instrumentation library as span tags. However it does have a overhead on performance, performance sensitive applications can use this function to opt out reporting instrumentation library.

Default to be true.

source

pub fn with_trace_config(self, config: Config) -> Self

Assign the opentelemetry SDK configurations for the exporter pipeline.

For mapping between opentelemetry configurations and Jaeger spans. Please refer the spec.

Examples

Set service name via resource.

use opentelemetry::{sdk::{self, Resource}, KeyValue};

let pipeline = opentelemetry_jaeger::new_collector_pipeline()
                .with_trace_config(
                      sdk::trace::Config::default()
                        .with_resource(Resource::new(vec![KeyValue::new("service.name", "my-service")]))
                );
source

pub fn with_batch_processor_config(self, config: BatchConfig) -> Self

Assign the batch span processor for the exporter pipeline.

Examples

Set max queue size.

use opentelemetry::sdk::trace::BatchConfig;

let pipeline = opentelemetry_jaeger::new_collector_pipeline()
                .with_batch_processor_config(
                      BatchConfig::default().with_max_queue_size(200)
                );
source

pub fn build_batch<R: JaegerTraceRuntime>( self, runtime: R ) -> Result<TracerProvider, TraceError>

Build a TracerProvider using a async exporter and configurations from the pipeline.

The exporter will collect spans in a batch and send them to the agent.

It’s possible to lose spans up to a batch when the application shuts down. So users should use shut_down_tracer_provider to block the shut down process until all remaining spans have been sent.

Commonly used runtime are provided via rt-tokio, rt-tokio-current-thread, rt-async-std features.

source

pub fn install_batch<R: JaegerTraceRuntime>( self, runtime: R ) -> Result<Tracer, TraceError>

Similar to build_batch but also returns a tracer from the tracer provider.

The tracer name is opentelemetry-jaeger. The tracer version will be the version of this crate.

source

pub fn build_collector_exporter<R>(self) -> Result<Exporter, TraceError>where R: JaegerTraceRuntime,

Build an jaeger exporter targeting a jaeger collector.

Trait Implementations§

source§

impl Debug for CollectorPipeline

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for CollectorPipeline

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more