Så här loggar du händelser till Azure Event Hubs i Azure API Management

I den här artikeln beskrivs 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 "ytterdörren" för en händelsepipeline, och när data har samlats in i en händelsehubb kan de omvandlas och lagras med valfri leverantör av realtidsanalys eller batchbearbetning/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.

Förutsättningar

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 Event Hubs-anslutningssträng
  • En hanterad identitet för din API Management-instans.

Alternativ 1: Konfigurera Event Hubs-anslutningssträng

Information om hur du skapar en Event Hubs-anslutningssträng finns i Hämta en Event Hubs-anslutningssträng.

  • Du kan använda en anslutningssträng 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 anslutningssträngen måste aktivera minst Skicka behörigheter.

Alternativ 2: Konfigurera API Management hanterad identitet

Anteckning

Användning av en API Management hanterad identitet för loggning av händelser till en händelsehubb stöds i API Management REST API-version 2022-04-01-preview eller senare.

  1. 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.
  2. Tilldela identiteten rollen Azure Event Hubs dataavsändare, 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 Portal eller andra Azure-verktyg.

Skapa en API Management-loggare

Nästa steg är att konfigurera en loggare i din API Management-tjänst 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.

Loggare med autentiseringsuppgifter för anslutningssträng

Förutsättningar finns i Konfigurera Event Hubs-anslutningssträng.

I följande exempel används cmdleten New-AzApiManagementLogger för att skapa en loggare till en händelsehubb genom att konfigurera en anslutningssträng.

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

Loggare med systemtilldelade autentiseringsuppgifter för hanterad identitet

Förutsättningar finns i Konfigurera API Management hanterad identitet.

Använd API Management REST API eller en Bicep- eller ARM-mall för att konfigurera en loggare till en händelsehubb med systemtilldelade autentiseringsuppgifter för hanterad identitet.

{
  "properties": {
    "loggerType": "azureEventHub",
    "description": "adding a new 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 API Management hanterad identitet.

Använd API Management REST API eller en Bicep- eller ARM-mall för att konfigurera en loggare till en händelsehubb med användartilldelade autentiseringsuppgifter för hanterad identitet.

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

Konfigurera log-to-eventhub-princip

När loggaren har konfigurerats i API Management kan du konfigurera logg-till-eventhub-principen 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.

  1. Bläddra till din API Management-instans.

  2. Välj API:er och välj sedan det API som du vill lägga till principen till. I det här exemplet lägger vi till en princip i Echo API i produkten Unlimited .

  3. Välj Alla åtgärder.

  4. Välj fliken Design överst på skärmen.

  5. I fönstret Inkommande bearbetning eller Utgående bearbetning väljer du </> ikonen (kodredigeraren). Mer information finns i Ange eller redigera principer.

  6. Placera markören i principavsnittet inbound eller outbound .

  7. I fönstret till höger väljer du Avancerade principer>Logga till EventHub. Detta infogar mallen för log-to-eventhub principinstruktor.

    <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. Ersätt logger-id med namnet på loggaren som du skapade i föregående steg.
    2. 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.
  8. 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.

Anteckning

Den maximala meddelandestorlek som stöds och som kan skickas till en händelsehubb från den här API Management principen är 200 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ö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.

  1. I Azure Portal bläddrar du till den händelsehubb som loggaren skickar händelser till.
  2. Under Funktioner väljer du fliken Bearbeta data .
  3. På kortet Aktivera insikter i realtid från händelser väljer du Starta.
  4. 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