22个稳定版本

2.1.0 2024年6月20日
1.3.0 2024年4月20日
1.2.0 2024年1月6日
1.0.15 2023年12月27日
0.1.0 2022年8月22日

#165 in 调试

Download history 7056/week @ 2024-04-26 6813/week @ 2024-05-03 7594/week @ 2024-05-10 7124/week @ 2024-05-17 7388/week @ 2024-05-24 9109/week @ 2024-05-31 9137/week @ 2024-06-07 7101/week @ 2024-06-14 9962/week @ 2024-06-21 9796/week @ 2024-06-28 10836/week @ 2024-07-05 11392/week @ 2024-07-12 10580/week @ 2024-07-19 13762/week @ 2024-07-26 13025/week @ 2024-08-02 10777/week @ 2024-08-09

50,337 每月下载量
用于 idcoop

MIT 许可证

31KB
371

crates.io docs.rs MIT License Build Test Audit

⏱ 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