pub struct OpenTelemetryPlugin {
phase: Phase,
collector: String,
service_name: String,
sampler: Sampler,
ssl_verify: bool,
timeout: Duration,
client: Arc<OutboundClient>,
}Expand description
One node of the OpenTelemetry tracing pair.
Fields§
§phase: Phase§collector: StringOTLP/HTTP collector base URL (no trailing slash); traces POST to
<collector>/v1/traces.
service_name: String§sampler: Sampler§ssl_verify: bool§timeout: Duration§client: Arc<OutboundClient>Implementations§
Source§impl OpenTelemetryPlugin
impl OpenTelemetryPlugin
Sourcepub fn from_config(
config: &HashMap<String, Value>,
resources: &Arc<PluginResources>,
) -> Result<Self, String>
pub fn from_config( config: &HashMap<String, Value>, resources: &Arc<PluginResources>, ) -> Result<Self, String>
Builds the plugin from node config.
Config keys:
| Key | Type | Default | Description |
|---|---|---|---|
phase | string | — (required) | start (before upstream) or end (after upstream). |
endpoint / collector | string | http://localhost:4318 | OTLP/HTTP collector base URL; traces POST to <collector>/v1/traces. |
service_name | string | "featherbit" | service.name resource attribute reported on each span. |
sampler.name | string | always_on | always_on, always_off, or trace_id_ratio. |
sampler.options.fraction | number | 1.0 | Fraction of new traces to sample for trace_id_ratio, in 0.0..=1.0. |
ssl_verify | bool | true | Verify the collector’s TLS certificate. |
timeout | int (seconds) | 3 | Export request timeout (end node). |
Fails fast on an unknown phase, an unknown sampler name, or a
fraction outside 0.0..=1.0.
# start node — right after listener, before upstream
- id: otel-start
type: opentelemetry
config:
phase: start
service_name: my-gateway
sampler: { name: trace_id_ratio, options: { fraction: 0.1 } }
# end node — after upstream, right before client
- id: otel-end
type: opentelemetry
config:
phase: end
endpoint: http://localhost:4318Trait Implementations§
Source§impl Plugin for OpenTelemetryPlugin
impl Plugin for OpenTelemetryPlugin
Source§fn plugin_type(&self) -> &str
fn plugin_type(&self) -> &str
Unique identifier for the plugin type (e.g., “proxy-rewrite”, “upstream”).
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: Context,
_named_inputs: &'life1 HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: Context,
_named_inputs: &'life1 HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Executes the plugin logic against the request/response context. Read more
Auto Trait Implementations§
impl Freeze for OpenTelemetryPlugin
impl !RefUnwindSafe for OpenTelemetryPlugin
impl Send for OpenTelemetryPlugin
impl Sync for OpenTelemetryPlugin
impl Unpin for OpenTelemetryPlugin
impl UnsafeUnpin for OpenTelemetryPlugin
impl !UnwindSafe for OpenTelemetryPlugin
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more