4个版本

0.1.3 2019年8月28日
0.1.2 2019年8月28日
0.1.1 2019年8月25日
0.1.0 2019年8月25日

#54#instrumentation


instrumented-codegen使用

MIT许可证

12KB
181

Current Crates.io Version Docs pipeline status coverage report

Instrumented 🎸

观察你的服务。

你可以使用环境变量METRICS_PREFIX指定全局指标前缀,并使用环境变量METRICS_LABELS提供默认标签,该变量接受以命令分隔的label=value对的列表。例如

METRICS_PREFIX=myapp
METRICS_LABELS=app=myapp,env=prod,region=us

示例

extern crate instrumented;
extern crate log;
extern crate reqwest;

use instrumented::instrument;

#[instrument(INFO)]
fn my_func() {
    use std::{thread, time};
    let ten_millis = time::Duration::from_millis(10);
    thread::sleep(ten_millis);
}

#[derive(Debug)]
pub struct MyError;

#[instrument(INFO)]
fn my_func_with_ok_result() -> Result<String, MyError> {
    use std::{thread, time};
    let ten_millis = time::Duration::from_millis(10);
    thread::sleep(ten_millis);

    Ok(String::from("hello world"))
}

#[instrument(INFO)]
fn my_func_with_err_result() -> Result<String, MyError> {
    use std::{thread, time};
    let ten_millis = time::Duration::from_millis(10);
    thread::sleep(ten_millis);

    Err(MyError)
}

fn main() {
    let addr = "127.0.0.1:5000".to_string();
    instrumented::init(&addr);

    my_func();
    assert_eq!(my_func_with_ok_result().is_ok(), true);
    assert_eq!(my_func_with_err_result().is_err(), true);

    let body = reqwest::get(&format!("http://{}/metrics", addr))
        .unwrap()
        .text()
        .unwrap();

    println!("{}", body);
}

依赖关系

~12MB
~212K SLoC