如何使用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
相关产品推荐
相关产品推荐

