Bagaimana mencatat kejadian ke Azure Event Hubs di Azure API Management

BERLAKU UNTUK: Semua tingkatAN API Management

Artikel ini menjelaskan cara mencatat peristiwa API Management menggunakan Azure Event Hubs.

Azure Event Hubs adalah layanan masuk data yang sangat terukur yang menyerap jutaan peristiwa per detik sehingga Anda dapat memproses dan menganalisis data dalam jumlah sangat besar yang dihasilkan oleh perangkat dan aplikasi Anda yang terhubung. Event Hubs bertindak sebagai "pintu depan" untuk sebuah alur peristiwa, dan setelah data dikumpulkan menjadi hub peristiwa, hub peristiwa dapat ditransformasikan dan disimpan menggunakan penyedia analitik real-time atau adaptor batching/penyimpanan. Pusat Aktivitas memisahkan produksi aliran kejadian dari konsumsi kejadian tersebut, kejadian konsumen kejadian dapat mengakses kejadian dengan jadwal mereka sendiri.

Prasyarat

Mengonfigurasi akses ke pusat aktivitas

Untuk mencatat peristiwa ke pusat aktivitas, Anda perlu mengonfigurasi kredensial untuk akses dari API Management. API Management mendukung salah satu dari dua mekanisme akses berikut:

  • String koneksi Azure Event Hubs
  • Identitas terkelola untuk instans API Management Anda.

Opsi 1: Mengonfigurasi string koneksi Azure Event Hubs

Untuk membuat string koneksi Azure Event Hubs, lihat Mendapatkan string koneksi Azure Event Hubs.

  • Anda dapat menggunakan string koneksi untuk namespace Layanan Pusat Aktivitas atau untuk hub peristiwa tertentu yang Anda gunakan untuk pengelogan dari API Management.
  • Kebijakan akses bersama untuk string koneksi harus mengaktifkan setidaknya Kirim izin.

Opsi 2: Mengonfigurasi identitas terkelola API Management

Catatan

Menggunakan identitas terkelola API Management untuk mencatat peristiwa ke pusat aktivitas didukung dalam versi API Management REST API atau yang 2022-04-01-preview lebih baru.

  1. Aktifkan identitas terkelola yang ditetapkan sistem atau pengguna untuk API Management di instans API Management Anda.

    • Jika Anda mengaktifkan identitas terkelola yang ditetapkan pengguna, catat ID Klien identitas.
  2. Tetapkan identitas peran pengirim Data Azure Event Hubs, yang dilingkupkan ke namespace Layanan Pusat Aktivitas atau ke hub peristiwa yang digunakan untuk pengelogan. Untuk menetapkan peran, gunakan portal Azure atau alat Azure lainnya.

Membuat pencatat API Management

Langkah selanjutnya adalah mengonfigurasi pencatat di layanan API Management Anda sehingga dapat mencatat peristiwa ke hub peristiwa.

Buat dan kelola pencatat API Management dengan menggunakan API Management REST API secara langsung atau dengan menggunakan alat termasuk Azure PowerShell, templat Bicep, atau templat Azure Resource Management.

Pencatat dengan kredensial string koneksi

Untuk prasyarat, lihat Mengonfigurasi string koneksi Azure Event Hubs.

Contoh berikut menggunakan cmdlet New-AzApiManagementLogger untuk membuat pencatat ke pusat aktivitas dengan mengonfigurasi string koneksi.

# API Management service-specific details
$apimServiceName = "apim-hello-world"
$resourceGroupName = "myResourceGroup"

# Create logger
$context = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $apimServiceName
New-AzApiManagementLogger -Context $context -LoggerId "ContosoLogger1" -Name "ApimEventHub" -ConnectionString "Endpoint=sb://<EventHubsNamespace>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<key>" -Description "Event hub logger with connection string"

Pencatat dengan kredensial identitas terkelola yang ditetapkan sistem

Untuk prasyarat, lihat Mengonfigurasi identitas terkelola API Management.

Gunakan API Management REST API atau templat Bicep atau ARM untuk mengonfigurasi pencatat ke pusat aktivitas dengan kredensial identitas terkelola yang ditetapkan sistem.

{
  "properties": {
    "loggerType": "azureEventHub",
    "description": "adding a new logger with system assigned managed identity",
    "credentials": {
         "endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
         "identityClientId":"SystemAssigned",
         "name":"<EventHubName>"
    }
  }
}

