RustFS 监控实战:OpenTelemetry Collector 把指标接入 Prometheus + Grafana

📅 2026/8/24 14:50:50
RustFS 监控实战:OpenTelemetry Collector 把指标接入 Prometheus + Grafana
集群里 RustFS 跑了三节点某天业务反馈写入变慢你上去想看吞吐和在线节点数却发现:9000/metrics抓不到任何 Prometheus 数据。不是没监控能力是 RustFS 的指标走的是另一条路OpenTelemetry不是 Prometheus 拉。把指标接进 Prometheus Grafana 不难只是中间多一个 Collector。下面是一套能复制的链路。1. RustFS 怎么吐指标OTLP 推送RustFS 通过 OTLPOpenTelemetry Protocol把 traces / metrics / logs 推给 Collector本身不在 9000/9001 上提供 Prometheus 文本格式的 /metrics 端点。所以标准做法是一台 OpenTelemetry Collector 收 OTLP再转成 Prometheus 格式先把 RustFS 指到 Collector用 OTLP HTTP端口 4318gRPC 是 4317exportRUSTFS_OBS_ENDPOINThttp://otel-collector:4318exportRUSTFS_OBS_METRICS_EXPORT_ENABLEDtrueexportRUSTFS_OBS_TRACES_EXPORT_ENABLEDtrueexportRUSTFS_OBS_LOGS_EXPORT_ENABLEDtrueexportRUSTFS_OBS_METER_INTERVAL15sexportRUSTFS_OBS_SERVICE_NAMErustfs-prodexportRUSTFS_OBS_ENVIRONMENTproduction每个节点都要设RUSTFS_OBS_ENDPOINT漏一个节点Prometheus 里就少那台的指标。2. Collector收 OTLP转 Prometheus官方参考栈docker-compose 的 observability profile里的 Collector 配置接收 4317/4318、用 prometheus exporter 在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:8889service:pipelines:metrics:{receivers:[otlp],exporters:[prometheus]}Prometheus 抓的是 Collector 的 8889不是 RustFSscrape_configs:-job_name:rustfs-app-metricsstatic_configs:-targets:[otel-collector:8889]-job_name:otel-collectorstatic_configs:-targets:[otel-collector:8888]指标名以rustfs_*开头如rustfs_start_total、各 bucket/节点用量Grafana 直接建面板或导官方看板。3. 没数据先查这三段指标没出来按链路顺序查别瞎重启RUSTFS_OBS_ENDPOINT 每个节点都设了吗漏设的节点不出指标。Collector 从节点可达吗节点到otel-collector:4318的网络不通OTLP 推不出去。Prometheus 抓的是 8889 吗抓错端口比如去抓 RustFS 的 9000永远为空。这三段通了Grafana 里就能看到集群在线节点数、各 bucket 用量、S3 请求量和流量。4. 边界多一个组件但换来统一栈和存储自带 /metrics的方案比RustFS 这套要多维护一个 OTel Collector。但好处是指标、链路、日志走同一条 OTLP 管道Grafana/Loki/Tempo 一套贯通和未来接 Pyroscope 做持续性能分析也顺。官方 observability profile 已经把 otel-collector、Prometheus、Grafana、Loki、Tempo/Jaeger 打包成参考栈照着起就行不用从零拼。5. 总结与下一步RustFS 不提供 Prometheus /metrics 拉端点指标走 OTLP 推送需 OTel Collector 转 Prometheus8889。关键变量RUSTFS_OBS_ENDPOINT每个节点都设、RUSTFS_OBS_METRICS_EXPORT_ENABLED、导出间隔与资源属性。排障顺序端点设全 → Collector 可达 → Prometheus 抓 8889。边界多一个 Collector 组件但指标/链路/日志统一在 OTLP 栈里。下一步按官方 observability profile 起 Collector Prometheus Grafana设RUSTFS_OBS_ENDPOINT指向 Collector进 Grafana 看rustfs_*指标是否进来再补告警规则。以下是深入学习 RustFS 的推荐资源RustFS官方文档 RustFS 官方文档- 提供架构、安装指南和 API 参考。GitHub 仓库 GitHub 仓库 - 获取源代码、提交问题或贡献代码。社区支持 GitHub Discussions- 与开发者交流经验和解决方案。意见反馈GitHub Issues