Bagikan melalui


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:

    1. Tambahkan identitas terkelola ke kluster Anda.
    2. 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.
    3. 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.
    4. Tetapkan kebijakan identitas terkelola pada database target.
    5. 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 penggunaan AppendBlob dapat mengakibatkan perilaku yang tidak terduga.
  • Menggunakan SDK penyimpanan Azure Data Lake Gen2 mengharuskan penggunaan CreateFile untuk mengunggah file dan Flush di akhir dengan parameter dekat diatur ke true. 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:

    1. Tetapkan identitas terkelola yang ditetapkan sistem ke topik sistem Event Grid dari akun penyimpanan. Untuk informasi selengkapnya, lihat Mengaktifkan identitas terkelola untuk topik sistem.
    2. 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.
    3. 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.