1 个不稳定版本
| 0.1.1 | 2022年7月15日 | 
|---|---|
| 0.1.0 |  | 
#51 in #latest
17KB
266 行代码(不包括注释)
prometheus-json-encoder
实现了用于 prometheus 0.13.0 的 JsonEncoder 对象。
基本示例
use opentelemetry::{global, KeyValue, sdk::Resource};
use opentelemetry_prometheus::PrometheusExporter;
use prometheus_json_encoder::JsonEncoder;
fn init_meter() -> PrometheusExporter {
    opentelemetry_prometheus::exporter()
        .with_resource(Resource::new(vec![KeyValue::new("R", "V")]))
        .init()
}
fn main(){
    let exporter = init_meter();
    let meter = global::meter("my-app");
    // Use two instruments
    let counter = meter
        .u64_counter("a.counter")
        .with_description("Counts things")
        .init();
    let recorder = meter
        .i64_value_recorder("a.value_recorder")
        .with_description("Records values")
        .init();
    counter.add(100, &[KeyValue::new("key", "value1")]);
    counter.add(100, &[KeyValue::new("key", "value2")]);
    counter.add(100, &[KeyValue::new("key2", "value")]);
    recorder.record(100, &[KeyValue::new("key", "value")]);
    // Encode data as text or protobuf
    let encoder = JsonEncoder::new();
    let metric_families = exporter.registry().gather();
    let mut result = Vec::new();
    encoder.encode(&metric_families, &mut result);
    println!("format :\n{}", encoder.format_type());
    println!("{:?}", result);
    let test = std::str::from_utf8(&result).unwrap();
    println!("{}", test)
    
}
依赖关系
~4–10MB
~110K SLoC