Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Metric sample creation

emit’s metric infrastructure works with Metric samples, which are a kind of Event specialized for carrying metric samples.

Using Metric directly

Metrics can be constructed manually:

#![allow(unused)]
fn main() {
extern crate emit;
// Construct a `Metric` manually
let metric = emit::Metric::new(
    // The module that owns the metric
    emit::mdl!(),
    // The time when the sample was produced, or the span of time it covers
    emit::clock().now(),
    // Additional properties for the metric
    emit::props! {
        // The name of the metric
        metric_name: "my_metric",
        // The aggregation used to produce the sample
        metric_agg: "count",
        // The metric sample itself
        metric_value: 42,
    },
);
}

Using macros

emit also defines macros for producing metric samples for specific aggregations. Each well-known aggregation has a corresponding macro:

This example produces an equivalent Metric) to the manual one above:

#![allow(unused)]
fn main() {
extern crate emit;
let metric = emit::count_metric!(name: "my_metric", value: 42);
}

The name and value control parameters are required. If the value is bound to an identifier then that identifier will be used as the name by default. The example below is equivalent to the ones above:

#![allow(unused)]
fn main() {
extern crate emit;
let my_metric = 42;

let metric = emit::count_metric!(value: my_metric);
}