Memantau jalur pipa DLT
Artikel ini menjelaskan penggunaan fitur pemantauan dan pengamatan bawaan untuk alur DLT. Fitur-fitur ini mendukung tugas-tugas seperti:
- Mengamati kemajuan dan status pembaruan alur. Lihat Detail alur apa yang tersedia di UI?.
- Pemberitahuan tentang peristiwa alur seperti keberhasilan atau kegagalan pembaruan alur. Lihat Tambahkan pemberitahuan email untuk kejadian alur.
- Melihat metrik untuk sumber streaming seperti Apache Kafka dan Auto Loader (Pratinjau Umum). Lihat Menampilkan metrik streaming.
- Mengekstrak informasi terperinci tentang pembaruan alur seperti silsilah data, metrik kualitas data, dan penggunaan sumber daya. Lihat Apa itu log peristiwa DLT?.
- Menentukan tindakan kustom yang harus diambil saat peristiwa tertentu terjadi. Lihat Menentukan pemantauan kustom alur DLT dengan kait peristiwa.
Untuk memeriksa dan mendiagnosis performa kueri, lihat riwayat kueri akses untuk alur DLT. Fitur ini ada di Pratinjau Umum.
Menambahkan pemberitahuan email untuk peristiwa alur
Anda dapat mengonfigurasi satu atau beberapa alamat email untuk menerima pemberitahuan saat hal berikut ini terjadi:
- Pembaruan jalur telah berhasil diselesaikan.
- Pembaruan pipeline gagal, baik karena kesalahan yang dapat diulang atau tidak dapat diulang. Pilih opsi ini untuk menerima pemberitahuan untuk semua kegagalan alur.
- Pembaruan alur gagal dengan kesalahan yang tidak dapat diulang (fatal). Pilih opsi ini untuk menerima pemberitahuan hanya ketika kesalahan yang tidak dapat diulang terjadi.
- Sebuah aliran data tunggal gagal.
Untuk mengonfigurasi pemberitahuan email saat Anda membuat atau mengedit alur:
- Klik Tambahkan pemberitahuan.
- Masukkan satu atau beberapa alamat email untuk menerima pemberitahuan.
- Klik kotak centang untuk setiap jenis pemberitahuan untuk dikirim ke alamat email yang dikonfigurasi.
- Klik Tambahkan pemberitahuan.
Detail alur apa yang tersedia di UI?
Grafik pipeline muncul segera setelah pembaruan pada alur berhasil dimulai. Panah mewakili dependensi antara himpunan data di alur kerja Anda. Secara default, halaman detail alur memperlihatkan pembaruan terbaru untuk tabel, tetapi Anda dapat memilih pembaruan yang lebih lama dari menu drop-down.
Detailnya termasuk ID alur, kode sumber, biaya komputasi, edisi produk, dan saluran yang dikonfigurasi untuk alur.
Untuk melihat tampilan himpunan data tabular, klik tab Daftar. Tampilan Daftar memungkinkan Anda melihat semua himpunan data dalam alur Anda yang diwakili sebagai baris dalam tabel dan berguna ketika DAG alur Anda terlalu besar untuk divisualisasikan dalam tampilan Grafik. Anda dapat mengontrol himpunan data yang ditampilkan dalam tabel menggunakan beberapa filter seperti nama, jenis, dan status himpunan data. Untuk beralih kembali ke visualisasi DAG, klik Graph.
Pengguna Jalankan sebagai adalah pemilik alur, dan pembaruan alur berjalan dengan izin pengguna ini. Untuk mengubah pengguna run as
, klik Izin dan ubah pemilik alur.
Bagaimana Anda dapat melihat detail himpunan data?
Mengklik himpunan data dalam grafik alur atau daftar himpunan data memperlihatkan detail tentang himpunan data. Detailnya termasuk skema himpunan data, metrik kualitas data, dan tautan ke kode sumber yang menentukan himpunan data.
Lihat riwayat pembaruan
Untuk melihat riwayat dan status pembaruan alur, klik menu drop-down riwayat pembaruan di bilah atas.
Pilih pembaruan di menu drop-down untuk melihat grafik, detail, dan peristiwa untuk pembaruan. Untuk kembali ke pembaruan terbaru, klik Tampilkan pembaruan terbaru.
Melihat metrik streaming
Penting
Pemantauan streaming untuk DLT berada dalam Pratinjau Umum.
Anda dapat melihat metrik streaming dari sumber data yang didukung oleh Spark Structured Streaming, seperti tabel Apache Kafka, Amazon Kinesis, Auto Loader, dan Delta, untuk setiap aliran streaming di alur DLT Anda. Metrik ditampilkan sebagai bagan di panel kanan DLT UI dan menyertakan detik backlog, byte backlog, rekaman backlog, dan file backlog. Bagan menampilkan nilai maksimum yang diagregasi menurut menit dan tipsalat memperlihatkan nilai maksimum saat Anda mengarahkan mouse ke atas bagan. Data dibatasi hingga 48 jam terakhir dari waktu saat ini.
Tabel di alur Anda dengan metrik streaming yang tersedia menampilkan ikon ikon saat melihat DAG alur di tampilan Grafik UI. Untuk melihat metrik streaming, klik
untuk menampilkan bagan metrik streaming di tab Alur di panel kanan. Anda juga dapat menerapkan filter untuk menampilkan hanya tabel dengan metrik streaming dengan mengklik Daftar lalu mengklik Dengan metrik streaming.
Setiap sumber streaming hanya mendukung metrik tertentu. Metrik yang tidak didukung oleh sumber streaming tidak tersedia untuk dilihat di UI. Tabel berikut ini memperlihatkan metrik yang tersedia untuk sumber streaming yang didukung:
sumber | backlog byte | catatan backlog | detik tunggakan | berkas tertunda |
---|---|---|---|---|
Kafka | ✓ | ✓ | ||
Kinesis | ✓ | ✓ | ||
Delta | ✓ | ✓ | ||
Pemuat Otomatis | ✓ | ✓ | ||
Google Pub/Sub | ✓ | ✓ |
Apa itu log peristiwa DLT?
Log peristiwa DLT berisi semua informasi yang terkait dengan alur, termasuk log audit, pemeriksaan kualitas data, kemajuan alur, dan silsilah data. Anda dapat menggunakan log peristiwa untuk melacak, memahami, dan memantau status alur data Anda.
Anda dapat melihat entri log peristiwa di antarmuka pengguna DLT, DLT API, atau dengan langsung mengkueri log peristiwa. Bagian ini berfokus pada kueri log peristiwa secara langsung.
Anda juga dapat menentukan tindakan kustom untuk dijalankan saat peristiwa dicatat, misalnya, mengirim pemberitahuan, dengan kait peristiwa.
Penting
Jangan hapus log peristiwa atau katalog induk atau skema tempat log peristiwa diterbitkan. Menghapus log peristiwa dapat mengakibatkan pipeline Anda gagal diperbarui selama pelaksanaan di masa mendatang.
skema log peristiwa
Tabel berikut ini menjelaskan skema log peristiwa. Beberapa bidang ini berisi data JSON yang memerlukan penguraian untuk melakukan beberapa kueri, seperti bidang details
. Azure Databricks mendukung operator :
untuk mengurai bidang JSON. Lihat :
(tanda titik dua) operator.
Lapangan | Deskripsi |
---|---|
id |
Pengidentifikasi unik untuk catatan log peristiwa. |
sequence |
Dokumen JSON yang berisi metadata untuk mengidentifikasi dan mengurutkan peristiwa. |
origin |
Dokumen JSON yang berisi metadata untuk asal peristiwa, misalnya, penyedia cloud, wilayah penyedia cloud, user_id , pipeline_id , atau pipeline_type untuk menunjukkan tempat alur dibuat, baik DBSQL atau WORKSPACE . |
timestamp |
Waktu peristiwa direkam. |
message |
Pesan yang dapat dibaca manusia yang menjelaskan peristiwa tersebut. |
level |
Jenis peristiwa, misalnya, INFO , WARN , ERROR , atau METRICS . |
maturity_level |
Stabilitas skema peristiwa. Nilai yang mungkin adalah:
|
error |
Jika terjadi kesalahan, detail yang menjelaskan kesalahan. |
details |
Dokumen JSON yang berisi detail terstruktur peristiwa. Ini adalah bidang utama yang digunakan untuk menganalisis peristiwa. |
event_type |
Jenis peristiwa. |
Mengkueri log peristiwa
Nota
Bagian ini menjelaskan perilaku dan sintaks default untuk bekerja dengan log peristiwa untuk alur yang dikonfigurasi dengan Katalog Unity dan mode penerbitan default.
- Untuk perilaku alur Katalog Unity yang menggunakan mode penerbitan lama, lihat Mengelola log peristiwa untuk alur mode penerbitan lama Katalog Unity.
- Untuk perilaku dan sintaks alur metastore Hive, lihat Bekerja dengan log peristiwa untuk alur metastore Hive.
Secara default, DLT menulis log peristiwa ke tabel Delta tersembunyi di katalog dan skema default yang dikonfigurasi untuk alur. Meskipun disembunyikan, tabel masih dapat dikueri oleh semua pengguna dengan hak istimewa yang cukup. Secara default, hanya pemilik alur yang dapat mengkueri tabel log peristiwa.
Secara bawaan, nama untuk log peristiwa tersembunyi diformat sebagai event_log_{pipeline_id}
, di mana ID pipeline adalah UUID yang ditetapkan sistem dengan garis putus-putus digantikan oleh garis bawah.
Anda dapat berinteraksi dengan konfigurasi JSON untuk menerbitkan log peristiwa. Saat menerbitkan log peristiwa, Anda menentukan nama untuk log peristiwa dan dapat secara opsional menentukan katalog dan skema, seperti dalam contoh berikut:
{
"id": "ec2a0ff4-d2a5-4c8c-bf1d-d9f12f10e749",
"name": "billing_pipeline",
"event_log": {
"catalog": "catalog_name",
"schema": "schema_name",
"name": "event_log_table_name"
}
}
Lokasi log peristiwa juga berfungsi sebagai lokasi skema untuk kueri Auto Loader apa pun di alur. Databricks merekomendasikan untuk membuat tampilan di atas tabel log peristiwa sebelum memodifikasi hak istimewa, karena beberapa pengaturan komputasi mungkin memungkinkan pengguna untuk mendapatkan akses ke metadata skema jika tabel log peristiwa dibagikan secara langsung. Contoh sintaks berikut membuat tampilan pada tabel log peristiwa, dan digunakan dalam contoh kueri log peristiwa yang disertakan dalam artikel ini.
CREATE VIEW event_log_raw
AS SELECT * FROM catalog_name.schema_name.event_log_table_name;
Setiap instans eksekusi alur disebut pembaruan . Anda sering ingin mengekstrak informasi untuk pembaruan terbaru. Jalankan kueri berikut untuk menemukan pengidentifikasi untuk pembaruan terbaru dan simpan dalam tampilan sementara latest_update
. Tampilan ini digunakan dalam contoh kueri log peristiwa yang disertakan dalam artikel ini:
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;
Di Katalog Unity, tampilan mendukung kueri streaming. Contoh berikut menggunakan Streaming Terstruktur untuk mengkueri tampilan yang ditentukan di atas tabel log peristiwa:
df = spark.readStream.table("event_log_raw")
Pemilik alur dapat menerbitkan log peristiwa sebagai tabel Delta publik dengan mengaktifkan opsi Publish event log to metastore
di bagian Tingkat Lanjut dari konfigurasi alur. Anda dapat secara opsional menentukan nama tabel, katalog, dan skema baru untuk log peristiwa.
Informasi silsilah kueri dari log peristiwa
Peristiwa yang berisi informasi tentang garis keturunan memiliki jenis peristiwa flow_definition
. Objek details:flow_definition
berisi output_dataset
dan input_datasets
menentukan setiap hubungan dalam grafik.
Anda bisa menggunakan kueri berikut untuk mengekstrak himpunan data input dan output untuk melihat informasi silsilah data:
SELECT
details:flow_definition.output_dataset as output_dataset,
details:flow_definition.input_datasets as input_dataset
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_definition'
AND
origin.update_id = latest_update.id
output_dataset |
input_datasets |
---|---|
customers |
null |
sales_orders_raw |
null |
sales_orders_cleaned |
["customers", "sales_orders_raw"] |
sales_order_in_la |
["sales_orders_cleaned"] |
Periksa kualitas data dari log peristiwa
Jika Anda menentukan ekspektasi pada himpunan data di alur Anda, metrik kualitas data disimpan di objek details:flow_progress.data_quality.expectations
. Peristiwa yang berisi informasi tentang kualitas data memiliki jenis peristiwa flow_progress
. Contoh berikut mengkueri metrik kualitas data untuk pembaruan alur terakhir:
SELECT
row_expectations.dataset as dataset,
row_expectations.name as expectation,
SUM(row_expectations.passed_records) as passing_records,
SUM(row_expectations.failed_records) as failing_records
FROM
(
SELECT
explode(
from_json(
details :flow_progress :data_quality :expectations,
"array<struct<name: string, dataset: string, passed_records: int, failed_records: int>>"
)
) row_expectations
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_progress'
AND origin.update_id = latest_update.id
)
GROUP BY
row_expectations.dataset,
row_expectations.name
dataset |
expectation |
passing_records |
failing_records |
---|---|---|---|
sales_orders_cleaned |
valid_order_number |
4083 | 0 |
Menelusuri peristiwa Auto Loader dari log peristiwa
DLT menghasilkan peristiwa saat Auto Loader memproses file. Untuk peristiwa Auto Loader, event_type
adalah operation_progress
dan details:operation_progress:type
adalah AUTO_LOADER_LISTING
atau AUTO_LOADER_BACKFILL
. Objek details:operation_progress
juga menyertakan bidang status
, duration_ms
, auto_loader_details:source_path
, dan auto_loader_details:num_files_listed
.
Contoh berikut mengkueri peristiwa Auto Loader untuk pembaruan terbaru:
SELECT
timestamp,
details:operation_progress.status,
details:operation_progress.type,
details:operation_progress:auto_loader_details
FROM
event_log_raw,
latest_update
WHERE
event_type like 'operation_progress'
AND
origin.update_id = latest.update_id
AND
details:operation_progress.type in ('AUTO_LOADER_LISTING', 'AUTO_LOADER_BACKFILL')
Memantau backlog data dengan melakukan kueri pada log peristiwa
DLT melacak berapa banyak data yang ada di backlog di objek details:flow_progress.metrics.backlog_bytes
. Peristiwa yang berisi metrik backlog memiliki jenis peristiwa flow_progress
. Contoh berikut mengkueri metrik backlog untuk pembaruan alur terakhir:
SELECT
timestamp,
Double(details :flow_progress.metrics.backlog_bytes) as backlog
FROM
event_log_raw,
latest_update
WHERE
event_type ='flow_progress'
AND
origin.update_id = latest_update.id
Nota
Metrik backlog mungkin tidak tersedia tergantung pada jenis sumber data alur dan versi Databricks Runtime.
Memantau peristiwa penskalaan otomatis yang ditingkatkan dari log peristiwa untuk alur yang tidak memiliki fitur serverless diaktifkan
Untuk alur DLT yang tidak menggunakan komputasi tanpa server, log peristiwa mengambil perubahan ukuran kluster saat penskalaan otomatis yang ditingkatkan diaktifkan di alur Anda. Peristiwa yang berisi informasi tentang penskalakan otomatis yang ditingkatkan memiliki jenis peristiwa autoscale
. Informasi permintaan perubahan ukuran kluster disimpan di objek details:autoscale
. Contoh berikut mengkueri permintaan pengubahan ukuran kluster penskalaan otomatis yang disempurnakan untuk pembaruan alur terakhir:
SELECT
timestamp,
Double(
case
when details :autoscale.status = 'RESIZING' then details :autoscale.requested_num_executors
else null
end
) as starting_num_executors,
Double(
case
when details :autoscale.status = 'SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as succeeded_num_executors,
Double(
case
when details :autoscale.status = 'PARTIALLY_SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as partially_succeeded_num_executors,
Double(
case
when details :autoscale.status = 'FAILED' then details :autoscale.requested_num_executors
else null
end
) as failed_num_executors
FROM
event_log_raw,
latest_update
WHERE
event_type = 'autoscale'
AND
origin.update_id = latest_update.id
Memantau pemanfaatan sumber daya komputasi
Peristiwa cluster_resources
menyediakan metrik tentang jumlah slot tugas dalam kluster, seberapa banyak slot tugas tersebut digunakan, dan berapa banyak tugas yang menunggu untuk dijadwalkan.
Saat penskalaan otomatis yang ditingkatkan diaktifkan, peristiwa cluster_resources
juga berisi metrik untuk algoritma penskalaan otomatis, termasuk latest_requested_num_executors
, dan optimal_num_executors
. Peristiwa juga menunjukkan status algoritma sebagai status yang berbeda seperti CLUSTER_AT_DESIRED_SIZE
, SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORS
, dan BLOCKED_FROM_SCALING_DOWN_BY_CONFIGURATION
.
Informasi ini dapat dilihat bersama dengan peristiwa penskalaan otomatis untuk memberikan gambaran keseluruhan penskalaan otomatis yang ditingkatkan.
Contoh berikut menanyakan sejarah ukuran antrean tugas untuk pembaruan pipeline terakhir:
SELECT
timestamp,
Double(details :cluster_resources.avg_num_queued_tasks) as queue_size
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
Contoh berikut mengkueri riwayat pemanfaatan untuk pembaruan alur terakhir:
SELECT
timestamp,
Double(details :cluster_resources.avg_task_slot_utilization) as utilization
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
Contoh berikut mengkueri riwayat jumlah pelaksana, disertai dengan metrik yang hanya tersedia untuk alur penskalaan otomatis yang ditingkatkan, termasuk jumlah pelaksana yang diminta oleh algoritma dalam permintaan terbaru, jumlah optimal pelaksana yang direkomendasikan oleh algoritma berdasarkan metrik terbaru, dan status algoritma penskalaan otomatis:
SELECT
timestamp,
Double(details :cluster_resources.num_executors) as current_executors,
Double(details :cluster_resources.latest_requested_num_executors) as latest_requested_num_executors,
Double(details :cluster_resources.optimal_num_executors) as optimal_num_executors,
details :cluster_resources.state as autoscaling_state
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
Audit Alur DLT
Anda dapat menggunakan catatan log peristiwa DLT dan log audit Azure Databricks lainnya untuk mendapatkan gambaran lengkap tentang bagaimana data diperbarui di DLT.
DLT menggunakan kredensial pemilik alur untuk menjalankan pembaruan. Anda dapat mengubah kredensial yang digunakan dengan memperbarui pemilik alur. DLT merekam tindakan pengguna pada pipeline, termasuk pembuatan pipeline, pengeditan konfigurasi, dan pemicu pembaruan.
Lihat peristiwa Katalog Unity untuk referensi peristiwa audit Katalog Unity.
Mengkueri tindakan pengguna di log peristiwa
Anda dapat menggunakan log peristiwa untuk mengaudit peristiwa, misalnya, tindakan pengguna. Peristiwa yang berisi informasi tentang tindakan pengguna memiliki jenis peristiwa user_action
.
Informasi tentang tindakan disimpan di objek user_action
di bidang details
. Gunakan kueri berikut untuk membuat log audit peristiwa pengguna. Untuk membuat tampilan event_log_raw
yang digunakan dalam kueri ini, lihat Mengkueri log peristiwa.
SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
timestamp |
action |
user_name |
---|---|---|
2021-05-20T19:36:03.517+0000 | START |
user@company.com |
2021-05-20T19:35:59.913+0000 | CREATE |
user@company.com |
2021-05-27T00:35:51.971+0000 | START |
user@company.com |
Informasi Pemrosesan Sementara
Anda dapat melihat informasi runtime untuk pembaruan alur, misalnya, versi Databricks Runtime untuk pembaruan:
SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
dbr_version |
---|
11.0 |