Pencatat dengan kredensial identitas terkelola yang ditetapkan pengguna

Untuk prasyarat, lihat Mengonfigurasi identitas terkelola API Management.

Gunakan API Management REST API atau templat Bicep atau ARM untuk mengonfigurasi pencatat ke hub peristiwa dengan kredensial identitas terkelola yang ditetapkan pengguna.

{
  "properties": {
    "loggerType": "azureEventHub",
    "description": "adding a new logger with user-assigned managed identity",
    "credentials": {
         "endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
         "identityClientId":"<ClientID>",
         "name":"<EventHubName>"
    }
  }
}

Mengonfigurasi kebijakan log-to-eventhub

Setelah pencatat Dikonfigurasi di API Management, Anda dapat mengonfigurasi kebijakan log-to-eventhub untuk mencatat peristiwa yang diinginkan. Misalnya, gunakan log-to-eventhub kebijakan di bagian kebijakan masuk untuk mencatat permintaan, atau di bagian kebijakan keluar untuk mencatat respons.

  1. Membuka instans API Management Anda.

  2. Pilih API, lalu pilih API yang ingin Anda tambahkan kebijakannya. Dalam contoh ini, kami menambahkan kebijakan ke API Echo di produk Tidak Terbatas.

  3. Pilih Semua operasi.

  4. Di bagian atas layar, pilih tab Desain .

  5. Di jendela Pemrosesan masuk atau Pemrosesan keluar, pilih </> ikon (editor kode). Untuk informasi selengkapnya, lihat Cara mengatur atau mengedit kebijakan.

  6. Tempatkan kursor Anda di inbound atau bagian kebijakan outbound.

  7. Di jendela sebelah kanan, pilih Kebijakan lanjutan>Mencatat EventHub. Ini menyisipkan templat pernyataan kebijakan log-to-eventhub.

    <log-to-eventhub logger-id="logger-id">
        @{
            return new JObject(
                new JProperty("EventTime", DateTime.UtcNow.ToString()),
                new JProperty("ServiceName", context.Deployment.ServiceName),
                new JProperty("RequestId", context.RequestId),
                new JProperty("RequestIp", context.Request.IpAddress),
                new JProperty("OperationName", context.Operation.Name)
            ).ToString();
        }
    </log-to-eventhub>
    
    1. Ganti logger-id dengan nama pencatat yang Anda buat di langkah sebelumnya.
    2. Anda dapat menggunakan ekspresi mana pun yang mengembalikan string sebagai nilai untuk elemen log-to-eventhub. Dalam contoh ini, string dalam format JSON yang berisi tanggal dan waktu, nama layanan, ID permintaan, alamat IP permintaan, dan nama operasi akan dicatat.
  8. Pilih Simpan untuk menyimpan konfigurasi kebijakan yang diperbarui. Segera setelah disimpan, kebijakan aktif dan peristiwa dicatat ke hub peristiwa yang ditunjuk.

Catatan

Ukuran pesan maksimum yang didukung yang dapat dikirim ke hub kejadian dari kebijakan API Management ini adalah 200 kilobyte (KB). Jika pesan yang dikirim ke pusat aktivitas lebih besar dari 200 KB, pesan akan dipotong secara otomatis, dan pesan terpotong akan ditransfer ke hub peristiwa. Untuk pesan yang lebih besar, pertimbangkan untuk menggunakan Azure Storage dengan Azure API Management sebagai solusi untuk melewati batas 200KB. Detail selengkapnya dapat ditemukan di artikel ini.

Pratinjau log di Azure Event Hubs dengan menggunakan Azure Stream Analytics

Anda dapat melakukan pratinjau log di Azure Event Hubs dengan menggunakan kueri Azure Stream Analytics.

  1. Di portal Microsoft Azure, telusuri ke hub kejadian tempat pencatat mengirim kejadian.
  2. Di Fitur, pilih tab Data proses.
  3. Pada kartu Aktifkan wawasan real time dari peristiwa, pilih Mulai.
  4. Anda akan bisa mempratinjau log pada tab Pratinjau input. Jika data yang ditampilkan buka data terkini, pilih Refresh untuk melihat kejadian terbaru.

Langkah berikutnya