資料處理服務

本頁所述的 Google Cloud 資料服務包括處理提供的資料,並輸出處理結果,無論是回應要求或持續處理皆然。請勿將可用性和延遲時間做為這些服務的主要 SLI,以下是更適合的選擇:

  • 正確性:評估管道發生多少處理錯誤。
  • 更新間隔:評估資料處理速度的一種指標。

如要進一步瞭解 SRE 觀點的資料管道,請參閱 網站可靠性工程工作簿中的「資料處理管道」。

您可以使用 TimeSeriesRatio 結構,針對處理過的所有項目,設定有處理問題項目的比例,藉此表達以要求為準的正確性 SLI。您可以決定如何篩選指標,並使用可用的標籤來判斷「問題」和「有效」的總數。

您可以使用 DistributionCut 結構體,表示以要求為基礎的新鮮度 SLI。

Dataflow

Dataflow 是全代管的串流分析服務,可將延遲時間、處理時間和費用降到最低。您可以使用 Dataflow 搭配 Apache Beam SDK,以串流或批次的方式處理資料。

如需更多資訊,請參閱下列資源:

正確性 SLI

Dataflow 會使用 dataflow_job 受控資源類型和 job/element_count 指標類型,將指標資料寫入 Cloud Monitoring,這類型會計算目前已新增至 pcollection 的元素數量。在 job_name 資源標籤中加總,即可得知工作要處理的元素數量。

另外,您也可以使用 logging.googleapis.com/log_entry_count 指標類型搭配 dataflow_job 受控資源類型,透過 severity 指標標籤計算特定工作記錄的錯誤數量。

您可以使用這些指標,透過 TimeSeriesRatio 結構體,將以要求為準的正確性 SLI 表示為錯誤和所有已處理元素的比率,如以下範例所示:

"serviceLevelIndicator": {
  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter":
        "metric.type=\"dataflow.googleapis.com/job/element_count\"
         resource.type=\"dataflow_job\"
         resource.label.\"job_name\"=\"my_job\"",
      "badServiceFilter":
        "metric.type=\"logging.googleapis.com/log_entry_count\"
         resource.type=\"dataflow_job\"
         resource.label.\"job_name\"=\"my_job\"
         metric.label.\"severity\"=\"error\"",
    }
  }
}

時效性 SLI

Dataflow 也會使用 dataflow_job 受控資源類型和 job/per_stage_system_lag 指標類型,將指標資料寫入 Cloud Monitoring,用於評估資料項目目前處理或等待處理的最長時間。

您可以使用 DistributionCut 結構,透過這個指標表示新鮮度 SLI。

以下範例的 SLO 預期在 1 小時滾動期間,99% 的時間內,最舊的資料元素會在 100 秒內處理完畢:

{
  "serviceLevelIndicator": {
    "requestBased": {
      "distributionCut": {
        "distributionFilter":
          "metric.type=\"dataflow.googleapis.com/job/per_stage_system_lag\"
           resource.type=\"dataflow_job\"
           resource.label.\"job_name\"=\"my_job\"",
        "range": {
          "min": 0,
          "max": 100
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "3600s",
  "displayName": "99% data elements processed under 100 s"
}

您也可以使用 WindowsBasedSli 結構來表示新鮮度 SLI。

下列 SLO 範例預期在 1 天的滾動期間,99% 的五分鐘時間間隔中,不會有超過 100 秒的處理時間:

{
  "displayName": "Dataflow - windowed freshness",
  "serviceLevelIndicator": {
    "windowsBased": {
      "windowPeriod": "300s",
      "metricMeanInRange": {
        "timeSeries":
          "metric.type=\"dataflow.googleapis.com/job/per_stage_system_lag\"
           resource.type=\"dataflow_job\"
           resource.label.\"job_name\"=\"my_job\"",
        "range": {
          "min": "0",
          "max": "100"
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s"
}

請注意,如果視窗視為「良好」,則評估期間內的任何時間點,指標都不得超過 range 中指定的閾值。

Dataproc

Dataproc 提供全代管的專用叢集,可自動調度資源,支援任何 Hadoop 或 Spark 資料或數據分析處理工作。

如需更多資訊,請參閱下列資源:

正確性 SLI

Dataproc 會使用 cloud_dataproc_cluster 受控資源類型和下列指標類型,將指標資料寫入 Cloud Monitoring:

您可以使用這些指標,將依要求為基礎的正確性 SLI 表示為失敗工作與所有提交工作之間的比例 TimeSeriesRatio,如以下範例所示:

"serviceLevelIndicator": {
  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter":
        "metric.type=\"dataproc.googleapis.com/cluster/job/submitted_count\"
         resource.type=\"cloud_dataproc_cluster\"
         resource.label.\"cluster_name\"=\"my_cluster\"",
      "badServiceFilter":
        "metric.type=\"dataproc.googleapis.com/cluster/job/failed_count\"
         resource.type=\"cloud_dataproc_cluster\"
         resource.label.\"cluster_name\"=\"my_cluster\"",
    }
  }
}

時效性 SLI

Dataproc 也會使用 cloud_dataproc_cluster 受控資源類型和下列指標類型,將指標資料寫入 Cloud Monitoring:

  • cluster/job/duration,用來測量工作在處理狀態停留的時間長度。您可以依據 state 指標標籤篩選資料,找出在特定狀態下所花費的時間。舉例來說,您可以建立 SLI,用來評估工作處於 PENDING 狀態的時間長度,藉此設定工作開始處理前允許的最大等待時間。
  • cluster/job/completion_time,用於評估工作在 cluster/job/completion_time 指標中停留的時間長度。當工作完成度是可瞭解的指標,或是叢集中的工作處理資料量不會有所變動,進而影響處理時間時,請使用此指標。

您可以使用 DistributionCut 結構,透過這些指標來表示新鮮度 SLI,如以下範例所示。

以下 SLO 範例使用 cluster/job/duration,並預期在 24 小時滾動期間,99% 的「my_cluster」工作會處於 PENDING 狀態,且持續時間不到 100 秒:

{
  "serviceLevelIndicator": {
    "requestBased": {
      "distributionCut": {
        "distributionFilter":
          "metric.type=\"dataproc.googleapis.com/cluster/job/duration\"
           resource.type=\"cloud_dataproc_cluster\"
           resource.label.\"cluster_name\"=\"my_cluster\"
           metric.label.\"state\"=\"PENDING\"",
        "range": {
          "min": 0,
          "max": 100
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s",
  "displayName": "Dataproc pending jobs"
}

以下 SLO 範例使用 cluster/job/completion_time,並預期在 24 小時的滾動期間內,99% 的「my_cluster」工作會在 100 秒內完成:

{
  "serviceLevelIndicator": {
    "requestBased": {
      "distributionCut": {
        "distributionFilter":
          "metric.type=\"dataproc.googleapis.com/cluster/job/completion_time\"
           resource.type=\"cloud_dataproc_cluster\"
           resource.label.\"cluster_name\"=\"my_cluster\"",
        "range": {
          "min": 0,
          "max": 100
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s",
  "displayName": "Dataproc completed jobs"
}