19个版本 (7个稳定版)
1.4.0 | 2022年11月20日 |
---|---|
1.3.0 | 2021年8月4日 |
1.2.0 | 2021年3月23日 |
1.1.0 | 2020年11月1日 |
0.4.0 | 2019年6月28日 |
#292 在 数据库接口
每月下载量 4,488
用于 6 个包
89KB
682 行
Rust Prometheus导出器基础
Rust Prometheus导出器基础库
目标
这个crate旨在以最小的努力编写一个合适的Prometheus导出器。它为你提供两件事。
- 创建符合Prometheus规范的输出的Rust风格、流畅的方式
PrometheusMetric::build()
.with_name("folder_size")
.with_metric_type(MetricType::Counter)
.with_help("Size of the folder")
.build()
.render_and_append_instance(
&PrometheusInstance::new()
.with_label("folder", "/var/log")
.with_value(total_size_log)
.with_current_timestamp()
.expect("error getting the UNIX epoch"),
)
.render()
- 它还提供可选的无样板代码Hyper服务器来暴露你的Prometheus度量。它处理大多数平凡的任务,例如设置Hyper服务器和进行一些基本检查(例如拒绝除GET以外的任何请求以及只响应以
/metrics
结尾的请求),所以你只需提供一个将处理你逻辑的Boxed future(记住在Cargo.toml
中指定hyper_server
功能标志)。
我在以下crate中使用它:prometheus_wireguard_exporter 和 prometheus_iota_exporter,所以如果你想要查看真实世界的示例,请参考这些crate。更简单的示例可在示例文件夹中找到。
用法
PrometheusMetric
使用PrometheusMetric
结构体,通过实例化它,然后“渲染”头和值(可选指定标签)。以下是从文档中摘取的示例
PrometheusMetric::build()
.with_name("folder_size")
.with_metric_type(MetricType::Counter)
.with_help("Size of the folder")
.build()
.render_and_append_instance(
&PrometheusInstance::new()
.with_label("folder", "/var/log")
.with_value(total_size_log)
.with_current_timestamp()
.expect("error getting the UNIX epoch"),
)
.render()
这将给出类似以下的内容
对于更完整的示例,请参阅示例文件夹。
Hyper服务器
要使用Hyper服务器,只需指定hyper_server
功能标志并调用render_prometheus
函数。此函数要求你传入
- 监听的地址/端口。例如
([0, 0, 0, 0], 32221).into()
在端口 32221 上监听所有接口。 - 授权类型。目前可以是允许所有连接或使用基本认证(密码)进行认证。
- 一个任意的结构体,将被传递回你的代码(用于命令行参数)。如果你不需要它,请传递一个空的结构体。
- 你的导出器应该执行的 代码。它采取的形式是一个返回装箱未来的闭包。闭包本身将接收上述提到的结构体(第2点)以及 http 请求数据。期望输出是一个字符串。
例如
let addr: SocketAddr = ([0, 0, 0, 0], 32221).into();
let password = "SimplePassword".to_owned();
let server_options = ServerOptions {
addr,
authorization: Authorization::Basic(password),
};
render_prometheus(server_options, MyOptions::default(), |request, options| {
async {
Ok("it works!".to_owned())
}
}).await;
如你所见,为了保持简单,Hyper 服务器不对输出进行任何强制。你需要使用上述提到的结构体返回有意义的字符串。
测试
一旦启动,使用任何启用 GET 的工具(如浏览器)在 http://127.0.0.1:<your_exporter_port>/metrics
测试你的导出器。
变更日志
- 从版本 1.4.0 开始,Hyper 服务器支持基本认证。如果你启用了它,请确保通过指定
basic_auth
来相应地配置 Prometheus,无论是password
还是password_file
。此外,请注意,授权头总是包含用户名(此处未使用),因此如果你手动传递它,请在对密码进行 base 64 编码之前在其前面加上冒号字符。Prometheus 会自动这样做,你不需要为此做任何事情。最后,基本认证不会加密密码,所以如果你需要保密性,请确保使用 TLS。
许可
请参阅 LICENSE 文件(剧透:它是 MIT 许可证)。
依赖项
~4–18MB
~244K SLoC