Så här loggar du händelser till Azure Event Hubs i Azure API Management
GÄLLER FÖR: Alla API Management-nivåer
Den här artikeln beskriver hur du loggar API Management-händelser med Hjälp av Azure Event Hubs.
Händelsehubbar i Azure är en mycket skalbar tjänst för dataingång som kan mata in miljontals händelser per sekund så att du kan bearbeta och analysera de enorma mängder data som dina anslutna enheter och program producerar. Event Hubs fungerar som "front door" för en händelsepipeline, och när data samlas in i en händelsehubb kan de transformeras och lagras med valfri realtidsanalysprovider eller batch-/lagringskort. Händelsehubbar frikopplar produktionen av en händelseström från användningen av dessa händelser så att händelsekonsumenterna kan komma åt dem på sitt eget schema.
Kommentar
För närvarande är den här funktionen inte tillgänglig på arbetsytor.
Förutsättningar
- En API Management-tjänstinstans. Om du inte har någon läser du Skapa en API Management-tjänstinstans.
- En Azure Event Hubs-namnrymd och händelsehubb. Detaljerade steg finns i Skapa ett Event Hubs-namnområde och en händelsehubb med hjälp av Azure-portalen.
Kommentar
Event Hubs-resursen kan finnas i en annan prenumeration eller till och med en annan klientorganisation än API Management-resursen
Konfigurera åtkomst till händelsehubben
Om du vill logga händelser till händelsehubben måste du konfigurera autentiseringsuppgifter för åtkomst från API Management. API Management stöder någon av följande två åtkomstmekanismer:
- En hanterad identitet för din API Management-instans (rekommenderas)
- En Event Hubs-niska veze
Kommentar
Där det är möjligt rekommenderar Microsoft att du använder autentiseringsuppgifter för hanterad identitet för förbättrad säkerhet.
Alternativ 1: Konfigurera hanterad API Management-identitet
Aktivera en systemtilldelad eller användartilldelad hanterad identitet för API Management i din API Management-instans.
- Om du aktiverar en användartilldelad hanterad identitet noterar du identitetens klient-ID.
Tilldela identiteten azure event hubs datasändarroll , begränsad till Event Hubs-namnområdet eller till den händelsehubb som används för loggning. Om du vill tilldela rollen använder du Azure-portalen eller andra Azure-verktyg.
Alternativ 2: Konfigurera Event Hubs niska veze
Information om hur du skapar en Event Hubs-niska veze finns i Hämta en händelsehubb niska veze.
- Du kan använda en niska veze för Event Hubs-namnområdet eller för den specifika händelsehubb som du använder för loggning från API Management.
- Principen för delad åtkomst för niska veze måste aktivera minst Skicka behörigheter.
Skapa en API Management-loggare
Nästa steg är att konfigurera en loggare i API Management-tjänsten så att den kan logga händelser till händelsehubben.
Skapa och hantera API Management-loggare med hjälp av API Management REST API direkt eller med hjälp av verktyg som Azure PowerShell, en Bicep-mall eller en Azure Resource Management-mall.
Alternativ 1: Loggare med autentiseringsuppgifter för hanterad identitet (rekommenderas)
Du kan konfigurera en API Management-loggare till en händelsehubb med antingen systemtilldelade eller användartilldelade autentiseringsuppgifter för hanterad identitet.
Loggare med systemtilldelade autentiseringsuppgifter för hanterad identitet
Förutsättningar finns i Konfigurera hanterad API Management-identitet.
Använd API Management Logger – Skapa eller uppdatera REST API med följande begärandetext.
{
"properties": {
"loggerType": "azureEventHub",
"description": "Event Hub logger with system-assigned managed identity",
"credentials": {
"endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
"identityClientId":"SystemAssigned",
"name":"<EventHubName>"
}
}
}
Loggare med användartilldelade autentiseringsuppgifter för hanterad identitet
Förutsättningar finns i Konfigurera hanterad API Management-identitet.
Använd API Management Logger – Skapa eller uppdatera REST API med följande begärandetext.
{
"properties": {
"loggerType": "azureEventHub",
"description": "Event Hub logger with user-assigned managed identity",
"credentials": {
"endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
"identityClientId":"<ClientID>",
"name":"<EventHubName>"
}
}
}
Alternativ 2. Loggare med niska veze autentiseringsuppgifter
Förutsättningar finns i Konfigurera Event Hubs-niska veze.
Kommentar
Där det är möjligt rekommenderar Microsoft att du konfigurerar loggaren med autentiseringsuppgifter för hanterad identitet. Se Konfigurera loggare med autentiseringsuppgifter för hanterad identitet tidigare i den här artikeln.
I följande exempel används cmdleten New-AzApiManagementLogger för att skapa en loggare till en händelsehubb genom att konfigurera en niska veze.
# 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"
Konfigurera log-to-eventhub-princip
När din loggare har konfigurerats i API Management kan du konfigurera din log-to-eventhub-princip för att logga önskade händelser. Du kan till exempel använda log-to-eventhub
principen i avsnittet inkommande princip för att logga begäranden eller i avsnittet utgående princip för att logga svar.
Bläddra till din API Management-instans.
Välj API:er och välj sedan det API som du vill lägga till principen i. I det här exemplet lägger vi till en princip i Echo-API:et i unlimited-produkten.
Välj Alla åtgärder.
Välj fliken Design överst på skärmen.
I fönstret Inkommande bearbetning eller Utgående bearbetning väljer du
</>
ikonen (kodredigeraren). Mer information finns i Ange eller redigera principer.Placera markören i
inbound
avsnittet elleroutbound
princip.I fönstret till höger väljer du Logg för avancerade principer>till EventHub. Detta infogar principuttrycksmallen
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>
- Ersätt
logger-id
med namnet på den loggning som du skapade i föregående steg. - Du kan använda valfritt uttryck som returnerar en sträng som värde för elementet
log-to-eventhub
. I det här exemplet loggas en sträng i JSON-format som innehåller datum och tid, tjänstnamn, begärande-ID, begärande-IP-adress och åtgärdsnamn.
- Ersätt
Välj Spara för att spara den uppdaterade principkonfigurationen. Så snart den har sparats är principen aktiv och händelser loggas till den avsedda händelsehubben.
Kommentar
Den maximala meddelandestorlek som stöds som kan skickas till en händelsehubb från den här API Management-principen är 200 kilobyte (KB). Om ett meddelande som skickas till en händelsehubb är större än 200 KB trunkeras det automatiskt och det trunkerade meddelandet överförs till händelsehubben. För större meddelanden bör du överväga att använda Azure Storage med Azure API Management som en lösning för att kringgå gränsen på 200 000 KB. Mer information finns i den här artikeln.
Förhandsgranska loggen i Event Hubs med hjälp av Azure Stream Analytics
Du kan förhandsgranska loggen i Event Hubs med hjälp av Azure Stream Analytics-frågor.
- I Azure-portalen bläddrar du till den händelsehubb som loggaren skickar händelser till.
- Under Funktioner väljer du fliken Bearbeta data .
- På kortet Aktivera realtidsinformation från händelser väljer du Start.
- Du bör kunna förhandsgranska loggen på fliken Förhandsgranskning av indata. Om de data som visas inte är aktuella väljer du Uppdatera för att se de senaste händelserna.
Nästa steg
- Läs mer om Azure Event Hubs
- Läs mer om API Management- och Event Hubs-integrering
- Läs mer om integrering med Azure Application Insights