Gebeurtenissen registreren bij Azure Event Hubs in Azure API Management

VAN TOEPASSING OP: Alle API Management-lagen

In dit artikel wordt beschreven hoe u API Management-gebeurtenissen kunt registreren met behulp van Azure Event Hubs.

Azure Event Hubs is een zeer schaalbare service voor inkomende gegevens die miljoenen gebeurtenissen per seconde kan opnemen, voor verwerking en analyse van de enorme hoeveelheden gegevens die worden geproduceerd door verbonden apparaten en toepassingen. Event Hubs fungeert als de 'voordeur' voor een gebeurtenispijplijn en zodra gegevens zijn verzameld in een Event Hub, kunnen deze worden getransformeerd en opgeslagen met behulp van een realtime analyseprovider of batchverwerking/opslagadapters. Event Hubs koppelt de productie van een gebeurtenissenstroom los van het gebruik van deze gebeurtenissen, zodat de consumenten ervan toegang hebben tot de gebeurtenissen op basis van hun eigen planning.

Vereisten

Toegang tot de Event Hub configureren

Als u gebeurtenissen wilt registreren bij de Event Hub, moet u referenties configureren voor toegang vanuit API Management. API Management ondersteunt een van de twee volgende toegangsmechanismen:

  • Een Event Hubs-verbindingsreeks
  • Een beheerde identiteit voor uw API Management-exemplaar.

Optie 1: Event Hubs-verbindingsreeks configureren

Zie Een Event Hubs-verbindingsreeks ophalen om een Event Hubs-verbindingsreeks te maken.

  • U kunt een verbindingsreeks gebruiken voor de Event Hubs-naamruimte of voor de specifieke Event Hub die u gebruikt voor logboekregistratie vanuit API Management.
  • Het beleid voor gedeelde toegang voor de verbindingsreeks moet ten minste machtigingen voor verzenden inschakelen.

Optie 2: Beheerde identiteit van API Management configureren

Notitie

Het gebruik van een beheerde API Management-identiteit voor het registreren van gebeurtenissen naar een Event Hub wordt ondersteund in de REST API-versie 2022-04-01-preview van API Management of hoger.

  1. Schakel een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit in voor API Management in uw API Management-exemplaar.

    • Als u een door de gebruiker toegewezen beheerde identiteit inschakelt, noteert u de client-id van de identiteit.
  2. Wijs de identiteit toe aan de azure Event Hubs-gegevenszenderrol , die is gericht op de Event Hubs-naamruimte of aan de Event Hub die wordt gebruikt voor logboekregistratie. Als u de rol wilt toewijzen, gebruikt u Azure Portal of andere Azure-hulpprogramma's.

Een API Management-logboekregistratie maken

De volgende stap is het configureren van een logboekregistratie in uw API Management-service, zodat gebeurtenissen kunnen worden geregistreerd bij de Event Hub.

Api Management-logboekregistraties maken en beheren met behulp van de API Management REST API rechtstreeks of met behulp van hulpprogramma's zoals Azure PowerShell, een Bicep-sjabloon of een Azure Resource Management-sjabloon.

Logboekregistratie met verbindingsreeks referenties

Zie Event Hubs configureren verbindingsreeks voor vereisten.

In het volgende voorbeeld wordt de cmdlet New-AzApiManagementLogger gebruikt om een logger naar een Event Hub te maken door een verbindingsreeks te configureren.

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

Logboekregistratie met door het systeem toegewezen beheerde identiteitreferenties

Zie Beheerde identiteit van API Management configureren voor vereisten.

Gebruik de REST API van API Management of een Bicep- of ARM-sjabloon om een logboekregistratie te configureren voor een Event Hub met door het systeem toegewezen beheerde identiteitreferenties.

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

Logboekregistratie met door de gebruiker toegewezen beheerde identiteitreferenties

Zie Beheerde identiteit van API Management configureren voor vereisten.

Gebruik de API Management REST API of een Bicep- of ARM-sjabloon om een logboekregistratie te configureren voor een Event Hub met door de gebruiker toegewezen beheerde identiteitsreferenties.

{
  "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-beleid configureren

Zodra uw logboekregistratie is geconfigureerd in API Management, kunt u het log-to-eventhub-beleid configureren om de gewenste gebeurtenissen te registreren. Gebruik bijvoorbeeld het log-to-eventhub beleid in de sectie inkomend beleid om aanvragen te registreren of in de sectie Uitgaand beleid om antwoorden te registreren.

  1. Blader naar uw API Management-exemplaar.

  2. Selecteer API's en selecteer vervolgens de API waaraan u het beleid wilt toevoegen. In dit voorbeeld voegen we een beleid toe aan de Echo-API in het onbeperkte product.

  3. Selecteer Alle bewerkingen.

  4. Selecteer boven aan het scherm het tabblad Ontwerpen .

  5. Selecteer in het venster Voor binnenkomende verwerking of uitgaande verwerking het </> pictogram (code-editor). Zie Beleidsregels instellen of bewerken voor meer informatie.

  6. Plaats de cursor in de inbound sectie of outbound het beleid.

  7. Selecteer in het venster aan de rechterkant Geavanceerde beleidsregelslogboek >bij EventHub. Hiermee wordt de sjabloon voor beleidsinstructie log-to-eventhub ingevoegd.

    <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. Vervang door logger-id de naam van de logger die u in de vorige stap hebt gemaakt.
    2. U kunt elke expressie gebruiken die een tekenreeks retourneert als de waarde voor het log-to-eventhub element. In dit voorbeeld wordt een tekenreeks in JSON-indeling met de datum en tijd, servicenaam, aanvraag-id, aanvraag-IP-adres en bewerkingsnaam geregistreerd.
  8. Selecteer Opslaan om de bijgewerkte beleidsconfiguratie op te slaan. Zodra het beleid is opgeslagen, is het beleid actief en worden gebeurtenissen geregistreerd bij de aangewezen Event Hub.

Notitie

De maximale ondersteunde berichtgrootte die vanuit dit API Management-beleid naar een Event Hub kan worden verzonden, is 200 kilobytes (KB). Als een bericht dat naar een Event Hub wordt verzonden groter is dan 200 kB, wordt het automatisch afgekapt en wordt het afgekapte bericht overgebracht naar de Event Hub.

Een voorbeeld van het logboek in Event Hubs bekijken met behulp van Azure Stream Analytics

U kunt een voorbeeld van het logboek in Event Hubs bekijken met behulp van Azure Stream Analytics-query's.

  1. Blader in Azure Portal naar de Event Hub waarnaar de logboekregistratie gebeurtenissen verzendt.
  2. Selecteer onder Functies het tabblad Gegevens verwerken .
  3. Selecteer Start op de kaart Realtime-inzichten inschakelen op de kaart Gebeurtenissen.
  4. U moet een voorbeeld van het logboek kunnen bekijken op het tabblad Voorbeeld van invoer. Als de weergegeven gegevens niet actueel zijn, selecteert u Vernieuwen om de meest recente gebeurtenissen weer te geven.

Volgende stappen