You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Prometheus监控GCS存储桶内文件并在Grafana展示可用性指标

实现步骤

1. 确认Stack Driver指标拉取配置

首先检查你部署的Prometheus Stack Driver Exporter配置,确保metrics列表中已加入storage.googleapis.com/object/count,该指标用于统计GCS桶内指定对象的存在状态。
配置完成后可以先访问Prometheus UI,搜索stackdriver_storage_object_count(默认前缀为stackdriver_,实际前缀以你的exporter配置为准),确认指标已经成功采集,且标签中包含你要监控的桶名、对象名标签。

2. 编写对应PromQL查询语句

实时可用性状态查询

返回值为1代表文件当前存在可用,0代表文件不存在不可用,5分钟窗口内只要有采集到对象存在就判定为可用:

count_over_time(stackdriver_storage_object_count{resource_labels_bucket_name="你的GCS桶名", resource_labels_object_name="你的示例文件名"}[5m]) >= bool 1

5分钟窗口可用率查询

返回值范围0~1,代表过去5分钟内文件的可用占比,1为全可用,0为全不可用:

avg_over_time((count_over_time(stackdriver_storage_object_count{resource_labels_bucket_name="你的GCS桶名", resource_labels_object_name="你的示例文件名"}[1m]) >= bool 1)[5m:1m])

注意:上述查询中的标签名resource_labels_bucket_name、resource_labels_object_name需替换为你Prometheus实例中实际存储的对应标签名。

3. 配置Grafana Dashboard面板

  • 打开Grafana新建面板,数据源选择你已对接的Prometheus实例
  • 实时状态展示可选Stat面板:查询栏输入实时可用性查询语句,在值映射配置中把1映射为可用(绿色)、0映射为不可用(红色)
  • 可用率趋势展示可选Gauge或Time series面板:查询栏输入可用率查询语句,单位配置为百分比(0-100),可以乘以100把返回值转为0~100%的百分比格式
  • 面板刷新间隔设置为5分钟,和你的监控需求对齐,保存面板即可完成配置。

可选:自定义主动探测方案

如果你觉得Stack Driver指标采集有延迟,也可以自己部署简单的自定义exporter做主动探测,示例代码如下:

import time
from google.cloud import storage
from prometheus_client import Gauge, start_http_server

# 定义GCS可用性指标
gcs_object_available = Gauge(
    'gcs_object_available',
    'GCS指定文件可用性状态',
    ['bucket_name', 'object_name']
)

# 替换为你的实际配置
MONITOR_BUCKET = "你的GCS桶名"
MONITOR_OBJECT = "你的示例文件名"
EXPORTER_PORT = 8000
CHECK_INTERVAL = 300 # 5分钟检查一次

def check_gcs_object():
    try:
        storage_client = storage.Client()
        bucket = storage_client.bucket(MONITOR_BUCKET)
        blob = bucket.blob(MONITOR_OBJECT)
        gcs_object_available.labels(MONITOR_BUCKET, MONITOR_OBJECT).set(1 if blob.exists() else 0)
    except Exception as e:
        gcs_object_available.labels(MONITOR_BUCKET, MONITOR_OBJECT).set(0)

if __name__ == "__main__":
    start_http_server(EXPORTER_PORT)
    while True:
        check_gcs_object()
        time.sleep(CHECK_INTERVAL)

运行该脚本后,在Prometheus的scrape配置中新增对应job拉取该exporter的指标,后续直接查询gcs_object_available指标即可。


内容的提问来源于stack exchange,提问作者sriram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:45:07