#tokio #async #metrics #debugging #future

tokio-metrics

为Tokio应用程序提供运行时和任务级别的指标

7个不稳定版本 (3个破坏性版本)

0.3.1 2023年10月12日
0.3.0 2023年8月14日
0.2.2 2023年4月13日
0.2.0 2023年3月6日
0.0.0 2022年2月17日

#1732异步

Download history 60722/week @ 2024-03-14 58114/week @ 2024-03-21 73472/week @ 2024-03-28 64120/week @ 2024-04-04 63204/week @ 2024-04-11 69316/week @ 2024-04-18 76960/week @ 2024-04-25 65081/week @ 2024-05-02 65250/week @ 2024-05-09 74504/week @ 2024-05-16 71125/week @ 2024-05-23 75332/week @ 2024-05-30 75874/week @ 2024-06-06 67579/week @ 2024-06-13 70854/week @ 2024-06-20 61765/week @ 2024-06-27

290,581 每月下载量
用于 26 个软件包 (10 直接)

MIT 许可协议

195KB
797 代码行

Tokio Metrics

提供从Tokio应用程序收集指标的实用程序,包括运行时和每个任务的指标。

[dependencies]
tokio-metrics = { version = "0.3.1", default-features = false }

任务指标入门

使用TaskMonitor在启动任务之前对其进行测量,并观察这些任务的指标。所有使用给定TaskMonitor测量的任务将汇总其指标。要分离不同任务的指标,请使用单独的TaskMetrics实例。

// construct a TaskMonitor
let monitor = tokio_metrics::TaskMonitor::new();

// print task metrics every 500ms
{
    let frequency = std::time::Duration::from_millis(500);
    let monitor = monitor.clone();
    tokio::spawn(async move {
        for metrics in monitor.intervals() {
            println!("{:?}", metrics);
            tokio::time::sleep(frequency).await;
        }
    });
}

// instrument some tasks and spawn them
loop {
    tokio::spawn(monitor.instrument(do_work()));
}

任务指标

基本指标

派生指标

开始使用运行时指标

此不稳定功能需要 tokio_unstablert 包功能。要启用 tokio_unstable,必须在编译时将 --cfg tokio_unstable 传递给 rustc。您可以在编译应用程序之前设置 RUSTFLAGS 环境变量来这样做;例如。

RUSTFLAGS="--cfg tokio_unstable" cargo build

或者,在您的包根目录中创建文件 .cargo/config.toml。如果您使用的是工作区,请将此文件放在工作区根目录中。

[build]
rustflags = ["--cfg", "tokio_unstable"]
rustdocflags = ["--cfg", "tokio_unstable"] 

.cargo/config.toml 文件放在工作区或包根目录下可能会导致像 Rust-Analyzer 或 VSCode 这样的工具不使用您的 .cargo/config.toml,因为它们从工作区或包根目录调用 cargo,而 cargo 只在当前和父目录中查找 .cargo 目录。Cargo 忽略子目录中的配置。有关 cargo 寻找配置文件的更多信息,请参阅此处

在编译期间缺少此配置文件将导致 tokio-metrics 无法工作,并且在包含和不包含此配置文件之间交替构建将导致您的项目进行全面重建。

tokio-metricsrt 功能默认启用;只需确保在将其作为依赖项声明时不要设置 default-features = false 即可;例如。

[dependencies]
tokio-metrics = "0.3.1"

在 Tokio 运行时内部,使用 RuntimeMonitor 来监控该运行时的关键指标。

let handle = tokio::runtime::Handle::current();
let runtime_monitor = tokio_metrics::RuntimeMonitor::new(&handle);

// print runtime metrics every 500ms
let frequency = std::time::Duration::from_millis(500);
tokio::spawn(async move {
    for metrics in runtime_monitor.intervals() {
        println!("Metrics = {:?}", metrics);
        tokio::time::sleep(frequency).await;
    }
});

// run some tasks
tokio::spawn(do_work());
tokio::spawn(do_work());
tokio::spawn(do_work());

运行时指标

基本指标

派生指标

与 Tokio 控制台的关系

目前,Tokio 控制台主要针对 本地 调试。Tokio 指标旨在使您能够将指标报告到您首选的工具。从长远来看,预计 tokio-metrics 将与 Tokio 控制台合并。

许可协议

本项目采用 MIT 许可协议

贡献

除非您明确声明,否则您提交的任何有意包含在 tokio-metrics 中的贡献,均应按 MIT 许可,不附加任何额外条款或条件。

依赖关系

~3–14MB
~115K SLoC