Getting started in Rust

Here's how to get started with Rust in a new or existing project.

Add Autometrics

Add the autometrics crate dependency using cargo:

cargo add autometrics

Add the Autometrics macro

Add the #[autometrics] macro to the functions you want to instrument with metrics

use autometrics::autometrics;
pub async fn create_user() {
	// ...

Export the metrics

If you're already using Prometheus metrics in your app, you can skip this step. You only need to configure Autometrics to use the same underlying metrics collection library as your existing Prometheus metrics. See Metrics Libraries (opens in a new tab) for more information in the API reference.

Autometrics includes optional functions to help collect and prepare metrics to be scraped by Prometheus. In order to use those, add the prometheus-exporter feature to your autometrics dependency in your Cargo.toml like this:

autometrics = { version = "*", features = ["prometheus-exporter"] }

Then, in your main function, initialize the prometheus_exporter:

use autometrics::prometheus_exporter;
pub fn main() {
    // ...

And create a route on your API (probably mounted under /metrics) that returns the following:

use autometrics::prometheus_exporter::{self, PrometheusResponse};
/// Export metrics for Prometheus to scrape
pub fn get_metrics() -> PrometheusResponse {

You're set! You can now start your app and preview the metrics.

Viewing your metrics

Using Autometrics Explorer

Autometrics Explorer is an open source accompanying utility to preview and validate your metrics locally. It will automatically run Prometheus under the hood for you and show you Autometrics-instrumented functions in a web UI.

See Local Development for more information.

brew install autometrics-dev/tap/am

View your metrics in your IDE or dashboard

You can now navigate your code in your IDE, hover over the instrumented functions and you will see links for generated queries for your metrics.

If you have Grafana you can also import the Autometrics dashboard (opens in a new tab) for an overview and detailed view of the function metrics.

Configure Prometheus to scrape your metrics

Make sure your Prometheus can correctly find the metrics generated by Autometrics. See the Configuring Prometheus section for deploy target-specific instructions.

Example configuration:

  - job_name: my-app
    metrics_path: /metrics
      # Replace the port with the port your app listens on
      - targets: ['localhost:3000']
    # For a real deployment, you would want the scrape interval to be
    # longer but for testing, you want the data to show up quickly
    scrape_interval: 200ms