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日 |
#64 in #instrumentation
在2个crate中使用(通过instrumented)
12KB
239 行
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);
}
依赖项
~2MB
~42K SLoC