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:
- API Management örneğiniz için yönetilen kimlik (önerilir)
- Event Hubs bağlantı dizesi
Not
Mümkün olduğunda, Microsoft gelişmiş güvenlik için yönetilen kimlik kimlik bilgilerinin kullanılmasını önerir.
Seçenek 1: API Management yönetilen kimliğini yapılandırma
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.
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.
Seçenek 2: 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.
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.
Seçenek 1: Yönetilen kimlik kimlik bilgilerine sahip günlükçü (önerilir)
Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimlik kimlik bilgilerini kullanarak bir OLAY hub'ına API Management günlükçüsüsü yapılandırabilirsiniz.
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.
API Management Günlükçü - REST API'yi aşağıdaki istek gövdesiyle oluşturun veya güncelleştirin .
{
"properties": {
"loggerType": "azureEventHub",
"description": "Event Hub 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.
API Management Günlükçü - REST API'yi aşağıdaki istek gövdesiyle oluşturun veya güncelleştirin .
{
"properties": {
"loggerType": "azureEventHub",
"description": "Event Hub logger with user-assigned managed identity",
"credentials": {
"endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
"identityClientId":"<ClientID>",
"name":"<EventHubName>"
}
}
}
2. Seçenek bağlantı dizesi kimlik bilgilerine sahip günlükçü
Önkoşullar için bkz. Event Hubs bağlantı dizesi yapılandırma.
Not
Mümkün olduğunda, Microsoft günlükçü'leri yönetilen kimlik kimlik bilgileriyle yapılandırmanızı önerir. Bu makalenin önceki bölümlerinde yer alan Yönetilen kimlik kimlik bilgileriyle günlükçü yapılandırma bölümüne bakın.
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"
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
.
API Management örneğinize göz atın.
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'sine bir ilke ekliyoruz.
Tüm işlemler’i seçin.
Ekranın üst kısmında Tasarım sekmesini seçin.
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.İmlecinizi
inbound
veyaoutbound
ilke bölümüne getirin.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>
- değerini önceki adımda oluşturduğunuz günlükçü adıyla değiştirin
logger-id
. - öğ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.
- değerini önceki adımda oluşturduğunuz günlükçü adıyla değiştirin
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'yı 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.
- Azure portalında günlükçü'nin olayları gönderdiği olay hub'ına göz atın.
- Özellikler'in altında verileri işle sekmesini seçin.
- Olaylardan gerçek zamanlı içgörüleri etkinleştir kartında Başlat'ı seçin.
- 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
- Azure Event Hubs hakkında daha fazla bilgi edinin
- API Management ve Event Hubs tümleştirmesi hakkında daha fazla bilgi edinin
- Günlükçü varlık başvurusu
- log-to-eventhub ilke başvurusu
- Azure Uygulaması lication Insights ile tümleştirme hakkında daha fazla bilgi edinin