pub struct PrometheusPlugin {
prefer_name: bool,
metrics: Option<Arc<GatewayMetrics>>,
}Expand description
Records a per-consumer request counter against the shared
GatewayMetrics; a no-op when metrics are disabled (unit tests).
Fields§
§prefer_name: boolAccepted for APISIX config compatibility; inert (see module docs).
metrics: Option<Arc<GatewayMetrics>>Shared metrics handle from PluginResources; None disables recording.
Implementations§
Source§impl PrometheusPlugin
impl PrometheusPlugin
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 (all optional):
prefer_name(bool, defaultfalse): accepted for parity with APISIX’sprometheusplugin; inert in featherbit (theroutelabel is always the request host — see module docs).
type: prometheus
config:
prefer_name: trueSourcefn consumer_label(ctx: &Context) -> String
fn consumer_label(ctx: &Context) -> String
The consumer label for this request: the consumer name attached by an
upstream auth node, or anonymous when none is present.
Sourcefn route_label(ctx: &Context) -> String
fn route_label(ctx: &Context) -> String
The route label for this request. featherbit has no route object on
the context here, so the request host is used (low-cardinality);
falls back to unknown when absent.
Trait Implementations§
Source§impl Plugin for PrometheusPlugin
impl Plugin for PrometheusPlugin
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 PrometheusPlugin
impl !RefUnwindSafe for PrometheusPlugin
impl Send for PrometheusPlugin
impl Sync for PrometheusPlugin
impl Unpin for PrometheusPlugin
impl UnsafeUnpin for PrometheusPlugin
impl !UnwindSafe for PrometheusPlugin
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