Azure API Management'ta olayları Azure Event Hubs'a kaydetme

UYGULANANLAR: Tüm API Management katmanları

Bu makalede, Azure Event Hubs kullanarak API Management olaylarının nasıl günlüğe kaydedildiği açıklanır.

Azure Event Hubs, bağlı cihazlarınız ve uygulamalarınız tarafından üretilen oldukça büyük miktardaki verileri işleyip analiz edebilmeniz için saniye başına milyonlarca olayı işleyebilen ileri düzeyde ölçeklenebilir bir veri alım sistemidir. Event Hubs bir olay işlem hattı için "ön kapı" görevi görür ve veriler bir olay hub'ına toplandıktan sonra herhangi bir gerçek zamanlı analiz sağlayıcısı veya toplu işlem/depolama bağdaştırıcıları kullanılarak dönüştürülebilir ve depolanabilir. Event Hubs olay akışı üretimlerini bu olayların tüketilmesinden ayırır, böylece olay tüketicileri olaylara kendi zamanlamalarında erişebilir.

Önkoşullar

  • Api Management hizmet örneği. Uygulamanız yoksa bkz . API Management hizmet örneği oluşturma.
  • Azure Event Hubs ad alanı ve olay hub'ı. Ayrıntılı adımlar için bkz . Azure portalını kullanarak Event Hubs ad alanı ve olay hub'ı oluşturma.

    Not

    Event Hubs kaynağı farklı bir abonelikte, hatta API Management kaynağından farklı bir kiracıda olabilir

Olay hub'ına erişimi yapılandırma

Olayları olay hub'ına kaydetmek için API Management'tan erişim için kimlik bilgilerini yapılandırmanız gerekir. API Management, aşağıdaki iki erişim mekanizmasından birini destekler:

  • Event Hubs bağlantı dizesi
  • API Management örneğiniz için yönetilen kimlik.

Seçenek 1: Event Hubs bağlantı dizesi yapılandırma

Event Hubs bağlantı dizesi oluşturmak için bkz. Event Hubs bağlantı dizesi alma.

  • Event Hubs ad alanı veya API Management'tan günlüğe kaydetmek için kullandığınız belirli bir olay hub'ı için bir bağlantı dizesi kullanabilirsiniz.
  • bağlantı dizesi için paylaşılan erişim ilkesi en azından Gönderme izinlerini etkinleştirmelidir.

Seçenek 2: API Management yönetilen kimliğini yapılandırma

Not

Olayları bir olay hub'ına günlüğe kaydetmek için API Management yönetilen kimliğinin kullanılması API Management REST API sürümü veya sonraki sürümlerinde 2022-04-01-preview desteklenir.

  1. API Management örneğinizde API Management için sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği etkinleştirin.

    • Kullanıcı tarafından atanan yönetilen kimliği etkinleştirirseniz, kimliğin İstemci Kimliğini not alın.
  2. Kimliği Event Hubs ad alanına veya günlüğe kaydetme için kullanılan olay hub'ına kapsamı belirlenmiş Azure Event Hubs Veri gönderen rolünü atayın. Rolü atamak için Azure portalını veya diğer Azure araçlarını kullanın.

API Management günlükçü oluşturma

Sonraki adım, OLAY Hub'ına olayları günlüğe kaydedebilmesi için API Management hizmetinizde bir günlükçü yapılandırmaktır.

API Management REST API'sini doğrudan kullanarak veya Azure PowerShell, Bicep şablonu veya Azure Kaynak Yönetimi şablonu gibi araçları kullanarak API Management günlükçüleri oluşturun ve yönetin.

bağlantı dizesi kimlik bilgilerine sahip günlükçü

Önkoşullar için bkz. Event Hubs bağlantı dizesi yapılandırma.

Aşağıdaki örnek, bağlantı dizesi yapılandırarak bir olay hub'ına günlükçü oluşturmak için New-AzApiManagementLogger cmdlet'ini kullanır.

# 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"

Sistem tarafından atanan yönetilen kimlik kimlik bilgileriyle günlükçü

