22个稳定版本
2.1.0 | 2024年6月20日 |
---|---|
1.3.0 |
|
1.2.0 | 2024年1月6日 |
1.0.15 | 2023年12月27日 |
0.1.0 | 2022年8月22日 |
#165 in 调试
50,337 每月下载量
用于 idcoop
31KB
371 行
⏱ metrics-process
此crate为metrics crate提供了一个Prometheus风格的进程指标收集器,支持Linux、macOS和Windows。收集器代码是用Rust手动重写的,来自官方的Prometheus Go客户端(client_golang)。
支持的指标
此crate支持以下由Prometheus提供的进程指标。
指标名称 | 帮助字符串 |
---|---|
process_cpu_seconds_total |
总用户和系统CPU时间(以秒为单位)。 |
process_open_fds |
打开的文件描述符数量。 |
process_max_fds |
最大打开文件描述符数量。 |
process_virtual_memory_bytes |
虚拟内存大小(以字节为单位)。 |
process_virtual_memory_max_bytes |
可用的最大虚拟内存量(以字节为单位)。 |
process_resident_memory_bytes |
常驻内存大小(以字节为单位)。 |
process_heap_bytes |
进程堆大小(以字节为单位)。 |
process_start_time_seconds |
进程自Unix纪元以来的启动时间(以秒为单位)。 |
process_threads |
进程中的OS线程数。 |
对于每个平台,它相当于官方Prometheus Go客户端(client_golang)提供的功能。
[!注意]
在版本2.0.0之前,
process_cpu_seconds_total
指标是Gauge类型而不是Counter。启用use-gauge-on-cpu-seconds-total
功能以使用旧行为。
指标名称 | Linux | macOS | Windows |
---|---|---|---|
process_cpu_seconds_total |
x | x | x |
process_open_fds |
x | x | x |
process_max_fds |
x | x | x |
process_virtual_memory_bytes |
x | x | x |
process_virtual_memory_max_bytes |
x | x | |
process_resident_memory_bytes |
x | x | x |
process_heap_bytes |
|||
process_start_time_seconds |
x | x | x |
process_threads |
x | x |
[!注意]
如果您只需在非支持平台上编译此crate,可以使用
dummy
功能。启用此功能将激活一个虚拟收集器,它返回一个空的Metrics
。
使用方法
使用此crate与metrics-exporter-prometheus一起作为导出器,例如
use std::thread;
use std::time::{Duration, Instant};
use metrics_exporter_prometheus::PrometheusBuilder;
use metrics_process::Collector;
let builder = PrometheusBuilder::new();
builder
.install()
.expect("failed to install Prometheus recorder");
let collector = Collector::default();
// Call `describe()` method to register help string.
collector.describe();
loop {
let s = Instant::now();
// Periodically call `collect()` method to update information.
collector.collect();
thread::sleep(Duration::from_millis(750));
}
或者与axum(或您喜欢的任何Web应用程序框架)一起,在调用/metrics
端点时收集指标,如下所示
use axum::{routing::get, Router};
use metrics_exporter_prometheus::PrometheusBuilder;
use metrics_process::Collector;
use tokio::net::TcpListener;
#[tokio::main]
async fn main() {
let builder = PrometheusBuilder::new();
let handle = builder
.install_recorder()
.expect("failed to install Prometheus recorder");
let collector = Collector::default();
// Call `describe()` method to register help string.
collector.describe();
let app = Router::new().route(
"/metrics",
get(move || {
// Collect information just before handling '/metrics'
collector.collect();
std::future::ready(handle.render())
}),
);
let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
}
特性
此crate提供以下特性
特性名称 | 描述 |
---|---|
dummy |
启用一个虚拟收集器,在非支持平台上返回空的Metrics 。 |
use-gauge-on-cpu-seconds-total |
使用process_cpu_seconds_total 指标上的Gauge代替Counter来表示f64 值。这是2.0.0版本之前的先前行为。 |
许可证
代码遵循在LICENSE中编写的MIT许可证。贡献者需要同意发送到该存储库的任何修改都遵循该许可证。
依赖关系
~0.8–40MB
~616K SLoC