CubeFS 集成 Grafana:监控面板模板与纠删码子系统指标实战 存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载本文围绕 CubeFS 仓库中 Grafana 集成文档 展开讲解如何基于仓库自带的 Grafana 配置模板与 PromQL 查询搭建展示 CubeFS 集群尤其是纠删码 Blobstore 子系统监控数据的可视化面板并利用 Prometheus Alertmanager 配置监控告警。读完本文你将掌握 Grafana 数据源/面板的 Provisioning 配置方式以及空间、卷、SLA、带宽、时延、后台任务、Kafka 消费延迟等十余类指标的查询写法与口径。一、集成方式概览模板化配置 指标查询CubeFS 在仓库中直接提供了 Grafana 的配置模板可以通过 Grafana 展示监控数据模板参考 docker/monitor/grafana/provisioning/dashboards/chubaofs.json 文件。该目录下还配套了数据源与面板的自动装载配置文件作用docker/monitor/grafana/provisioning/datasources/datasource.yml声明 Prometheus 数据源type 为prometheusaccess 为proxyurl 指向 Prometheus 地址docker/monitor/grafana/provisioning/dashboards/dashboard.yml声明面板的 file 类型 provider从/etc/grafana/provisioning/dashboards目录加载*.json面板docker/monitor/grafana/provisioning/dashboards/chubaofs.json仓库自带的 CubeFS 面板定义约 7000 行包含 Master/DataNode/MetaNode/Volume 等各类面板docker/monitor/prometheus/prometheus.ymlPrometheus 抓取配置含 Consul 服务发现示例docker/monitor/grafana/init.sh初始化脚本自动创建 org、数据源与面板Grafana 集成依赖 Prometheus 作为指标存储与查询后端整体链路为CubeFS 各模块暴露/metrics指标 → Prometheus 抓取支持 Consul 服务发现或静态 file_sd 配置→ Grafana 通过 Prometheus 数据源查询并渲染面板。指标本身如何开启与采集可参考 prometheus 集成文档。提示当前纠删码子系统的监控指标模板还未包含在对应配置模块示例中后续完善。因此本文后半部分将结合文档给出的 PromQL 查询说明如何自行搭建纠删码子系统的个性化面板。二、环境准备Prometheus、Consul 与 Grafana 的部署衔接集成 Grafana 前需要先就绪三个基础组件Prometheus指标采集与存储可通过抓取 CubeFS 各模块的/metrics接口收集数据Consul可选用于配合 Prometheus 的自动发现机制实现 CubeFS 节点 exporter 的自动注册与发现Grafana可视化前端负责将 Prometheus 中的指标渲染成面板。仓库的 prometheus.yml 给出了与 Consul 集成的抓取配置示例通过consul_sd_configs声明 Consul 服务发现示例地址192.168.0.101:8500服务名cfs并用relabel_configs把 Consul 标签中的kv元数据转换成 Prometheus 标签例如service标签以及自定义标签对应consulMeta中配置的键值对。从源码层面看CubeFS 各模块的指标监听端口由配置项控制Master指标监听端口为服务端口默认开启指标监控模块Blobstore 指标监听端口为服务端口默认开启服务自定义监控指标项公共指标项需要修改配置文件打开其他模块需要显式配置exporterPort默认关闭。配置了consulAddr后即可配合 Prometheus 自动发现例如{ exporterPort: 9505, consulAddr: http://consul.prometheus-cfs.local, consulMeta: k1v1;k2v2, ipFilter: 10.17.*, enablePid: false }配置生效后可通过curl localhost:port/metrics直接拉取对应服务的指标。Blobstore 相关服务目前仅支持静态 file_sd 方式采集不依赖 Consul。三、Grafana 数据源与面板的 Provisioning 配置3.1 数据源配置docker/monitor/grafana/provisioning/datasources/datasource.yml 是 Grafana 标准的 Provisioning 数据源声明核心字段如下datasources: - name: Prometheus type: prometheus access: proxy orgId: 1 url: http://192.168.0.102:9090 basicAuth: false isDefault: true version: 1 editable: true关键点type: prometheus指定数据源类型access: proxy表示 Grafana 服务端代理访问url必须替换为实际 Prometheus 服务地址示例为192.168.0.102:9090isDefault: true将 Prometheus 设为默认数据源面板中未显式指定数据源时自动使用editable: true允许从 Grafana UI 编辑该数据源。3.2 面板自动装载配置docker/monitor/grafana/provisioning/dashboards/dashboard.yml 声明了 file 类型的 providerGrafana 启动后会扫描options.path示例为/etc/grafana/provisioning/dashboards目录下的所有 JSON 面板文件并自动导入providers: - name: CubeFS orgId: 1 folder: type: file disableDeletion: false editable: true options: path: /etc/grafana/provisioning/dashboards配合 chubaofs.json即可开箱即用地展示集群节点数MasterCount、MetaNodeCount、DataNodeCount、ObjectNodeCount、ClientCount、卷数量、数据/元数据节点容量TotalSize/UsedSize/IncreasedSize、容量使用率、节点健康DataNodeInactive、MetaNodesInactive、Top K 卷容量等面板。这些面板大量使用$cluster、$app、$master_instance、$instance、$topk等模板变量例如count(up{cluster$cluster, app$app, rolemaster} 0) avg(cfs_master_vol_count{app$app, cluster$cluster}) topk($topk, cfs_master_vol_total_GB{app$app,cluster$cluster, instance$master_instance})其中cfs_master_*系列指标的具体含义可对照 prometheus 集成文档 中 Master 章节的指标表如cfs_master_dataNodes_total_GB、cfs_master_vol_count、cfs_master_dataNodes_inactive等。3.3 初始化脚本docker/monitor/grafana/init.sh 提供了完整的初始化流程通过 Grafana HTTP API 创建cubefs.io组织、切换当前组织、生成 Admin API Key然后自动提交数据源/grafana/ds.json与面板/grafana/dashboard.json适合容器化部署时一键完成数据源与面板的导入。四、纠删码子系统指标开启公共指标项Grafana 面板的数据来自 Blobstore 各服务暴露的监控指标。除服务自定义指标外公共指标项需要在服务审计日志配置项中打开。相关配置项说明如下配置项说明是否必须idcidc 名字否如果开启指标建议填写service模块名字否如果开启指标建议填写tag自定义 tag比如配置 clusterid否如果开启指标建议填写enable_http_method是否开启状态码统计否默认关闭enable_req_length_cnt是否开启请求长度统计否默认关闭enable_resp_length_cnt是否开启响应长度统计否默认关闭enable_resp_duration是否开启请求/响应区间耗时统计否默认关闭max_api_level最大 api 路径深度否示例配置auditlog.metric_config段{ auditlog: { metric_config: { idc: z0, service: SCHEDULER, tag: 100, team: cubefs, enable_http_method: true, enable_req_length_cnt: true, enable_resp_length_cnt: true, enable_resp_duration: true, max_api_level: 3 } } }开启后各服务会输出以下四类通用指标各带api、code、host、idc、method、service、tag、team标签service_response_code请求状态码计数counter用于统计错误率、请求量service_request_length请求体长度统计counter用于统计上传带宽、流量service_response_length响应体长度统计counter用于统计下载带宽、流量service_response_duration_ms请求/响应耗时统计histogram用于计算 P95 时延。Grafana 面板中的 SLA、带宽、时延、QPS 查询正是基于以上四类指标聚合而成。五、纠删码子系统监控面板PromQL 查询实战以下是文档给出的面板示例查询。使用时需注意两条规则替换cluster/cluster_id为实际的集群 idservice标签为服务名在审计日志指标配置项中配置如ACCESS、SCHEDULER等。5.1 集群物理空间概览基于 ClusterMgr 的blobstore_clusterMgr_space_stat_info指标item 支持FreeSpace、TotalBlobNode、TotalDisk、TotalSpace、UsedSpace、WritableSpace单位为 bytesis_leadertrue表示只取主节点数据# 可写物理容量 # 单位 bytes sum by (item)(blobstore_clusterMgr_space_stat_info{cluster${cluster_id},itemFreeSpace,is_leadertrue}) # 已用物理容量 # 单位 bytes sum by (item)(blobstore_clusterMgr_space_stat_info{cluster${cluster_id},itemUsedSpace,is_leadertrue}) # 可写逻辑容量 # 单位 bytes sum by (item)(blobstore_clusterMgr_space_stat_info{cluster${cluster_id}1,itemUsedSpace,is_leadertrue})注意第三行查询中 cluster 标签写法为${cluster_id}1这是原始文档的写法用于区分物理/逻辑容量的不同集群维度在实际使用时请按你的集群 id 命名与维度设计调整避免与第一、二条查询的标签不一致。5.2 卷概览基于blobstore_clusterMgr_vol_status_vol_count指标status 支持active、allocatable、idle、lock、total、unlocking按状态统计卷数量# 单位 个数 sum by (status) (blobstore_clusterMgr_vol_status_vol_count{cluster${cluster_id},is_leadertrue})5.3 SLA基于service_response_code统计 ACCESS 服务 5 分钟内的成功请求占比code 匹配4..|3..|2..|1..即所有 1xx~4xx 均视为成功维度((sum by (service)(rate(service_response_code{serviceACCESS,code~4..|3..|2..|1..}[5m]))0)/(sum by (service)(rate(service_response_code{serviceACCESS}[5m]))0))*1005.4 上传带宽与下载带宽基于请求/响应长度指标统计 ACCESS 服务 5 分钟内的速率并换算为 bits/sec# 上传带宽单位 bits/sec sum by (idc) (rate(service_request_length{serviceACCESS,api~access.put|access.putat}[5m]))*8 # 下载带宽单位 bits/sec sum by (idc) (rate(service_response_length{serviceACCESS,api~access.get}[5m]))*85.5 五分钟请求异常统计 5 分钟内非正常状态码排除200|206|404|700|702|621|622|651|654|923的异常请求增量# 单位 个数 sum by (api,service,code)(increase(service_response_code{code!~200|206|404|700|702|621|622|651|654|923}[5m]))05.6 请求 QPS按 service/idc/api 维度统计全量请求速率# 单位 个数 sum by (service,idc,api)(rate(service_response_code{}[5m]))5.7 上传 / 下载 / 删除平均时延基于service_response_duration_mshistogram 计算 P95 时延单位 ms分别按access.put|access.putat、access.get、access.delete接口筛选# 上传平均时延单位 ms (histogram_quantile(0.95, sum by(idc,le) (rate(service_response_duration_ms_bucket{code~2..,serviceACCESS,api~access.put|access.putat}[5m]))))0 # 下载平均时延单位 ms (histogram_quantile(0.95, sum by(idc,le) (rate(service_response_duration_ms_bucket{code~2..,serviceACCESS,api~access.get}[5m]))))0 # 删除平均时延单位 ms histogram_quantile(0.95, sum by(idc,le) (rate(service_response_duration_ms_bucket{code~2..,serviceACCESS,apiaccess.delete}[5m])))05.8 Proxy 卷状态概览基于 Proxy 模块的blobstore_proxy_volume_status指标type 支持total_free_size、volume_numscodemode 如EC15P12按 idc 和 codemode 聚合# 单位 个数 sum by(idc,codemode) (blobstore_proxy_volume_status{cluster${cluster_id},typetotal_free_size})5.9 后台任务指标SchedulerScheduler 模块的系列任务指标task_type 包括delete、shard_repair、balance、disk_drop、disk_repair、manual_migrate等# 后台迁移速率单位 bits/sec sum by (task_type) (rate(scheduler_task_data_size{cluster_id${cluster_id}}[5m]))*8 # 迁移 shard 数单位 个数 sum by (task_type) (rate(scheduler_task_shard_cnt{cluster_id${cluster_id}}[5m])) # 任务取消或重分配次数单位 个数 sum (increase(scheduler_task_reclaim{cluster_id${cluster_id}}[5m])) by (task_type) sum (increase(scheduler_task_cancel{cluster_id${cluster_id}}[5m])) by (task_type) # 后台任务数单位 个数 sum by (task_type,task_status) (scheduler_task_cnt{cluster_id${cluster_id}})对应的指标口径可参考 prometheus 集成文档 Scheduler 章节scheduler_task_data_size迁移数据量单位字节、scheduler_task_shard_cnt任务 shard 数、scheduler_task_cnt任务数task_status 有finishing、preparing、worker_doing、scheduler_task_cancel/scheduler_task_reclaim取消/重分配次数。5.10 消息消费延迟Kafka基于kafka_topic_partition_consume_lag标签含cluster_id、module_name、partition、topic分别监控修补消息与删除消息的消费延迟。注意 topic 需要替换为对应消息主题# 修补消息消费延迟 # 注意这里 topic 需要替换对应修补消息的主题 min by (cluster_id,topic,partition)(kafka_topic_partition_consume_lag{cluster_id${cluster_id},topic~.*.shard_repair.*|shard.*,module_nameSCHEDULER}) # 删除消息消费延迟 # 注意这里 topic 需要替换对应删除消息的主题 min by (cluster_id,topic,partition)(kafka_topic_partition_consume_lag{cluster_id${cluster_id},topic~blob_delete.*|.*.blob_delete.*,module_nameSCHEDULER})消费延迟是判断后台任务修补、删除是否积压的关键信号实践中建议为它单独配置告警阈值。5.11 Free Chunk 分布基于 Scheduler 的scheduler_free_chunk_cnt_rangehistogram 指标统计 1 分钟内空闲 chunk 数量的分布按 le 分桶聚合sum(increase(scheduler_free_chunk_cnt_range_bucket{}[1m])) by(le)0该指标常用来观察集群空闲 chunk 的分布是否均衡为扩容、均衡调度提供依据。六、监控告警Alertmanager 配置在 Grafana 面板之外还可以通过 Prometheus Alertmanager 配置监控告警能力。基本链路为在 Prometheus 中编写告警规则Alerting rules→ 触发后推送给 Alertmanager → Alertmanager 根据路由规则发送通知邮件、Webhook 等。告警规则通常引用与面板相同的指标与查询口径例如集群剩余物理空间blobstore_clusterMgr_space_stat_info{itemFreeSpace,is_leadertrue}低于阈值请求异常增量increase(service_response_code{code!~200|206|404|700|702|621|622|651|654|923}[5m]) 0持续发生Kafka 消费延迟kafka_topic_partition_consume_lag超过设定值。七、使用注意事项替换模板变量所有查询中的${cluster_id}需替换为实际集群 idcluster与cluster_id标签的命名取决于指标暴露时的标签值如审计日志配置中的tag常被用来携带 clusterid请与你的部署配置保持一致。service 标签语义service标签为服务名在审计日志指标配置项中配置如ACCESS、SCHEDULER、CLUSTERMGR、PROXY面板查询中必须与实际配置一致。主节点过滤ClusterMgr 相关指标带is_leader标签聚合时通过is_leadertrue只统计主节点避免多副本重复计数。纠删码子系统模板缺口当前官方配置模块示例中尚未包含纠删码子系统指标模板需要根据本文的 PromQL 查询自行创建面板同时注意相关查询中的单位换算长度类指标 ×8 得到 bits/sec时延类指标基于 histogram 的_bucket计算分位数。采集方式差异Blobstore 相关服务目前只支持 file_sd 静态采集方式不参与 Consul 自动发现配置 Prometheus 时需单独添加抓取目标。通过将上述查询逐条配置为 Grafana 面板Graph、Singlestat、BarGauge 等类型即可形成覆盖「物理空间—卷状态—SLA—带宽—时延—后台任务—消息积压」的完整纠删码子系统监控视图并结合 Alertmanager 实现异常预警。赞分享存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载相关推荐量化系统监控面板QUANTAXIS Grafana集成指南量化系统监控面板QUANTAXIS Grafana集成指南 引言量化系统监控的痛点与解决方案 你是否还在为量化交易系统的实时状态监控而烦恼面对分布式部署的金融科技后端数据分析OpenMetadata监控面板Grafana集成与指标可视化OpenMetadata监控面板Grafana集成与指标可视化 在数据平台管理中实时监控与可视化是保障系统稳定性的关键环节。OpenMetadata作为开放数据目录数据血缘数据治理后端MCP 服务突破性开源项目高性能长视频生成模型LongCat-Video完整技术解析突破性开源项目高性能长视频生成模型LongCat Video完整技术解析 美团LongCat Video是一款拥有136亿参数的视频生成基础模型在文本生成视人工智能基础模型大模型计算机视觉上一篇终极免费GTA5线上助手让你的洛圣都之旅更轻松高效下一篇3分钟解决腾讯游戏卡顿ACE-Guard资源限制器完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考