pub struct Metrics { /* private fields */ }Expand description
Trillium handler that instruments http.server.request.duration, http.server.request.body.size, and http.server.response.body.size as per semantic conventions for http.
Implementations§
Source§impl Metrics
impl Metrics
Sourcepub fn new(meter: impl Into<Metrics>) -> Self
pub fn new(meter: impl Into<Metrics>) -> Self
Constructs a new Metrics handler from a &'static str, [&Meter][Meter] or [Meter]
Sourcepub fn with_route<F>(self, route: F) -> Self
pub fn with_route<F>(self, route: F) -> Self
provides a route specification to the metrics collector.
in order to avoid forcing anyone to use a particular router, this is provided as a configuration hook.
for use with trillium-router,
use trillium_router::RouterConnExt;
trillium_opentelemetry::Metrics::new(&opentelemetry::global::meter("example"))
.with_route(|conn| conn.route().map(|r| r.to_string().into()));Sourcepub fn with_error_type<F>(self, error_type: F) -> Self
pub fn with_error_type<F>(self, error_type: F) -> Self
Provides an optional low-cardinality error type specification to the metrics collector.
The implementation of this is application specific, but will often look like checking the
[Conn::state] for an error enum and mapping that to a low-cardinality &'static str.
Sourcepub fn with_server_address_and_port<F>(self, server_address_and_port: F) -> Self
pub fn with_server_address_and_port<F>(self, server_address_and_port: F) -> Self
Provides a callback for server.address and server.port attributes to the metrics
collector.
These should be set based on request headers according to the OpenTelemetry HTTP semantic conventions.
It is not recommended to enable this when the server is exposed to clients outside of your control, as request headers could arbitrarily increase the cardinality of these attributes.
Sourcepub fn with_duration_histogram_boundaries(self, boundaries: Vec<f64>) -> Self
pub fn with_duration_histogram_boundaries(self, boundaries: Vec<f64>) -> Self
Sets histogram boundaries for request durations (in seconds).
This sets the histogram bucket boundaries for the http.server.request.duration
metric.
Sourcepub fn with_request_size_histogram_boundaries(
self,
boundaries: Vec<f64>,
) -> Self
pub fn with_request_size_histogram_boundaries( self, boundaries: Vec<f64>, ) -> Self
Sets histogram boundaries for request sizes (in bytes).
This sets the histogram bucket boundaries for the http.server.request.body.size
metric.
Sourcepub fn with_response_size_histogram_boundaries(
self,
boundaries: Vec<f64>,
) -> Self
pub fn with_response_size_histogram_boundaries( self, boundaries: Vec<f64>, ) -> Self
Sets histogram boundaries for response sizes (in bytes).
This sets the histogram bucket boundaries for the http.server.response.body.size
metric.
Trait Implementations§
Source§impl Handler for Metrics
impl Handler for Metrics
Source§async fn run(&self, conn: Conn) -> Conn
async fn run(&self, conn: Conn) -> Conn
Source§async fn init(&mut self, _: &mut Info)
async fn init(&mut self, _: &mut Info)
Source§async fn before_send(&self, conn: Conn) -> Conn
async fn before_send(&self, conn: Conn) -> Conn
§fn has_upgrade(&self, upgrade: &Upgrade) -> bool
fn has_upgrade(&self, upgrade: &Upgrade) -> bool
Handler::upgrade]. The first handler that responds true to this will receive
ownership of the [trillium::Upgrade][crate::Upgrade] in a subsequent call to
[Handler::upgrade]§fn upgrade(&self, upgrade: Upgrade) -> impl Future<Output = ()> + Send
fn upgrade(&self, upgrade: Upgrade) -> impl Future<Output = ()> + Send
Handler::has_upgrade] and will
only be called once for this upgrade. There is no return value, and this function takes
exclusive ownership of the underlying transport once this is called. You can downcast
the transport to whatever the source transport type is and perform any non-http protocol
communication that has been negotiated. You probably don’t want this unless you’re
implementing something like websockets. Please note that for many transports such as
TcpStreams, dropping the transport (and therefore the Upgrade) will hang up /
disconnect.