6 个版本
新版本 0.2.2 | 2024年8月17日 |
---|---|
0.2.1 | 2023年11月28日 |
0.2.0 | 2023年5月8日 |
0.1.0 | 2023年4月20日 |
0.1.0-beta.0 | 2023年4月19日 |
80 在 开发工具 中排名
每月下载量 9,075
用于 静态Web服务器
52KB
909 行(不包括注释)
Tokio Prometheus 指标收集器
提供从 Tokio 运行时和任务收集 Prometheus 兼容指标的工具。
[dependencies]
tokio-metrics-collector = { version = "0.2.2" }
文档
快速入门
use prometheus::Encoder;
#[tokio::main]
async fn main() {
// register global runtime collector
prometheus::default_registry()
.register(Box::new(
tokio_metrics_collector::default_runtime_collector(),
))
.unwrap();
// register global task collector
let task_collector = tokio_metrics_collector::default_task_collector();
prometheus::default_registry()
.register(Box::new(task_collector))
.unwrap();
// construct a TaskMonitor
let monitor = tokio_metrics_collector::TaskMonitor::new();
// add this monitor to task collector with label 'simple_task'
// NOTE: duplicate labels in multiple monitors cause incorrect data aggregation.
// It is recommended to use unique labels for each monitor and
// instrument multiple tasks by the `instrument` function.
task_collector.add("simple_task", monitor.clone());
// spawn a background task and instrument
tokio::spawn(monitor.instrument(async {
loop {
// do something
tokio::time::sleep(tokio::time::Duration::from_millis(500)).await;
}
}));
// print metrics every tick
for _ in 0..5 {
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
let encoder = prometheus::TextEncoder::new();
let mut buffer = Vec::new();
encoder
.encode(&prometheus::default_registry().gather(), &mut buffer)
.unwrap();
let data = String::from_utf8(buffer.clone()).unwrap();
println!("{}", data);
}
}
以及一个 http 服务器示例,您可以在 examples/server.rs
中找到。
运行时指标
此不稳定功能需要 tokio_unstable
和 rt
包功能。要启用 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"]
workers_count
| 类型:Gauge
运行时使用的工作线程数。total_park_count
| 类型:Counter
工作线程挂起次数。total_noop_count
| 类型:Counter
工作线程在挂起前未执行任何操作而再次挂起的次数。total_steal_count
| 类型:Counter
从其他工作线程窃取任务的工作线程数。total_steal_operations
| 类型:Counter
工作线程从其他工作线程窃取任务的次数。num_remote_schedules
| 类型: 计数器
从运行时外部调度的任务数量。total_local_schedule_count
| 类型: 计数器
由工作线程调度的任务数量。total_overflow_count
| 类型: 计数器
工作线程饱和其本地队列的次数。total_polls_count
| 类型: 计数器
所有工作线程中已轮询的任务数量。total_busy_duration
| 类型: 计数器
工作线程忙碌的时间量。injection_queue_depth
| 类型: 仪表
当前在运行时注入队列中调度的任务数量。total_local_queue_depth
| 类型: 仪表
工作线程本地队列中当前调度的任务总数。elapsed
| 类型: 计数器
自观察运行时指标以来经过的总时间量。budget_forced_yield_count
| 类型: 计数器
由于预算耗尽而被迫释放的任务次数。io_driver_ready_count
| 类型: 计数器 从 I/O 驱动器接收到的就绪事件数量。
任务指标
instrumented_count
| 类型: 仪表
在间隔内被仪表化的任务数量。dropped_count
| 类型: 仪表 间隔内丢弃的任务数量。first_poll_count
| 类型: 仪表
在间隔内第一次被轮询的任务数量。total_first_poll_delay
| 类型: 计数器 从任务被仪表化到第一次被轮询之间经过的总持续时间。total_idled_count
| 类型: 计数器 任务空闲等待被唤醒的总次数。total_idle_duration
| 类型: 计数器 任务空闲的总持续时间。total_scheduled_count
| 类型: 计数器 任务被唤醒(然后,据推测,被调度执行)的总次数。total_scheduled_duration
| 类型: 计数器 任务在唤醒后等待被轮询的总时长。total_poll_count
| 类型: 计数器 任务被轮询的总次数。total_poll_duration
| 类型: 计数器 轮询过程中过去的时间总和。total_fast_poll_count
| 类型: 计数器 轮询任务迅速完成的总次数。total_fast_poll_duration
| 类型: 计数器 快速轮询的总时长。total_slow_poll_count
| 类型: 计数器 轮询任务缓慢完成的总次数。total_slow_poll_duration
| 类型: 计数器 慢速轮询的总时长。total_short_delay_count
| 类型: 计数器 短调度延迟的总次数。total_short_delay_duration
| 类型: 计数器 短调度延迟的总时长。total_long_delay_count
| 类型: 计数器 长调度延迟的总次数。total_long_delay_duration
| 类型: 计数器 长调度延迟的总时长。
许可证
tokio-metrics-collector 根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款分发。
请参阅 LICENSE-APACHE、LICENSE-MIT 和 COPYRIGHT 以获取详细信息。
依赖项
~5–12MB
~130K SLoC