Struct actix_web_opentelemetry::RequestMetrics
source · [−]pub struct RequestMetrics { /* private fields */ }Available on crate feature
metrics only.Expand description
Request metrics tracking
Examples
use actix_web::{dev, http, web, App, HttpRequest, HttpServer};
use actix_web_opentelemetry::{
PrometheusMetricsHandler,
RequestMetricsBuilder,
RequestTracing,
};
use opentelemetry::{
global,
sdk::{
export::metrics::aggregation,
metrics::{controllers, processors, selectors},
propagation::TraceContextPropagator,
},
};
#[actix_web::main]
async fn main() -> std::io::Result<()> {
// Request metrics middleware
let meter = global::meter("actix_web");
let request_metrics = RequestMetricsBuilder::new().build(meter);
// Prometheus request metrics handler
let controller = controllers::basic(
processors::factory(
selectors::simple::histogram([1.0, 2.0, 5.0, 10.0, 20.0, 50.0]),
aggregation::cumulative_temporality_selector(),
)
.with_memory(true),
)
.build();
let exporter = opentelemetry_prometheus::exporter(controller).init();
let metrics_handler = PrometheusMetricsHandler::new(exporter);
// Run actix server, metrics are now available at http://localhost:8080/metrics
HttpServer::new(move || {
App::new()
.wrap(RequestTracing::new())
.wrap(request_metrics.clone())
.route("/metrics", web::get().to(metrics_handler.clone()))
})
.bind("localhost:8080")?
.run()
.await
}Trait Implementations
sourceimpl Clone for RequestMetrics
impl Clone for RequestMetrics
sourcefn clone(&self) -> RequestMetrics
fn clone(&self) -> RequestMetrics
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresourceimpl Debug for RequestMetrics
impl Debug for RequestMetrics
sourceimpl<S, B> Transform<S, ServiceRequest> for RequestMetricswhere
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
S::Future: 'static,
B: 'static,
impl<S, B> Transform<S, ServiceRequest> for RequestMetricswhere
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
S::Future: 'static,
B: 'static,
type Response = ServiceResponse<B>
type Response = ServiceResponse<B>
Responses produced by the service.
type Transform = RequestMetricsMiddleware<S>
type Transform = RequestMetricsMiddleware<S>
The
TransformService value created by this factorytype Future = Ready<Result<<RequestMetrics as Transform<S, ServiceRequest>>::Transform, <RequestMetrics as Transform<S, ServiceRequest>>::InitError>>
type Future = Ready<Result<<RequestMetrics as Transform<S, ServiceRequest>>::Transform, <RequestMetrics as Transform<S, ServiceRequest>>::InitError>>
The future response value.
sourcefn new_transform(&self, service: S) -> Self::Future
fn new_transform(&self, service: S) -> Self::Future
Creates and returns a new Transform component, asynchronously
Auto Trait Implementations
impl !RefUnwindSafe for RequestMetrics
impl Send for RequestMetrics
impl Sync for RequestMetrics
impl Unpin for RequestMetrics
impl !UnwindSafe for RequestMetrics
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more