• Stars
    star
    100
  • Rank 340,703 (Top 7 %)
  • Language
    Rust
  • License
    Other
  • Created over 8 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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.