๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ“ˆ Prometheus Metrics Export

Monitoring real-time application throughput, request latencies, and error rates requires exporting metrics to monitoring platforms like Prometheus and Grafana.

ferrox-metrics initializes a Prometheus HTTP exporter running on a dedicated telemetry listener port.


1. Initializing Prometheus Exporterโ€‹

Call setup_metrics during application bootstrap:

use ferrox_metrics::{setup_metrics, record_http_request};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Starts Prometheus HTTP listener on port 9000
setup_metrics()?;

println!("๐Ÿ“Š Prometheus metrics available at http://0.0.0.0:9000/metrics");
Ok(())
}

2. Pre-Registered Metric Countersโ€‹

ferrox-metrics pre-registers standard counters:

Metric NameTypeDescription
http_requests_totalCounterTotal number of HTTP requests processed
db_queries_totalCounterTotal number of database queries executed
events_published_totalCounterTotal number of domain events published

3. Incrementing Counters in Controllersโ€‹

Increment counters using helper functions or standard metrics macros:

use ferrox_metrics::record_http_request;
use metrics::counter;

pub async fn my_controller_handler() {
record_http_request();
counter!("orders_created_total").increment(1);
}

4. Scraping /metrics Outputโ€‹

curl http://localhost:9000/metrics

Output:

# HELP http_requests_total Total number of HTTP requests processed
# TYPE http_requests_total counter
http_requests_total 15420