把 RustFS 的 metrics 接进 Prometheus:OTLP 到 Collector 到 Grafana 全链路

本文详解如何将RustFS的OpenTelemetry遥测数据通过OTLP协议发送至OpenTelemetry Collector,再转为Prometheus格式供抓取,并最终在Grafana中可视化。重点涵盖RustFS指标导出配置、Collector接收与暴露配置、关键环境变量(如RUSTFS_OBS_ENDPOINT、RUSTFS_OBS_METER_INTERVAL)、链路连通性验证及生产部署注意事项,强调其云原生可观测性架构的完整性与实践要点。

封面

对象存储跑起来之后,最容易被忽略的是它到底健不健康。磁盘是不是快满了、某个节点的请求延迟是不是在悄悄爬升、复制带宽有没有掉,这些信号不主动采集,等用户投诉就晚了。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 遥测数据流向

哪些开关值得一开

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

可观测性环境变量

  • 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。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值