Layanan pemrosesan data

Layanan data yang dibahas di halaman ini mencakup layanan yang memproses data yang diberikan dan menghasilkan output dari pemrosesan tersebut, baik sebagai respons terhadap permintaan atau secara berkelanjutan. Google Cloud Daripada menggunakan ketersediaan dan latensi sebagai SLI utama untuk layanan ini, pilihan yang lebih tepat adalah berikut:

  • Ketepatan, ukuran jumlah error pemrosesan yang terjadi pada pipeline.
  • Keaktualan, ukuran seberapa cepat data diproses.

Untuk informasi lebih lanjut tentang pipeline data dari perspektif SRE, lihat Pipeline Pemrosesan Data di Site Reliability Engineering Workbook.

Anda menyatakan SLI kebenaran berbasis permintaan menggunakan struktur TimeSeriesRatio untuk menyiapkan rasio item yang mengalami masalah pemrosesan terhadap semua item yang diproses. Anda memutuskan cara memfilter metrik menggunakan label yang tersedia untuk mendapatkan penentuan "masalah" dan total "valid" yang diinginkan.

Anda menyatakan SLI keaktualan berbasis permintaan menggunakan struktur DistributionCut.

Dataflow

Dataflow adalah layanan analisis streaming yang terkelola sepenuhnya untuk meminimalkan latensi, waktu pemrosesan, dan biaya. Anda dapat menggunakan Dataflow untuk memproses data sebagai stream atau dalam batch menggunakan Apache Beam SDK.

Untuk informasi tambahan, lihat referensi berikut:

SLI Ketepatan

Dataflow menulis data metrik ke Cloud Monitoring menggunakan jenis resource yang dimonitor dataflow_job dan jenis metrik job/element_count, yang menghitung jumlah elemen yang ditambahkan ke pcollection sejauh ini. Menjumlahkan label resource job_name akan memberi Anda jumlah elemen yang akan diproses oleh tugas.

Secara terpisah, Anda dapat menggunakan jenis metrik logging.googleapis.com/log_entry_count dengan jenis resource yang dimonitor dataflow_job untuk menghitung jumlah error yang dicatat oleh tugas tertentu, dengan menggunakan label metrik severity.

Anda dapat menggunakan metrik ini untuk menyatakan SLI kebenaran berbasis permintaan sebagai fraksi error dan semua elemen yang diproses dengan 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 Keaktualan

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 item data telah diproses atau menunggu pemrosesan.

Anda dapat menyatakan SLI keaktualan menggunakan metrik ini dengan menggunakan struktur DistributionCut.

Contoh SLO berikut mengharapkan elemen data terlama diproses dalam waktu kurang dari 100 detik 99% dari waktu selama periode satu jam 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 menyatakan SLI keaktualan menggunakan struktur WindowsBasedSli.

Contoh SLO berikut mengharapkan bahwa 99% jendela lima menit selama periode satu hari bergulir tidak melihat (nol) elemen yang diproses dalam 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 jendela dianggap "baik", metrik tidak boleh melebihi nilai minimum yang ditentukan dalam range pada titik mana pun selama jendela evaluasi.

Dataproc

Dataproc menyediakan cluster yang dibuat untuk tujuan khusus dan terkelola sepenuhnya yang dapat menskalakan otomatis untuk mendukung tugas pemrosesan data atau analisis Hadoop atau Spark.

Untuk informasi tambahan, lihat referensi berikut:

SLI Ketepatan

Dataproc menulis data metrik ke Cloud Monitoring menggunakan jenis resource yang dimonitor cloud_dataproc_cluster dan jenis metrik berikut:

Anda dapat menggunakan metrik ini untuk menyatakan SLI ketepatan berbasis permintaan sebagai rasio, TimeSeriesRatio, tugas yang gagal terhadap semua tugas yang dikirimkan, 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 Keaktualan

Dataproc juga menulis data metrik ke Cloud Monitoring menggunakan jenis resource yang dimonitor cloud_dataproc_cluster dan jenis metrik berikut:

  • cluster/job/duration, yang mengukur berapa lama pekerjaan tetap dalam status pemrosesan. Anda dapat memfilter data pada label metrik state untuk mengidentifikasi waktu yang dihabiskan dalam status tertentu. Misalnya, Anda dapat membuat SLI yang mengukur durasi tugas dalam status PENDING, untuk menetapkan waktu tunggu maksimum yang diizinkan sebelum tugas mulai diproses.
  • cluster/job/completion_time, yang mengukur durasi tugas tetap berada dalam cluster/job/completion_time. Gunakan saat penyelesaian tugas adalah metrik yang dipahami dengan baik atau saat volume data yang diproses oleh tugas dalam cluster tidak bervariasi, yang akan memengaruhi waktu pemrosesan.

Anda dapat menyatakan SLI keaktualan menggunakan metrik ini dengan menggunakan struktur DistributionCut, seperti yang ditunjukkan dalam contoh berikut.

SLO contoh berikut menggunakan cluster/job/duration dan mengharapkan 99% tugas di "my_cluster" berada dalam status PENDING selama kurang dari 100 detik selama periode 24 jam bergulir:

{
  "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 contoh berikut menggunakan cluster/job/completion_time dan mengharapkan 99% tugas di "my_cluster" selesai dalam waktu kurang dari 100 detik selama periode 24 jam bergulir:

{
  "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"
}