Layanan data Google Cloud yang dibahas di halaman ini mencakup layanan yang memproses data yang disediakan dan menampilkan hasil pemrosesan tersebut, baik sebagai respons terhadap permintaan maupun secara berkelanjutan. Daripada menggunakan ketersediaan dan latensi sebagai SLI utama untuk layanan ini, pilihan yang lebih tepat adalah sebagai berikut:
- Ketepatan, ukuran jumlah error pemrosesan yang dialami pipeline.
- Keaktualan, ukuran terkait seberapa cepat data diproses.
Untuk mengetahui informasi lebih lanjut tentang pipeline data dari perspektif SRE, lihat Data Processing Pipelines di Site Reliability Engineering Workbook.
Anda mengekspresikan SLI ketepatan berbasis permintaan dengan menggunakan struktur TimeSeriesRatio
untuk menyiapkan rasio item yang memiliki masalah pemrosesan terhadap semua item yang diproses.
Anda memutuskan cara memfilter metrik menggunakan label yang tersedia untuk mendapatkan penentuan jumlah total "masalah" dan "valid" yang diinginkan.
Anda mengekspresikan SLI keaktualan berbasis permintaan dengan menggunakan
struktur DistributionCut
.
Dataflow
Dataflow adalah layanan analisis streaming yang terkelola sepenuhnya yang meminimalkan latensi, waktu pemrosesan, dan biaya. Anda dapat menggunakan Dataflow untuk memproses data sebagai streaming atau dalam batch menggunakan Apache Beam SDK.
Untuk informasi tambahan, lihat referensi berikut:
- Dokumentasi untuk Dataflow.
- Daftar jenis metrik
dataflow.googleapis.com
.
SLI Ketepatan
Dataflow menulis data metrik ke Cloud Monitoring menggunakan jenis resource yang dipantau dataflow_job
dan jenis metrik job/element_count
, yang menghitung jumlah elemen yang ditambahkan ke pcollection sejauh ini. Menjumlahkan seluruh label resource job_name
memberi Anda jumlah elemen yang akan diproses oleh tugas tersebut.
Secara terpisah, Anda dapat menggunakan jenis metrik
dengan
jenis resource pemantauan logging.googleapis.com
/log_entry_countdataflow_job
untuk menghitung jumlah error
yang dicatat oleh tugas tertentu, dengan menggunakan label metrik severity
.
Anda dapat menggunakan metrik ini untuk mengekspresikan SLI ketepatan berbasis permintaan sebagai fraksi error dan semua elemen yang diproses menggunakan struktur TimeSeriesRatio
, seperti yang ditunjukkan dalam contoh berikut:
"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 terbaru
Dataflow juga menulis data metrik ke Cloud Monitoring menggunakan jenis resource yang dipantau dataflow_job
dan jenis metrik job/per_stage_system_lag
, yang mengukur durasi maksimum saat ini saat sebuah item data sedang diproses atau menunggu pemrosesan.
Anda dapat mengekspresikan SLI keaktualan menggunakan metrik ini dengan menggunakan struktur DistributionCut
.
Contoh SLO berikut memperkirakan bahwa elemen data terlama diproses dalam waktu di bawah 100 detik 99% dari waktu selama periode satu jam yang bergulir:
{
"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"
}
Anda juga dapat mengekspresikan SLI keaktualan menggunakan
struktur WindowsBasedSli
.
Contoh berikut SLO memperkirakan bahwa 99% periode lima menit selama periode satu hari berkelanjutan tidak melihat elemen (nol) yang diproses dalam waktu lebih dari 100 detik:
{
"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"
}
Perhatikan bahwa, agar periode dianggap "baik", metrik tidak boleh melebihi batas yang ditentukan di range
kapan pun selama periode evaluasi.
Dataproc
Dataproc menyediakan cluster yang dibuat untuk tujuan khusus dan terkelola sepenuhnya yang dapat diskalakan secara otomatis untuk mendukung tugas pemrosesan data atau analisis Hadoop atau Spark.
Untuk informasi tambahan, lihat referensi berikut:
- Dokumentasi untuk Dataproc.
- Daftar jenis metrik
dataproc.googleapis.com
.
SLI Ketepatan
Dataproc menulis data metrik ke Cloud Monitoring menggunakan jenis resource yang dimonitor cloud_dataproc_cluster
dan jenis metrik berikut:
-
cluster/job/submitted_count
, yang menghitung jumlah total pekerjaan yang dikirim. -
cluster/job/failed_count
, yang menghitung jumlah total tugas yang gagal.
Anda dapat menggunakan metrik ini untuk mengekspresikan SLI ketepatan berdasarkan permintaan sebagai rasio,
TimeSeriesRatio
, dari tugas yang gagal terhadap semua
tugas yang dikirim, seperti yang ditunjukkan dalam contoh berikut:
"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 terbaru
Dataproc juga menulis data metrik ke Cloud Monitoring menggunakan jenis resource yang dipantau cloud_dataproc_cluster
dan jenis metrik berikut:
-
cluster/job/duration
, yang mengukur berapa lama tugas berada dalam status pemrosesan. Anda dapat memfilter data pada label metrikstate
untuk mengidentifikasi waktu yang dihabiskan di status tertentu. Misalnya, Anda dapat membuat SLI yang mengukur durasi tugas berada dalam statusPENDING
, untuk menetapkan waktu tunggu maksimum yang diizinkan sebelum tugas mulai diproses. -
cluster/job/completion_time
, yang mengukur berapa lama tugas berada di metrikcluster/job/completion_time
. Gunakan jika penyelesaian tugas adalah metrik yang dipahami dengan baik atau saat volume data yang diproses oleh tugas di cluster tidak bervariasi, yang akan memengaruhi waktu pemrosesan.
Anda dapat mengekspresikan SLI keaktualan menggunakan metrik ini menggunakan
struktur DistributionCut
, seperti yang ditunjukkan dalam
contoh berikut.
Contoh SLO berikut menggunakan cluster/job/duration
dan memperkirakan bahwa 99% tugas di "my_cluster" berada dalam status PENDING
selama kurang dari 100 detik selama periode 24 jam:
{
"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"
}
Contoh SLO berikut menggunakan cluster/job/completion_time
dan memperkirakan bahwa 99% tugas di "my_cluster" selesai dalam waktu kurang dari 100 detik selama periode 24 jam yang berkelanjutan:
{
"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"
}