Koneksi data Event Grid
Penyerapan Event Grid adalah alur yang mendengarkan penyimpanan Azure, memperbarui Azure Data Explorer untuk menarik informasi ketika terjadi kejadian berlangganan. Azure Data Explorer menawarkan penyerapan berkelanjutan dari Azure Storage (penyimpanan Blob dan ADLSv2) dengan langganan Azure Event Grid untuk pemberitahuan yang dibuat atau blob diganti namanya dan streaming pemberitahuan ini ke Azure Data Explorer melalui Azure Event Hubs.
Alur penyerapan Event Grid melewati beberapa langkah. Anda membuat tabel target di Azure Data Explorer tempat data dalam format tertentu akan diserap. Kemudian Anda membuat koneksi data Event Grid di Azure Data Explorer. Koneksi data Event Grid perlu mengetahui informasi perutean aktivitas, seperti mengirim data ke tabel tertentu dan pemetaan tabel. Anda juga menentukan properti penyerapan, yang menggambarkan data yang akan diserap, tabel target, dan pemetaan. Anda dapat membuat data sampel dam mengunggah blob atau mengganti nama blob untuk menguji koneksi Anda. Hapus blob setelah penyerapan.
Penyerapan Event Grid dapat dikelola melalui portal Azure, menggunakan wizard penyerapan, secara terprogram dengan C# atau Python, atau dengan templat Azure Resource Manager.
Untuk informasi umum tentang penyerapan data di Azure Data Explorer, lihat Gambaran umum penyerapan data Azure Data Explorer.
Mekanisme autentikasi koneksi data Event Grid
Koneksi data berbasis Identitas Terkelola (disarankan): Menggunakan koneksi data berbasis identitas terkelola adalah cara paling aman untuk menyambungkan ke sumber data. Ini memberikan kontrol penuh atas kemampuan untuk mengambil data dari sumber data. Penyiapan koneksi data Event Grid menggunakan identitas terkelola memerlukan langkah-langkah berikut:
- Tambahkan identitas terkelola ke kluster Anda.
- Berikan izin ke identitas terkelola pada sumber data. Untuk mengambil data dari Azure Storage, identitas terkelola harus memiliki setidaknya izin Storage Blob Data Reader di akun Azure Storage.
- Berikan izin ke identitas terkelola di hub peristiwa. Untuk mengambil pemberitahuan blob dari pusat aktivitas, identitas terkelola harus memiliki izin Penerima Data Azure Event Hubs di Azure Event Hubs.
- Tetapkan kebijakan identitas terkelola pada database target.
- Buat koneksi data menggunakan autentikasi identitas terkelola untuk mengambil data.
Perhatian
- Jika izin identitas terkelola dihapus dari sumber data, koneksi data tidak akan berfungsi lagi dan tidak akan dapat mengambil data dari sumber data.
- Jika autentikasi lokal dinonaktifkan pada namespace Layanan Pusat Aktivitas yang ada tempat pemberitahuan blob dialirkan, Anda harus menggunakan autentikasi identitas terkelola untuk koneksi data dan mengonfigurasi sumber daya dengan benar. Untuk informasi selengkapnya, lihat Masalah Event Grid yang diketahui.
Koneksi data berbasis kunci: Jika autentikasi identitas terkelola tidak ditentukan untuk koneksi data, koneksi secara otomatis default ke autentikasi berbasis kunci. Koneksi berbasis kunci mengambil data menggunakan string koneksi sumber daya, seperti azure Event Hubs string koneksi. Azure Data Explorer mendapatkan string koneksi sumber daya yang ditentukan dan menyimpannya dengan aman. String koneksi kemudian digunakan untuk mengambil data dari sumber data.
Perhatian
Jika kunci diputar, koneksi data tidak akan berfungsi lagi dan tidak akan dapat mengambil data dari sumber data. Untuk memperbaiki masalah, perbarui atau buat ulang koneksi data.
Format data
- Lihat format yang didukung.
- Lihat pemadatan yang didukung.
Ukuran data asli yang tidak dikompresi harus menjadi bagian dari metadata blob, atau Azure Data Explorer lain akan memperkirakannya. Batas ukuran penyerapan yang tidak dikompresi per file adalah 6 GB.
Catatan
Langganan pemberitahuan Event Grid dapat diatur di akun Azure Storage untuk
BlobStorage
,StorageV2
, atau Data Lake Storage Gen2.
Properti penyerapan
Anda dapat menentukan properti penyerapan dari penyerapan blob melalui metadata blob. Anda dapat mengatur properti berikut:
Properti | Deskripsi |
---|---|
rawSizeBytes |
Ukuran data mentah (tidak dikompresi). Untuk Avro/ORC/Parquet, itu adalah ukuran sebelum pemadatan khusus format diterapkan. Berikan ukuran data asli dengan mengatur properti ini ke ukuran data tidak terkompresi dalam byte. |
kustoDatabase |
Nama peka huruf besar/kecil dari database target. Secara default, data diserap ke dalam database target yang terkait dengan koneksi data. Gunakan properti ini untuk mengambil alih database default dan mengirim data ke database lain. Untuk melakukannya, Anda harus terlebih dahulu menyiapkan koneksi sebagai koneksi multi-database. |
kustoTable |
Nama peka huruf besar/kecil dari tabel target yang ada. Mengambil alih Table yang diatur pada panel Data Connection . |
kustoDataFormat |
Format data. Mengambil alih Data format yang diatur pada panel Data Connection . |
kustoIngestionMappingReference |
Nama pemetaan penyerapan yang ada yang akan digunakan. Mengambil alih Column mapping yang diatur pada panel Data Connection . |
kustoIgnoreFirstRecord |
Jika diatur ke true , Kusto mengabaikan baris pertama blob. Gunakan dalam data format bertabel (CSV, TSV, atau sejenisnya) untuk mengabaikan header. |
kustoExtentTags |
String yang mewakili tag yang akan dilampirkan ke tingkat yang dihasilkan. |
kustoCreationTime |
Mengambil alih waktu Pembuatan Ekstensi untuk blob, yang diformat sebagai string ISO 8601. Gunakan untuk backfilling. |
Perutean aktivitas
Saat membuat koneksi data ke kluster, Anda menentukan perutean tempat mengirim data yang diserap. Perutean default adalah ke tabel target yang ditentukan dalam string koneksi yang terkait dengan database target. Perutean default untuk data Anda juga disebut sebagai perutean statis. Anda dapat menentukan perutean alternatif untuk data Anda dengan menggunakan properti data peristiwa.
Merutekan data peristiwa ke database alternatif
Merutekan data ke database alternatif nonaktif secara default. Untuk mengirim data ke database lain, Anda harus terlebih dahulu mengatur koneksi sebagai koneksi multi-database. Anda dapat melakukan ini di templat portal Azure, C#, Python, atau ARM. Pengguna, grup, perwakilan layanan, atau identitas terkelola yang digunakan untuk mengizinkan perutean database setidaknya harus memiliki peran kontributor dan izin tulis pada kluster. Untuk informasi selengkapnya, lihat Membuat koneksi data Event Grid untuk Azure Data Explorer.
Untuk menentukan database alternatif, atur properti Penyerapan database.
Peringatan
Menentukan database alternatif tanpa mengatur koneksi sebagai koneksi data multi-database akan menyebabkan penyerapan gagal.
Merutekan data peristiwa ke tabel alternatif
Saat menyiapkan koneksi penyimpanan blob ke kluster Azure Data Explorer, tentukan properti tabel target:
- nama tabel
- format data
- mapping
Anda juga dapat menentukan properti tabel target untuk setiap blob dengan menggunakan metadata blob. Data tersebut akan merutekan secara dinamis, seperti yang ditentukan oleh properti penyerapan.
Contoh di bawah ini menunjukkan cara mengatur properti penyerapan pada metadata blob sebelum mengunggahnya. Blob dirutekan ke tabel berbeda.
Selain itu, Anda dapat menentukan database target. Koneksi data Event Grid dibuat dalam konteks database tertentu. Oleh karena itu database ini adalah perutean database default koneksi data. Untuk mengirim data ke database yang berbeda, atur properti penyerapan "KustoDatabase" dan atur koneksi data sebagai koneksi data Multi database. Perutean data ke database lain dinonaktifkan secara default (tidak diizinkan). Mengatur properti penyerapan database yang berbeda dari database koneksi data, tanpa mengizinkan perutean data ke beberapa database (mengatur koneksi sebagai koneksi data Multi database), akan menyebabkan penyerapan gagal.
Untuk informasi selengkapnya, lihat Mengunggah blob.
var container = new BlobContainerClient("<storageAccountConnectionString>", "<containerName>");
await container.CreateIfNotExistsAsync();
var blob = container.GetBlobClient("<blobName>");
// Blob is dynamically routed to table `Events`, ingested using `EventsMapping` data mapping
await blob.SetMetadataAsync(
new Dictionary<string, string>
{
{ "rawSizeBytes", "4096" }, // the uncompressed size is 4096 bytes
{ "kustoTable", "Events" },
{ "kustoDataFormat", "json" },
{ "kustoIngestionMappingReference", "EventsMapping" },
{ "kustoDatabase", "AnotherDB" }
}
);
await blob.UploadAsync(BinaryData.FromString(File.ReadAllText("<filePath>")));
Unggah blob
Anda dapat membuat blob dari file lokal, mengatur properti penyerapan ke metadata blob, dan mengunggahnya. Misalnya, lihat Menggunakan koneksi data Event Grid.
Catatan
- Kami sangat menyarankan penggunaan
BlockBlob
untuk menghasilkan data, karena penggunaanAppendBlob
dapat mengakibatkan perilaku yang tidak terduga. - Menggunakan SDK penyimpanan Azure Data Lake Gen2 mengharuskan penggunaan
CreateFile
untuk mengunggah file danFlush
di akhir dengan parameter dekat diatur ketrue
. Untuk contoh terperinci penggunaan Data Lake Gen2 SDK yang benar, lihat Menggunakan koneksi data Event Grid. - Memicu penyerapan setelah
CopyBlob
operasi tidak didukung untuk akun penyimpanan yang mengaktifkan fitur namespace hierarkis pada akun tersebut. - Saat titik akhir pusat aktivitas tidak mengakui penerimaan peristiwa, Azure Event Grid mengaktifkan mekanisme coba lagi. Jika pengiriman percobaan ulang ini gagal, Event Grid dapat mengirimkan kejadian yang tidak terkirim ke akun penyimpanan menggunakan proses dead-lettering. Untuk informasi selengkapnya, lihat Pengiriman pesan Event Grid dan coba lagi.
Mengganti nama blob
Saat menggunakan ADLSv2, Anda dapat mengganti nama blob untuk memicu penyerapan blob ke Azure Data Explorer. Misalnya, lihat Mengganti nama blob.
Catatan
- Penggantian nama direktori dapat dilakukan di ADLSv2, tetapi hal tersebut tidak memicu kejadian penggantian nama blob dan penyerapan blob dalam direktori. Untuk menyerap blob setelah penggantian nama, Anda harus mengganti nama blob yang diinginkan secara langsung.
- Jika Anda menentukan filter untuk melacak subjek tertentu saat membuat koneksi data atau saat membuat sumber daya Event Grid secara manual, filter ini diterapkan pada jalur file tujuan.
Menghapus blob menggunakan siklus hidup penyimpanan
Azure Data Explorer tidak akan menghapus blob setelah penyerapan. Gunakan Siklus hidup penyimpanan Azure Blob untuk mengelola penghapusan blob Anda. Sebaiknya pertahankan blob selama tiga hingga lima hari.
Masalah Event Grid yang diketahui
Jika autentikasi lokal dinonaktifkan di namespace Layanan Pusat Aktivitas yang berisi hub peristiwa yang digunakan untuk pemberitahuan streaming, gunakan langkah-langkah berikut untuk memastikan bahwa data mengalir dengan benar dari penyimpanan ke pusat aktivitas menggunakan identitas terkelola:
- Tetapkan identitas terkelola yang ditetapkan sistem ke topik sistem Event Grid dari akun penyimpanan. Untuk informasi selengkapnya, lihat Mengaktifkan identitas terkelola untuk topik sistem.
- Berikan izin pengirim identitas terkelola dengan menetapkan peran Pengirim Data Azure Event Hubs di hub peristiwa. Untuk informasi selengkapnya, lihat Menambahkan identitas ke peran Azure di tujuan.
- Pastikan langganan Event Grid menggunakan identitas terkelola untuk pengiriman peristiwa. Untuk informasi selengkapnya, lihat Membuat langganan peristiwa yang menggunakan identitas.
Selain itu, konfigurasikan koneksi data Event Grid untuk menggunakan autentikasi identitas terkelola sehingga Azure Data Explorer dapat menerima pemberitahuan dari pusat aktivitas.
Saat menggunakan Azure Data Explorer untuk mengekspor file yang digunakan untuk penyerapan Event Grid, perhatikan:
- Pemberitahuan Event Grid tidak terpicu jika string koneksi yang diberikan ke perintah ekspor atau string koneksi yang diberikan ke tabel eksternal berupa string penghubung dalam format ADLS Gen2 (misalnya,
abfss://filesystem@accountname.dfs.core.windows.net
) tetapi akun penyimpanan tidak diaktifkan untuk namespace layanan hierarkis. - Jika akun tidak diaktifkan untuk namespace layanan hierarkis, string koneksi harus menggunakan format Blob Storage (Misalnya,
https://accountname.blob.core.windows.net
). Proses ekspor berjalan sesuai ekspektasi bahkan ketika menggunakan string koneksi ADLS Gen2, tetapi pemberitahuan tidak akan terpicu dan penyerapan Event Grid tidak akan berfungsi.
- Pemberitahuan Event Grid tidak terpicu jika string koneksi yang diberikan ke perintah ekspor atau string koneksi yang diberikan ke tabel eksternal berupa string penghubung dalam format ADLS Gen2 (misalnya,