本頁所述的 Google Cloud 資料服務包括處理提供的資料,並輸出處理結果,無論是回應要求或持續處理皆然。請勿將可用性和延遲時間做為這些服務的主要 SLI,以下是更適合的選擇:
- 正確性:評估管道發生多少處理錯誤。
- 更新間隔:評估資料處理速度的一種指標。
如要進一步瞭解 SRE 觀點的資料管道,請參閱 網站可靠性工程工作簿中的「資料處理管道」。
您可以使用 TimeSeriesRatio
結構,針對處理過的所有項目,設定有處理問題項目的比例,藉此表達以要求為準的正確性 SLI。您可以決定如何篩選指標,並使用可用的標籤來判斷「問題」和「有效」的總數。
您可以使用 DistributionCut
結構體,表示以要求為基礎的新鮮度 SLI。
Dataflow
Dataflow 是全代管的串流分析服務,可將延遲時間、處理時間和費用降到最低。您可以使用 Dataflow 搭配 Apache Beam SDK,以串流或批次的方式處理資料。
如需更多資訊,請參閱下列資源:
- Dataflow 說明文件。
dataflow.googleapis.com
指標類型清單。
正確性 SLI
Dataflow 會使用 dataflow_job
受控資源類型和 job/element_count
指標類型,將指標資料寫入 Cloud Monitoring,這類型會計算目前已新增至 pcollection 的元素數量。在 job_name
資源標籤中加總,即可得知工作要處理的元素數量。
另外,您也可以使用
指標類型搭配 logging.googleapis.com
/log_entry_countdataflow_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 資料或數據分析處理工作。
如需更多資訊,請參閱下列資源:
- Dataproc 說明文件。
dataproc.googleapis.com
指標類型清單。
正確性 SLI
Dataproc 會使用 cloud_dataproc_cluster
受控資源類型和下列指標類型,將指標資料寫入 Cloud Monitoring:
-
cluster/job/submitted_count
:計算提交的工作總數。 -
cluster/job/failed_count
,用於計算失敗工作的總數。
您可以使用這些指標,將依要求為基礎的正確性 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"
}