Membuat monitor menggunakan API
Halaman ini menjelaskan cara membuat monitor di Databricks menggunakan Databricks SDK dan menjelaskan semua parameter yang digunakan dalam panggilan API. Anda juga dapat membuat dan mengelola monitor menggunakan REST API. Untuk informasi referensi, lihat referensi SDK pemantauan Lakehouse dan referensi REST API.
Anda dapat membuat monitor pada tabel Delta terkelola atau eksternal yang terdaftar di Katalog Unity. Hanya satu monitor yang dapat dibuat di metastore Unity Catalog untuk tabel apa pun.
Persyaratan
Lakehouse Monitoring API dibangun menjadi databricks-sdk
0.28.0 ke atas. Untuk menggunakan versi API terbaru, gunakan perintah berikut di awal buku catatan Anda untuk menginstal klien Python:
%pip install "databricks-sdk>=0.28.0"
Untuk mengautentikasi untuk menggunakan Databricks SDK di lingkungan Anda, lihat Autentikasi.
Jenis profil
Saat membuat monitor, Anda memilih salah satu jenis profil berikut: TimeSeries, InferenceLog, atau Snapshot. Bagian ini secara singkat menjelaskan setiap opsi. Untuk detailnya, lihat referensi API atau referensi REST API.
Catatan
- Ketika Anda pertama kali membuat rangkaian waktu atau profil inferensi, monitor hanya menganalisis data dari 30 hari sebelum pembuatannya. Setelah monitor dibuat, semua data baru diproses.
- Monitor yang ditentukan pada tampilan materialisasi dan tabel streaming tidak mendukung pemrosesan inkremental.
Tip
Untuk TimeSeries
profil dan Inference
, ini adalah praktik terbaik untuk mengaktifkan umpan data perubahan (CDF) pada tabel Anda. Ketika CDF diaktifkan, hanya data yang baru ditambahkan yang diproses, daripada memproses ulang seluruh tabel setiap refresh. Ini membuat eksekusi lebih efisien dan mengurangi biaya saat Anda menskalakan pemantauan di banyak tabel.
TimeSeries
profil
TimeSeries
Profil membandingkan distribusi data di seluruh jendela waktu. TimeSeries
Untuk profil, Anda harus memberikan hal berikut:
- Kolom tanda waktu (
timestamp_col
). Jenis data kolom tanda waktu harus berupaTIMESTAMP
atau jenis yang dapat dikonversi ke tanda waktu menggunakanto_timestamp
fungsi PySpark. - Kumpulan
granularities
di mana untuk menghitung metrik. Granularitas yang tersedia adalah "5 menit", "30 menit", "1 jam", "1 hari", "n minggu", "1 bulan", "1 tahun".
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries
w = WorkspaceClient()
w.quality_monitors.create(
table_name=f"{catalog}.{schema}.{table_name}",
assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
output_schema_name=f"{catalog}.{schema}",
time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"])
)
InferenceLog
profil
Profil InferenceLog
mirip TimeSeries
dengan profil tetapi juga menyertakan metrik kualitas model. InferenceLog
Untuk profil, parameter berikut diperlukan:
Parameter | Deskripsi |
---|---|
problem_type |
MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION atau MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION |
prediction_col |
Kolom yang berisi nilai model yang diprediksi. |
timestamp_col |
Kolom yang berisi tanda waktu permintaan inferensi. |
model_id_col |
Kolom yang berisi id model yang digunakan untuk prediksi. |
granularities |
Menentukan cara mempartisi data di jendela sepanjang waktu. Nilai yang mungkin: "5 menit", "30 menit", "1 jam", "1 hari", "n minggu", "1 bulan", "1 tahun". |
Ada juga parameter opsional:
Parameter opsional. | Deskripsi |
---|---|
label_col |
Kolom yang berisi kebenaran dasar untuk prediksi model. |
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorInferenceLog, MonitorInferenceLogProblemType
w = WorkspaceClient()
w.quality_monitors.create(
table_name=f"{catalog}.{schema}.{table_name}",
assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
output_schema_name=f"{catalog}.{schema}",
inference_log=MonitorInferenceLog(
problem_type=MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION,
prediction_col="preds",
timestamp_col="ts",
granularities=["30 minutes", "1 day"],
model_id_col="model_ver",
label_col="label", # optional
)
)
Untuk profil InferenceLog, irisan secara otomatis dibuat berdasarkan nilai yang berbeda dari model_id_col
.
Snapshot
profil
Berbeda dengan , Snapshot
profil memantau bagaimana konten lengkap tabel berubah dari waktu ke TimeSeries
waktu. Metrik dihitung atas semua data dalam tabel, dan memantau status tabel setiap kali monitor di-refresh.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorSnapshot
w = WorkspaceClient()
w.quality_monitors.create(
table_name=f"{catalog}.{schema}.{table_name}",
assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
output_schema_name=f"{catalog}.{schema}",
snapshot=MonitorSnapshot()
)
Merefresh dan melihat hasil pemantauan
Untuk me-refresh tabel metrik, gunakan run_refresh
. Contohnya:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.run_refresh(
table_name=f"{catalog}.{schema}.{table_name}"
)
Saat Anda memanggil run_refresh
dari buku catatan, tabel metrik monitor dibuat atau diperbarui. Perhitungan ini berjalan pada komputasi tanpa server, bukan pada kluster tempat buku catatan dilampirkan. Anda dapat terus menjalankan perintah di buku catatan saat statistik monitor diperbarui.
Untuk informasi tentang statistik yang disimpan dalam tabel metrik, lihat Memantau tabel Metrik tabel metrik adalah tabel Unity Catalog. Anda bisa mengkuerinya di buku catatan atau di penjelajah kueri SQL, dan menampilkannya di Catalog Explorer.
Untuk menampilkan riwayat semua refresh yang terkait dengan monitor, gunakan list_refreshes
.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.list_refreshes(
table_name=f"{catalog}.{schema}.{table_name}"
)
Untuk mendapatkan status eksekusi tertentu yang telah diantrekan, berjalan, atau selesai, gunakan get_refresh
.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
run_info = w.quality_monitors.run_refresh(table_name=f"{catalog}.{schema}.{table_name}")
w.quality_monitors.get_refresh(
table_name=f"{catalog}.{schema}.{table_name}",
refresh_id = run_info.refresh_id
)
Untuk membatalkan refresh yang diantrekan atau berjalan, gunakan cancel_refresh
.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
run_info = w.quality_monitors.run_refresh(table_name=f"{catalog}.{schema}.{table_name}")
w.quality_monitors.cancel_refresh(
table_name=f"{catalog}.{schema}.{table_name}",
refresh_id=run_info.refresh_id
)
Lihat pengaturan monitor
Anda dapat meninjau pengaturan pemantauan menggunakan API get_monitor
.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.get(f"{catalog}.{schema}.{table_name}")
Jadwal
Untuk menyiapkan monitor yang akan dijalankan secara terjadwal, gunakan schedule
parameter :create_monitor
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries, MonitorCronSchedule
w = WorkspaceClient()
w.quality_monitors.create(
table_name=f"{catalog}.{schema}.{table_name}",
assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
output_schema_name=f"{catalog}.{schema}",
time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"]),
schedule=MonitorCronSchedule(
quartz_cron_expression="0 0 12 * * ?", # schedules a refresh every day at 12 noon
timezone_id="PST",
)
)
Lihat ekspresi cron untuk informasi selengkapnya.
Notifications
Untuk menyiapkan pemberitahuan untuk monitor, gunakan notifications
parameter :create_monitor
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries, MonitorNotifications, MonitorDestination
w = WorkspaceClient()
w.quality_monitors.create(
table_name=f"{catalog}.{schema}.{table_name}",
assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
output_schema_name=f"{catalog}.{schema}",
time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"]),
notifications=MonitorNotifications(
# Notify the given email when a monitoring refresh fails or times out.
on_failure=MonitorDestination(
email_addresses=["your_email@domain.com"]
)
)
)
Maksimal 5 alamat email didukung per jenis peristiwa (misalnya, "on_failure").
Mengontrol akses ke tabel metrik
Tabel metrik dan dasbor yang dibuat oleh monitor dimiliki oleh pengguna yang membuat monitor. Anda dapat menggunakan hak istimewa Unity Catalog untuk mengontrol akses ke tabel metrik. Untuk berbagi dasbor dalam ruang kerja, gunakan tombol Bagikan di kanan atas dasbor.
Menghapus monitor
Untuk menghapus monitor:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.delete(table_name=f"{catalog}.{schema}.{table_name}")
Perintah ini tidak menghapus tabel profil dan dasbor yang dibuat oleh monitor. Anda harus menghapus aset tersebut dalam langkah terpisah, atau Anda dapat menyimpannya di lokasi yang berbeda.
Contoh buku catatan
Contoh notebook berikut mengilustrasikan cara membuat monitor, merefresh monitor, dan memeriksa tabel metrik yang dibuatnya.
Contoh buku catatan: Profil rangkaian waktu
Buku catatan ini mengilustrasikan cara membuat TimeSeries
monitor tipe.
Buku catatan contoh TimeSeries Lakehouse Monitor
Contoh buku catatan: Profil inferensi (regresi)
Buku catatan ini menggambarkan cara membuat InferenceLog
pemantau jenis untuk masalah regresi.
Buku catatan contoh regresi Inferensi Lakehouse Monitor
Contoh buku catatan: Profil inferensi (klasifikasi)
Buku catatan ini mengilustrasikan cara membuat InferenceLog
monitor jenis untuk masalah klasifikasi.
Buku catatan contoh klasifikasi Inferensi Lakehouse Monitor
Contoh buku catatan: Profil rekam jepret
Buku catatan ini mengilustrasikan cara membuat Snapshot
monitor tipe.