Dataflow mengumpulkan metrik untuk tugas Anda, yang dapat membantu Anda men-debug error, memecahkan masalah performa, atau mengoptimalkan pipeline. Antarmuka pemantauan Dataflow menampilkan visualisasi untuk metrik ini. Anda juga dapat menggunakan Cloud Monitoring untuk membuat pemberitahuan atau membuat kueri Metrics Explorer.
Mengakses metrik tugas
Untuk melihat metrik tugas untuk tugas, lakukan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Dataflow > Jobs.
Pilih tugas.
Klik tab Metrik tugas.
Pilih metrik yang ingin dilihat.
Untuk mengakses informasi tambahan dalam diagram metrik tugas, klik
Jelajahi data.
Setiap metrik diatur ke dalam dasbor berikut:
Dukungan dan batasan
Saat menggunakan metrik Dataflow, perhatikan detail berikut.
Terkadang data tugas tidak tersedia secara berkala. Jika data tidak ada, kesenjangan akan muncul di diagram pemantauan tugas.
Beberapa diagram ini khusus untuk pipeline streaming.
Untuk menulis data metrik, akun layanan yang dikelola pengguna harus memiliki izin IAM API
monitoring.timeSeries.create
. Izin ini disertakan dengan peran pekerja Dataflow.Layanan Dataflow melaporkan waktu CPU yang direservasi setelah tugas selesai. Untuk tugas tanpa batas (streaming), waktu CPU yang dicadangkan hanya dilaporkan setelah tugas dibatalkan atau gagal. Oleh karena itu, metrik tugas tidak menyertakan waktu CPU yang dicadangkan untuk tugas streaming.
Metrik penskalaan otomatis
Penskalaan Otomatis Horizontal memungkinkan Dataflow memilih jumlah instance pekerja yang sesuai untuk tugas Anda, dengan menambahkan atau menghapus pekerja sesuai kebutuhan.
Bagian Penskalaan otomatis pada tab Metrik tugas menampilkan jumlah pekerja dan jumlah target pekerja dari waktu ke waktu. Jika menggunakan Streaming Engine, tugas Anda juga akan menampilkan jumlah pekerja minimum dan maksimum.
Untuk melihat histori perubahan penskalaan otomatis, klik Histori lainnya. Tabel dengan informasi tentang histori pekerja tugas Anda akan ditampilkan.
Untuk melihat informasi penskalaan otomatis tambahan untuk tugas streaming, klik tab Penskalaan otomatis. Untuk informasi selengkapnya, lihat Memantau penskalaan otomatis Dataflow.
Metrik ringkasan
Metrik berikut muncul di bagian Metrik ringkasan.
Keaktualan data
Metrik ini hanya berlaku untuk tugas streaming.
Keaktualan data adalah perbedaan antara waktu saat elemen data diproses (waktu pemrosesan) dan stempel waktu elemen data (waktu peristiwa). Nilai yang lebih tinggi berarti ada penundaan yang lebih lama antara waktu peristiwa dan waktu pemrosesan.
Diagram keaktualan data menunjukkan nilai keaktualan data maksimum pada waktu apa pun. Dataflow memproses beberapa elemen secara paralel, sehingga grafik mencerminkan elemen dengan penundaan terbesar relatif terhadap waktu peristiwanya.
Jika beberapa data input belum diproses, watermark output mungkin tertunda, yang memengaruhi keaktualan data. Perbedaan yang signifikan antara waktu stempel waktu dan waktu peristiwa mungkin menunjukkan operasi lambat atau macet. Untuk informasi selengkapnya, lihat Watermark dan data terlambat dalam dokumentasi Apache Beam.
Dasbor menyertakan dua diagram berikut:
- Keaktualan data menurut tahap
- Keaktualan data
Pada gambar berikut, area yang ditandai menunjukkan perbedaan besar antara waktu peristiwa dan waktu watermark output, yang menunjukkan operasi yang lambat.
Masalah berikut dapat menyebabkan nilai tinggi untuk metrik ini:
- Bottleneck performa: Jika pipeline Anda memiliki tahap dengan latensi sistem yang tinggi atau log yang menunjukkan transformasi macet, pipeline mungkin memiliki masalah performa yang dapat meningkatkan keaktualan data. Untuk menyelidiki lebih lanjut, lihat Memecahkan masalah tugas yang lambat atau macet.
- Bottleneck sumber data: Jika sumber data Anda memiliki backlog yang terus bertambah, stempel waktu peristiwa elemen Anda mungkin berbeda dengan stempel waktu saat menunggu diproses. Backlog yang besar sering kali disebabkan oleh bottleneck performa,
atau masalah sumber data yang paling baik dideteksi dengan memantau sumber yang digunakan
oleh pipeline Anda.
- Sumber yang tidak diurutkan seperti Pub/Sub dapat menghasilkan watermark yang macet meskipun menghasilkan output dengan kecepatan tinggi. Situasi ini terjadi karena elemen tidak menghasilkan output dalam urutan stempel waktu, dan watermark didasarkan pada stempel waktu minimum yang belum diproses.
- Percobaan ulang yang sering: Jika Anda melihat error yang menunjukkan elemen gagal diproses dan dicoba ulang, stempel waktu yang lebih lama dari elemen yang dicoba ulang mungkin meningkatkan keaktualan data. Daftar error Dataflow umum dapat membantu Anda memecahkan masalah.
Untuk tugas streaming yang baru-baru ini diperbarui, informasi tentang status tugas dan watermark mungkin tidak tersedia. Operasi pembaruan membuat beberapa perubahan yang memerlukan waktu beberapa menit untuk diterapkan ke antarmuka pemantauan Dataflow. Coba muat ulang antarmuka pemantauan lima menit setelah memperbarui tugas Anda.
Latensi sistem
Metrik ini hanya berlaku untuk tugas streaming.
Latensi sistem adalah jumlah maksimum detik saat ini yang telah diproses atau menunggu pemrosesan oleh item data. Metrik ini mencakup waktu tunggu elemen di dalam sumber. Misalnya, jika tujuan output berhenti menerima permintaan tulis selama jangka waktu tertentu, data mungkin akan terakumulasi di sumber, sehingga menyebabkan latensi sistem meningkat. Jika operasi tulis dilanjutkan dan pipeline dapat mengejar, latensi sistem akan kembali ke tingkat dasar pengukurannya.
Kasus berikut adalah pertimbangan tambahan:
- Untuk beberapa sumber dan sink, latensi sistem adalah jumlah waktu maksimum yang dibutuhkan elemen untuk menunggu di dalam sumber sebelum ditulis ke semua sink.
- Terkadang, sumber tidak memberikan nilai untuk jangka waktu yang ditunggu elemen di dalam sumber. Selain itu, elemen mungkin tidak memiliki metadata untuk menentukan waktu peristiwanya. Dalam skenario ini, latensi sistem dihitung dari saat pipeline pertama kali menerima elemen.
Dasbor menyertakan dua diagram berikut:
- Latensi sistem menurut tahap
- Latensi sistem
Throughput
Throughput adalah volume data yang diproses pada waktu tertentu. Dasbor mencakup diagram berikut:
- Throughput per langkah dalam elemen per detik
- Throughput per langkah dalam byte per detik
Jumlah log error pekerja
Jumlah log error pekerja menunjukkan rasio error yang diamati di semua pekerja pada waktu tertentu.
Metrik streaming
Metrik berikut muncul di bagian Metrik streaming.
Backlog
Metrik ini hanya berlaku untuk tugas streaming.
Dasbor Backlog memberikan informasi tentang elemen yang menunggu untuk diproses. Dasbor menyertakan dua diagram berikut:
- Detik backlog (khusus Streaming Engine)
- Byte backlog (dengan dan tanpa Streaming Engine)
Diagram Detik backlog menunjukkan estimasi jumlah waktu dalam detik yang diperlukan untuk menggunakan backlog saat ini jika tidak ada data baru yang masuk dan throughput tidak berubah. Estimasi waktu backlog dihitung dari throughput dan byte backlog dari sumber input yang masih perlu diproses. Metrik ini digunakan oleh fitur penskalaan otomatis streaming untuk menentukan kapan harus menskalakan ke atas atau ke bawah.
Diagram Byte backlog menunjukkan jumlah input yang diketahui dan belum diproses untuk suatu tahap dalam byte. Metrik ini membandingkan byte yang tersisa untuk digunakan oleh setiap tahap dengan tahap upstream. Agar metrik ini dilaporkan secara akurat, setiap sumber yang ditransfer oleh pipeline harus dikonfigurasi dengan benar. Sumber bawaan seperti Pub/Sub dan BigQuery sudah didukung secara default, tetapi sumber kustom memerlukan beberapa penerapan tambahan. Untuk mengetahui detail selengkapnya, lihat penskalaan otomatis untuk sumber kustom tanpa batas.
Memproses
Metrik ini hanya berlaku untuk tugas streaming.
Saat Anda menjalankan pipeline Apache Beam di layanan Dataflow, tugas pipeline akan berjalan di VM pekerja. Dasbor Pemrosesan memberikan informasi tentang jumlah waktu tugas telah diproses di VM pekerja. Dasbor menyertakan dua diagram berikut:
- Peta panas latensi pemrosesan pengguna
- Latensi pemrosesan pengguna menurut tahap
Peta panas latensi pemrosesan pengguna menampilkan latensi operasi maksimum di atas distribusi persentil ke-50, ke-95, dan ke-99. Gunakan peta panas untuk melihat apakah ada operasi longtail yang menyebabkan latensi sistem secara keseluruhan tinggi atau berdampak negatif pada keaktualan data secara keseluruhan.
Untuk memperbaiki masalah upstream sebelum menjadi masalah downstream, tetapkan kebijakan pemberitahuan untuk latensi tinggi di persentil ke-50.
Diagram Latensi pemrosesan pengguna menurut tahap menunjukkan persentil ke-99 untuk semua tugas yang diproses pekerja yang dikelompokkan menurut tahap. Jika kode pengguna menyebabkan bottleneck, diagram ini menunjukkan tahap mana yang berisi bottleneck. Anda dapat menggunakan langkah-langkah berikut untuk men-debug pipeline:
Gunakan diagram untuk menemukan tahap dengan latensi yang sangat tinggi.
Di halaman detail tugas, di tab Execution details, untuk Graph view, pilih Stage workflow. Dalam grafik Alur kerja tahap, temukan tahap yang memiliki latensi yang sangat tinggi.
Untuk menemukan operasi pengguna terkait, di grafik, klik node untuk tahap tersebut.
Untuk menemukan detail tambahan, buka Cloud Profiler, dan gunakan Cloud Profiler untuk men-debug pelacakan tumpukan pada rentang waktu yang benar. Cari operasi pengguna yang Anda identifikasi di langkah sebelumnya.
Keparalelan
Metrik ini hanya berlaku untuk tugas Streaming Engine.
Diagram Pemrosesan paralel menunjukkan perkiraan jumlah kunci yang digunakan untuk pemrosesan data untuk setiap tahap. Dataflow diskalakan berdasarkan paralelisme pipeline.
Saat Dataflow menjalankan pipeline, pemrosesan didistribusikan di beberapa virtual machine (VM) Compute Engine, yang juga dikenal sebagai pekerja. Layanan Dataflow secara otomatis melakukan paralelisasi dan mendistribusikan logika pemrosesan dalam pipeline Anda ke pekerja. Pemrosesan untuk kunci tertentu diserialisasi, sehingga jumlah total kunci untuk suatu tahap mewakili paralelisme maksimum yang tersedia pada tahap tersebut.
Metrik paralelisme dapat berguna untuk menemukan hot key atau bottleneck untuk pipeline yang lambat atau macet.
Persistensi
Metrik ini hanya berlaku untuk tugas streaming.
Dasbor Persistensi memberikan informasi tentang kecepatan penyimpanan persisten ditulis dan dibaca oleh tahap pipeline tertentu dalam byte per detik. Byte yang dibaca dan ditulis mencakup operasi status pengguna dan status untuk pengacakan persisten, penghapusan duplikat, input samping, dan pelacakan watermark. Coder pipeline dan penyimpanan dalam cache memengaruhi byte yang dibaca dan ditulis. Byte penyimpanan mungkin berbeda dengan byte yang diproses karena penggunaan penyimpanan internal dan penyimpanan dalam cache.
Dasbor menyertakan dua diagram berikut:
- Operasi tulis penyimpanan
- Pembacaan penyimpanan
Duplikat
Metrik ini hanya berlaku untuk tugas streaming.
Diagram Duplikat menunjukkan jumlah pesan yang diproses oleh tahap tertentu yang telah difilter sebagai duplikat.
Dataflow mendukung banyak sumber dan sink yang menjamin pengiriman at least once
. Kelemahan pengiriman at least once
adalah dapat menyebabkan duplikat.
Dataflow menjamin pengiriman exactly once
, yang berarti duplikat akan otomatis difilter.
Tahap downstream diselamatkan dari pemrosesan ulang elemen yang sama, yang memastikan bahwa status dan output tidak terpengaruh.
Pipeline dapat dioptimalkan untuk resource dan performa dengan mengurangi jumlah duplikat yang dihasilkan di setiap tahap.
Timer
Metrik ini hanya berlaku untuk tugas streaming.
Dasbor Timer memberikan informasi tentang jumlah timer yang tertunda dan jumlah timer yang telah diproses di tahap pipeline tertentu. Karena jendela mengandalkan timer, metrik ini memungkinkan Anda melacak progres jendela.
Dasbor menyertakan dua diagram berikut:
- Timer yang tertunda menurut tahap
- Pemrosesan timer menurut tahap
Diagram ini menunjukkan kecepatan jendela yang tertunda atau sedang diproses pada titik waktu tertentu. Diagram Timer yang tertunda menurut tahap menunjukkan jumlah periode yang tertunda karena bottleneck. Diagram Pemrosesan timer menurut tahap menunjukkan jumlah jendela yang mengumpulkan elemen.
Diagram ini menampilkan semua timer tugas, jadi jika timer digunakan di tempat lain dalam kode Anda, timer tersebut juga akan muncul dalam diagram ini.
Metrik resource
Metrik berikut muncul di bagian Metrik resource.
Pemakaian CPU
Pemakaian CPU adalah jumlah CPU yang digunakan dibagi dengan jumlah CPU yang tersedia untuk pemrosesan. Metrik per pekerja ini ditampilkan sebagai persentase. Dasbor ini mencakup empat diagram berikut:
- Pemakaian CPU (Semua pekerja)
- Pemakaian CPU (Statistik)
- Pemakaian CPU (4 Teratas)
- Pemakaian CPU (4 Terbawah)
Pemakaian memori
Penggunaan memori adalah perkiraan jumlah memori yang digunakan oleh pekerja dalam byte per detik. Dasbor menyertakan dua diagram berikut:
- Penggunaan memori pekerja maksimum (perkiraan byte per detik)
- Penggunaan memori (estimasi byte per detik)
Diagram Penggunaan memori pekerja maksimum memberikan informasi tentang pekerja yang menggunakan memori paling banyak dalam tugas Dataflow pada setiap titik waktu. Jika, pada titik yang berbeda selama tugas, pekerja yang menggunakan jumlah memori maksimum berubah, garis yang sama dalam diagram akan menampilkan data untuk beberapa pekerja. Setiap titik data dalam garis menampilkan data untuk pekerja yang menggunakan jumlah memori maksimum pada saat itu. Diagram membandingkan perkiraan memori yang digunakan oleh pekerja dengan batas memori dalam byte.
Anda dapat menggunakan diagram ini untuk memecahkan masalah kehabisan memori (OOM). Error pekerja karena kehabisan memori tidak ditampilkan pada diagram ini.
Diagram Penggunaan memori menunjukkan estimasi memori yang digunakan oleh semua pekerja dalam tugas Dataflow dibandingkan dengan batas memori dalam byte.
Metrik input dan output
Jika tugas Dataflow streaming Anda membaca atau menulis data menggunakan Pub/Sub, tab Metrik tugas akan menampilkan metrik untuk pembacaan atau penulisan Pub/Sub.
Semua metrik input dari jenis yang sama digabungkan, dan semua metrik output juga digabungkan. Misalnya, semua metrik Pub/Sub dikelompokkan dalam satu bagian. Setiap jenis metrik diatur ke dalam bagian terpisah. Untuk mengubah metrik yang ditampilkan, pilih bagian di sebelah kiri yang paling mewakili metrik yang Anda cari. Gambar berikut menampilkan semua bagian yang tersedia.
Dua diagram berikut ditampilkan di bagian Metrik Input dan Metrik Output.
Permintaan per detik
Permintaan per detik adalah kapasitas permintaan API untuk membaca atau menulis data oleh sumber atau sink seiring waktu. Jika rasio ini turun menjadi nol, atau menurun secara signifikan selama jangka waktu yang lama secara relatif terhadap perilaku yang diharapkan, pipeline mungkin diblokir agar tidak melakukan operasi tertentu. Selain itu, mungkin tidak ada data yang dapat dibaca. Dalam hal ini, tinjau langkah-langkah tugas yang memiliki watermark sistem yang tinggi. Selain itu, periksa log pekerja untuk menemukan error atau indikasi tentang pemrosesan yang lambat.
Error respons per detik berdasarkan jenis error
Error respons per detik berdasarkan jenis error adalah rasio permintaan API yang gagal untuk membaca atau menulis data oleh sumber atau sink dari waktu ke waktu. Jika error tersebut sering terjadi, permintaan API ini dapat memperlambat pemrosesan. Permintaan API yang gagal tersebut harus diselidiki. Untuk membantu memecahkan masalah ini, tinjau Kode error input dan output umum. Tinjau juga dokumentasi kode error tertentu yang digunakan oleh sumber atau sink, seperti kode error Pub/Sub.
Untuk mengetahui informasi selengkapnya tentang skenario tempat Anda dapat menggunakan metrik ini untuk proses debug, lihat Alat untuk proses debug di "Memecahkan masalah tugas yang lambat atau macet".
Menggunakan Cloud Monitoring
Dataflow terintegrasi sepenuhnya dengan Cloud Monitoring. Gunakan Cloud Monitoring untuk tugas berikut:
- Buat pemberitahuan saat tugas Anda melebihi nilai minimum yang ditentukan pengguna.
- Gunakan Metrics Explorer untuk membuat kueri dan menyesuaikan rentang waktu metrik.
Untuk mengetahui petunjuk tentang cara membuat pemberitahuan dan menggunakan Metrics Explorer, lihat Menggunakan Cloud Monitoring untuk pipeline Dataflow.
Membuat pemberitahuan Cloud Monitoring
Cloud Monitoring memungkinkan Anda membuat pemberitahuan saat tugas Dataflow melebihi batas yang ditentukan pengguna. Untuk membuat pemberitahuan Cloud Monitoring dari diagram metrik, klik Buat kebijakan pemberitahuan.
Jika tidak dapat melihat grafik pemantauan atau membuat pemberitahuan, Anda mungkin memerlukan Izin pemantauan tambahan.
Lihat di Metrics Explorer
Anda dapat melihat diagram metrik Dataflow di Metrics Explorer, tempat Anda dapat membuat kueri dan menyesuaikan rentang waktu metrik.
Untuk melihat diagram Dataflow di Metrics Explorer, di tampilan Job metrics, buka
More chart options dan klik View in Metrics Explorer.Saat menyesuaikan rentang waktu metrik, Anda dapat memilih durasi yang telah ditentukan atau memilih interval waktu kustom untuk menganalisis tugas.
Secara default, untuk tugas streaming dan tugas batch yang sedang berlangsung, layar akan menampilkan metrik enam jam sebelumnya untuk tugas tersebut. Untuk tugas streaming yang dihentikan atau selesai, tampilan default akan menampilkan seluruh runtime durasi tugas.
Metrik I/O Dataflow
Anda dapat melihat metrik I/O Dataflow berikut di Metrics Explorer:
job/pubsub/write_count
: Permintaan publikasi Pub/Sub dari PubsubIO.Write dalam tugas Dataflow.job/pubsub/read_count
: Permintaan pull Pub/Sub dari PubsubIO.Read dalam tugas Dataflow.job/bigquery/write_count
: Permintaan publikasi BigQuery dari BigQueryIO.Write dalam tugas Dataflow. Metrikjob/bigquery/write_count
tersedia di pipeline Python menggunakan transformasi WriteToBigQuery denganmethod='STREAMING_INSERTS'
diaktifkan di Apache Beam v2.28.0 atau yang lebih baru. Metrik ini tersedia untuk pipeline batch dan streaming.- Jika pipeline Anda menggunakan sumber atau sink BigQuery, untuk memecahkan masalah kuota, gunakan metrik BigQuery Storage API.
Untuk mengetahui daftar lengkap metrik Dataflow, lihat dokumentasi metrikGoogle Cloud .
Langkah berikutnya
- Memecahkan masalah tugas yang lambat atau macet
- Menyesuaikan Penskalaan Otomatis Horizontal untuk pipeline streaming
- Mengoptimalkan biaya