
对象存储跑起来之后,最容易被忽略的是它到底健不健康。磁盘是不是快满了、某个节点的请求延迟是不是在悄悄爬升、复制带宽有没有掉,这些信号不主动采集,等用户投诉就晚了。RustFS 的遥测走的是 OpenTelemetry 协议,不自带 Prometheus 抓取端点,要看到 Grafana 看板,中间得架一层 OpenTelemetry Collector 做转译。
RustFS 怎么把遥测送出来
RustFS 把指标、追踪、日志三类信号统一通过 OTLP(OpenTelemetry Protocol,一套中立的可观测性数据协议)推出来,传输用 HTTP 的 4318 端口或 gRPC 的 4317 端口。一个容易踩的坑:RustFS 在 9000(S3)和 9001(控制台)上都没有 Prometheus 文本格式的 /metrics 路由,你不能直接让 Prometheus 去 scrape 存储节点。官方给出的路径是:RustFS 把 OTLP 发给 Collector,Collector 再以 Prometheus 格式重新公开,最后由 Prometheus 去 scrape Collector。
指向 Collector 只需要一个环境变量:
RUSTFS_OBS_ENDPOINT=http://otel-collector:4318
4318 是 Collector 的 HTTP 接收端口;如果你用 gRPC,就写 4317。指标导出默认是开的(RUSTFS_OBS_METRICS_EXPORT_ENABLED 默认 true),所以配好端点,节点就会开始推。
架一层 OpenTelemetry Collector
Collector 的配置很薄,接收 OTLP、再以 Prometheus 格式在 8889 端口公开:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
prometheus:
endpoint: "0.0.0.0:8889"
service:
pipelines:
metrics:
receivers: [otlp]
exporters: [prometheus]
Prometheus 抓的是 Collector 的 8889,不是 RustFS 节点:
scrape_configs:
- job_name: "rustfs-app-metrics"
static_configs:
- targets: ["otel-collector:8889"]
上游 rustfs/rustfs 仓库的 docker-compose 里带了一套完整的参考栈:otel-collector、Prometheus、Grafana、Loki(日志)、Tempo 和 Jaeger(追踪),可以直接照着起。

哪些开关值得一开
除了端点,还有几个环境变量控制导出行为和资源标签。下面这张表列了常用项:

- RUSTFS_OBS_METER_INTERVAL:指标导出间隔(秒)。不设这个值,节点与磁盘指标约每 60 秒、桶指标约每 300 秒采集一次,导出节奏单独算。
- RUSTFS_OBS_SERVICE_NAME(默认 rustfs)和 RUSTFS_OBS_ENVIRONMENT(默认 development):这两个会作为资源属性带进每个指标,多集群时靠它们区分来源,建议显式设成生产环境的名字。
- RUSTFS_OBS_LOGGER_LEVEL(默认 info):顺手把日志级别也收进来,排查时用。
进 Grafana 之前先确认链路通
- 每个节点都要设 RUSTFS_OBS_ENDPOINT。分布式部署下只给一个节点设,其余节点的指标就断流,Grafana 上看到的是残缺的图。
- 采集间隔不等于告警延迟。RustFS 先把指标收集、导出,再经 Collector 批处理、Prometheus 按 scrape_interval 抓取、告警规则按 for 时长评估,整条链路有固有延迟;把 scrape_interval 调小,也救不回一个 RustFS 还没采集到的值。
- 指标名以源码为准。官方文档列的是经源码验证的子集,例如进程与就绪类的 rustfs_start_total,新版本可能新增未在表里列出的指标,别拿文档当穷举。
把 RUSTFS_OBS_ENDPOINT 指到 Collector、Prometheus 抓 8889、Grafana 接 Prometheus 数据源,三步就能在看板上看到存储节点的真实负载。RustFS 1.0.0 已于 2026 年 9 月 16 日 GA,这套 OTLP 遥测是生产可用能力;可观测性配置以官方文档 operations/observability 一节为准,代码与示例在 https://github.com/rustfs/rustfs。
本文详解如何将RustFS的OpenTelemetry遥测数据通过OTLP协议发送至OpenTelemetry Collector,再转为Prometheus格式供抓取,并最终在Grafana中可视化。重点涵盖RustFS指标导出配置、Collector接收与暴露配置、关键环境变量(如RUSTFS_OBS_ENDPOINT、RUSTFS_OBS_METER_INTERVAL)、链路连通性验证及生产部署注意事项,强调其云原生可观测性架构的完整性与实践要点。
453

被折叠的 条评论
为什么被折叠?



