/rust-metrics

Multi reporter metrics library (carbon, graphite, postgresql, prometheus)

Primary LanguageRustApache License 2.0Apache-2.0

This project is stable. New features will be aimed at https://github.com/brayniac/tic. We will only be taking fixes going forward.

rust-metrics

Linux Status Kanban

Metrics are things you can use to safely & directly store metrics with little overhead. Metrics can be attached to a registry and that registry can be collected across a system. This registry also provides reporting services. Current reporters include:

Contact us on #rust-metrics on Mozilla IRC.

...
        let m = StdMeter::new();
        m.mark(

        let c = StdCounter::new();
        c.inc();

        let g = StdGauge::new();
        g.set(2);

        let mut h = Histogram::configure()
            .max_value(100)
            .precision(1)
            .build()
            .unwrap();

        h.increment_by(1, 1).unwrap();

        let mut reporter = CarbonReporter::new("test", "localhost:0".to_string(), "asd.asdf", 5);
        reporter.add("meter1", Metric::Meter(m.clone()));
        reporter.add("counter1", Metric::Counter(c.clone()));
        reporter.add("gauge1", Metric::Gauge(g.clone()));
	// Add a histogram with labels even though they ignored in this reporter
        reporter.addL("histogram", Metric::Histogram(h), Some(HashMap::new()));
        while ... {    c.inc()}
        reporter.stop();

Usage

Add this to your Cargo.toml: push only

metrics =  { version="0.2.0" }

prometheus pull support

metrics =  { version="0.2.0", features=["prometheus"] }

And add this to your crate root:

extern crate metrics

Provided scripts in bin/

  • build_docker This builds the default docker image
  • generate_pb Generates the prometheus protocol buffer code
  • run_docker This will run the docker container once it's been built (or download the last one i pushed)
  • start_docker Use docker_compose to launch prometheus, carbon/graphite and clients which send them data
  • webserver_with_prometheus Starts a webserver which runs with a prometheus reporter
  • start_prometheus_example Use docker-compose to start a prometheus server & hook it up to webserver_with_prometheus
  • webserver_with_carbon Starts a webserver with a carbon reporter
  • start_carbon_example Use docker-compose to start graphite/carbon/whisper and hook it up to webserver_with_carbon

Many of these will only run if prometheus support is enabled

TBD

Local Development

    cargo build # to build the code
    cargo test # to run the tests

To use prometheus you will might need to read these directions

    cargo build --features "prometheus" # To build code with prometheus support

License

rust-metrics is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE, LICENSE-MIT for details.

Copyright (c) 2016 Alex Newman.