Dela via


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 en "huvudingång" för en händelseström, och när data har samlats in i en händelsehubb kan du transformera och lagra den med hjälp av valfri leverantör av realtidsanalys eller batch- och lagringslösningar. Händelsehubbar frikopplar produktionen av en händelseström från konsumtionen av dessa händelser, så att händelsekonsumenterna kan komma åt händelserna på sitt eget schema.

Kommentar

För närvarande är den här funktionen inte tillgänglig på arbetsytor.

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

Kommentar

Vi rekommenderar att du använder autentiseringsuppgifter för hanterad identitet när det är möjligt för ökad säkerhet.

Alternativ 1: Konfigurera en hanterad identitet i API Management

  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 objekt-ID.
  2. 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 ett annat Azure-verktyg.

Alternativ 2: Konfigurera en 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äng 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 andra verktyg, till exempel Azure PowerShell, en Bicep-fil eller en Azure Resource Management-mall.

Du kan konfigurera en API Management-loggare till en händelsehubb med hjälp av antingen systemtilldelade eller användartilldelade autentiseringsuppgifter för hanterad identitet.

Skapa en loggare med systemtilldelade autentiseringsuppgifter för hanterad identitet

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

Använd API Management Logger – Skapa eller uppdatera REST API-medlem 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>"
    }
  }
}

Skapa en loggare med användartilldelade autentiseringsuppgifter för hanterad identitet

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

Använd API Management Logger – Skapa eller uppdatera REST API-medlem 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. Skapa en loggare med autentiseringsuppgifter för anslutningssträngar

Förutsättningar finns i Konfigurera en händelsehubbanslutningssträng.

Kommentar

Vi rekommenderar att du konfigurerar loggaren med autentiseringsuppgifter för hanterad identitet när det är möjligt. Se Konfigurera en 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 anslutningssträng.

# Details specific to API Management 
$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 en loggtill-eventhub-policy

När din logger 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. Gå till din API Management-instans.

  2. Under API:er väljer du API:er och 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:et i unlimited-produkten.

  3. På fliken Design väljer du Alla åtgärder.

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

  5. Placera markören i inbound- eller outbound-principavsnittet.

  6. Välj Visa kodfragment överst på fliken. Välj Avancerade principer>Logga till EventHub. Den här åtgärden infogar policydokumentmall 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. Ersätt logger-id med namnet på den loggning 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.
  7. Välj Spara för att spara den uppdaterade principkonfigurationen. Så snart konfigurationen 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 API Management som en lösning för att kringgå gränsen på 200 KB. Mer information finns i Skicka begäranden till Azure Storage från API Management.

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-portalen går du till den händelsehubb som loggaren skickar händelser till.
  2. Under Funktioner väljer du Bearbeta data.
  3. På kortet Aktivera realtidsinformation från händelser väljer du Start.
  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.