#metrics #tracing #logging-tracing #logging

metry

基于跟踪crate的全功能遥测框架

2个版本

0.1.1 2024年8月6日
0.1.0 2024年7月31日

320调试

Download history 126/week @ 2024-07-29 120/week @ 2024-08-05

每月下载 246

Apache-2.0

40KB
722

Ottofeller遥测库

此crate包含在Rust中设置遥测的API。

概述

此crate补充tracing库,并提供了一种简单的方式来设置收集日志、指标和跟踪的提供者。

此crate包含什么内容?

  • 遥测API:提供了一种使用预配置提供者来设置日志、指标和跟踪收集的方法。

其他模块提供了一种在设置期间微调遥测的方法。它们包含合理的默认值,并允许在公开的API范围内进行配置。

  • 日志:日志提供者的集合。可用选项有 StdoutStderr
  • 指标:指标提供者的集合。可用选项有 StdoutCloudWatch
  • 跟踪:跟踪提供者的集合。可用选项有 StdoutXray

入门指南

要收集遥测数据,需要

  • 为每种类型的遥测设置提供者;
  • 使用相关事件对代码进行标记。

设置遥测

use metry::telemetry;

telemetry::new()
    .with_stdout_logs()
    .with_aws_metrics()
    .with_aws_traces()
    .init()
    .await;

标记你的代码

use tracing::{info, info_span};

// Emit a log event with level info
info!("Started execution");

// Start a synchronous trace span
let span = info_span!("my sync span");
span.in_scope(|| {
    info!("This event is recorder within the trace span");

    // Do work inside the span...

    // Collect metrics: count on foo
    info!(monotonic_counter.foo = 1);
});

// Run async code in a future with a span attached
let future_result: Vec<u64> = some_future
    .instrument(tracing::info_span!("my async span"))
    .await;

// Collect metrics: put data into the bar histogram
info!(histogram.bar = future_result);
info!("Execution complete");

依赖项

44MB
~697K SLoC