pub struct ZipkinPlugin {
phase: Phase,
endpoint: String,
service_name: String,
server_addr: Option<String>,
sample_ratio: f64,
ssl_verify: bool,
timeout: Duration,
client: Arc<OutboundClient>,
}Expand description
One node of the Zipkin tracing pair.
Fields§
§phase: Phase§endpoint: StringFull collector URL spans POST to, e.g.
http://localhost:9411/api/v2/spans.
service_name: String§server_addr: Option<String>Optional localEndpoint.ipv4 reported on each span.
sample_ratio: f64Fraction of new traces to sample, in 0.0..=1.0.
ssl_verify: bool§timeout: Duration§client: Arc<OutboundClient>Implementations§
Source§impl ZipkinPlugin
impl ZipkinPlugin
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 | string | — (required) | Full Zipkin v2 collector URL, e.g. http://localhost:9411/api/v2/spans. |
service_name | string | "featherbit" | localEndpoint.serviceName reported on each span. |
server_addr | string | — | Optional localEndpoint.ipv4 for the reporting host. |
sample_ratio | number | 1.0 | Fraction of new traces to sample, 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, a missing/empty endpoint, or a
sample_ratio outside 0.0..=1.0. The same config (including
endpoint) is placed on both the start and end nodes.
# start node — right after listener, before upstream
- id: zipkin-start
type: zipkin
config:
phase: start
endpoint: http://localhost:9411/api/v2/spans
service_name: my-gateway
sample_ratio: 0.1
# end node — after upstream, right before client
- id: zipkin-end
type: zipkin
config:
phase: end
endpoint: http://localhost:9411/api/v2/spansSourcefn sample_new(&self, trace_id: &str) -> bool
fn sample_new(&self, trace_id: &str) -> bool
Decides whether a brand-new trace should be sampled, per sample_ratio.
Trait Implementations§
Source§impl Plugin for ZipkinPlugin
impl Plugin for ZipkinPlugin
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 ZipkinPlugin
impl !RefUnwindSafe for ZipkinPlugin
impl Send for ZipkinPlugin
impl Sync for ZipkinPlugin
impl Unpin for ZipkinPlugin
impl UnsafeUnpin for ZipkinPlugin
impl !UnwindSafe for ZipkinPlugin
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