Önkoşullar için bkz . API Management yönetilen kimliğini yapılandırma.

Sistem tarafından atanan yönetilen kimlik kimlik bilgileriyle bir olay hub'ına günlükçü yapılandırmak için API Management REST API'sini veya Bicep veya ARM şablonunu kullanın.

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

Kullanıcı tarafından atanan yönetilen kimlik kimlik bilgilerine sahip günlükçü

Önkoşullar için bkz . API Management yönetilen kimliğini yapılandırma.

Kullanıcı tarafından atanan yönetilen kimlik kimlik bilgileriyle bir olay hub'ına günlükçü yapılandırmak için API Management REST API'sini veya Bicep veya ARM şablonunu kullanın.

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

Log-to-eventhub ilkesini yapılandırma

Günlükçünüz API Management'ta yapılandırıldıktan sonra, istenen olayları günlüğe kaydetmek için log-to-eventhub ilkenizi yapılandırabilirsiniz. Örneğin, istekleri günlüğe kaydetmek için gelen ilke bölümündeki ilkeyi veya yanıtları günlüğe kaydetmek için giden ilke bölümündeki ilkeyi kullanın log-to-eventhub .

  1. API Management örneğinize göz atın.

  2. API'ler'i seçin ve ardından ilkeyi eklemek istediğiniz API'yi seçin. Bu örnekte, Sınırsız üründeki Echo API'sinebir ilke ekliyoruz.

  3. Tüm işlemler’i seçin.

  4. Ekranın üst kısmında Tasarım sekmesini seçin.

  5. Gelen işleme veya Giden işleme penceresinde (kod düzenleyicisi) simgesini seçin </> . Daha fazla bilgi için bkz . İlkeleri ayarlama veya düzenleme.

  6. İmlecinizi inbound veya outbound ilke bölümüne getirin.

  7. Sağdaki pencerede Gelişmiş ilkeler>EventHub'da günlüğe kaydet'i seçin. Bu, log-to-eventhub ilke deyimi şablonunu ekler.

    <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. değerini önceki adımda oluşturduğunuz günlükçü adıyla değiştirin logger-id .
    2. öğesinin değeri log-to-eventhub olarak dize döndüren herhangi bir ifadeyi kullanabilirsiniz. Bu örnekte, JSON biçiminde tarih ve saat, hizmet adı, istek kimliği, istek IP adresi ve işlem adını içeren bir dize günlüğe kaydedilir.
  8. Güncelleştirilmiş ilke yapılandırmasını kaydetmek için Kaydet'i seçin. İlke kaydedilir kaydedilmez, ilke etkin olur ve olaylar belirlenen olay hub'ına kaydedilir.

Not

Bu API Management ilkesinden bir olay hub'ına gönderilebilen desteklenen ileti boyutu üst sınırı 200 kilobayttır (KB). Olay hub'ına gönderilen bir ileti 200 KB'tan büyükse, ileti otomatik olarak kesilir ve kesilen ileti olay hub'ına aktarılır. Daha büyük iletiler için, 200 KB sınırını atlamak için geçici bir çözüm olarak Azure API Management ile Azure Depolama kullanmayı göz önünde bulundurun. Daha fazla ayrıntı bu makalede bulunabilir.

Azure Stream Analytics'i kullanarak Event Hubs'da günlüğün önizlemesini görüntüleme

Azure Stream Analytics sorgularını kullanarak Event Hubs'da günlüğün önizlemesini görebilirsiniz.

  1. Azure portalında günlükçü'nin olayları gönderdiği olay hub'ına göz atın.
  2. Özellikler'in altında verileri işle sekmesini seçin.
  3. Olaylardan gerçek zamanlı içgörüleri etkinleştir kartında Başlat'ı seçin.
  4. Giriş önizleme sekmesinde günlüğün önizlemesini görebilmeniz gerekir. Gösterilen veriler geçerli değilse, en son olayları görmek için Yenile'yi seçin.

Sonraki adımlar