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

Firebase SDK上传GCS文件时GCP告警策略未触发问题排查

问题描述

在GCP项目中配置了一项告警策略,当特定GCS Bucket中有对象插入时触发告警,策略使用带WriteObject标签的request_count指标。通过GCP控制台或REST API上传文件时告警正常触发,但Android/iOS应用用Firebase SDK上传文件(文件可正常存入Bucket)时,告警策略不触发。

疑问:

  1. Firebase SDK是否调用相同的GCP API?
  2. 告警策略的filter是否存在问题?

告警策略配置

{
  "displayName": "File uploaded alert policy",
  "userLabels": {},
  "conditions": [
    {
      "displayName": "File uploaded",
      "conditionThreshold": {
        "filter": "resource.type = \"gcs_bucket\" AND resource.labels.bucket_name = \"bucket-x\" AND metric.type = \"storage.googleapis.com/api/request_count\" AND metric.labels.method = \"WriteObject\"",
        "aggregations": [
          {
            "alignmentPeriod": "900s",
            "crossSeriesReducer": "REDUCE_NONE",
            "perSeriesAligner": "ALIGN_COUNT"
          }
        ],
        "comparison": "COMPARISON_GT",
        "duration": "0s",
        "trigger": {
          "count": 1
        }
      }
    }
  ],
  "alertStrategy": {
    "autoClose": "3600s"
  },
  "combiner": "OR",
  "enabled": true,
  "notificationChannels": [
    "projects/channel-x",
    "projects/channel-y"
  ]
}

Android端上传代码

依赖包:com.google.firebase:firebase-storage:20.1.0

fun firebaseUpload(filename: String, fileUri: Uri) {
    val storage = FirebaseStorage.getInstance("<BUCKET_URL>")
    val uploadTask = storage.getReference("/${filename}.zip").putFile(fileUri)

    uploadTask.addOnSuccessListener { ... }
    uploadTask.addOnFailureListener { ... }
}

注:filename包含时间戳,避免文件覆盖。


问题分析与解决

1. Firebase SDK的API调用差异

Firebase Storage SDK不会直接调用标准GCS的WriteObject API,它通过Firebase封装的上传接口(如分片上传端点)完成文件上传,最终虽然会将对象存入GCS,但在GCP的storage.googleapis.com/api/request_count指标中,对应的metric.labels.method标签值和标准API调用不同。

常见的Firebase上传对应的method值包括:

  • firebase.storage.v1.StorageService.WriteObject
  • ResumableUpload(分片上传场景)

2. 告警策略Filter的问题

当前告警策略的filter仅匹配metric.labels.method = "WriteObject",而Firebase SDK上传对应的method不在这个范围内,因此无法触发告警。

解决方案

修改告警策略的filter条件,将Firebase上传对应的method纳入匹配范围:

  1. 通过GCP控制台的Metrics Explorer查询storage.googleapis.com/api/request_count指标,筛选目标Bucket,确认Firebase上传对应的具体method标签值。
  2. 更新filter,使用OR逻辑包含所有需要匹配的method,示例如下:
"filter": "resource.type = \"gcs_bucket\" AND resource.labels.bucket_name = \"bucket-x\" AND metric.type = \"storage.googleapis.com/api/request_count\" AND (metric.labels.method = \"WriteObject\" OR metric.labels.method = \"firebase.storage.v1.StorageService.WriteObject\" OR metric.labels.method = \"ResumableUpload\")"
  1. 保存更新后的告警策略,测试Firebase SDK上传,验证告警是否正常触发。

内容的提问来源于stack exchange,提问作者Daniel Schrödder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:47:40