Protokolování událostí do služby Azure Event Hubs ve službě Azure API Management

PLATÍ PRO: Všechny úrovně služby API Management

Tento článek popisuje, jak protokolovat události služby API Management pomocí služby Azure Event Hubs.

Vysoce škálovatelná služba Azure Event Hubs slouží ke zpracování příchozích dat. Dokáže přijímat miliony událostí za sekundu a umožňuje zpracovávat a analyzovat masivní objemy dat vytvářených zařízeními a aplikacemi připojenými k vaší síti. Event Hubs funguje jako "front door" pro kanál událostí a jakmile se data shromažďují do centra událostí, je možné je transformovat a uložit pomocí libovolného poskytovatele analýz v reálném čase nebo adaptérů batching/storage. Event Hubs oddělí vytvoření proudu událostí od spotřeby těchto události, aby spotřebitelé událostí mohli k událostem přistupovat podle svého vlastního plánu.

Požadavky

Konfigurace přístupu k centru událostí

Pokud chcete protokolovat události do centra událostí, musíte nakonfigurovat přihlašovací údaje pro přístup ze služby API Management. API Management podporuje některý z následujících dvou mechanismů přístupu:

  • Připojovací řetězec služby Event Hubs
  • Spravovaná identita pro vaši instanci služby API Management.

Možnost 1: Konfigurace služby Event Hubs připojovací řetězec

Pokud chcete vytvořit připojovací řetězec služby Event Hubs, přečtěte si téma Získání připojovací řetězec služby Event Hubs.

  • Můžete použít připojovací řetězec pro obor názvů služby Event Hubs nebo pro konkrétní centrum událostí, které používáte pro protokolování ze služby API Management.
  • Zásady sdíleného přístupu pro připojovací řetězec musí povolit alespoň oprávnění Odeslat.

Možnost 2: Konfigurace spravované identity služby API Management

Poznámka:

Použití spravované identity služby API Management pro protokolování událostí do centra událostí se podporuje ve verzi 2022-04-01-preview rozhraní REST API služby API Management nebo novější.

  1. Povolte spravovanou identitu přiřazenou systémem nebo přiřazenou uživatelem pro službu API Management ve vaší instanci služby API Management.

    • Pokud povolíte spravovanou identitu přiřazenou uživatelem, poznamenejte si ID klienta identity.
  2. Přiřaďte identitu roli odesílatele dat služby Azure Event Hubs s oborem názvů služby Event Hubs nebo k centru událostí používanému k protokolování. K přiřazení role použijte Azure Portal nebo jiné nástroje Azure.

Vytvoření protokolovacího nástroje API Management

Dalším krokem je konfigurace protokolovacího nástroje ve službě API Management, aby mohl protokolovat události do centra událostí.

Vytváření a správa protokolovacích nástrojů API Management pomocí rozhraní REST API API management přímo nebo pomocí nástrojů, včetně Azure PowerShellu, šablony Bicep nebo šablony služby Azure Resource Management.

Protokolovací nástroj s přihlašovacími údaji připojovací řetězec

Požadavky najdete v tématu Konfigurace služby Event Hubs připojovací řetězec.

Následující příklad používá rutinu New-AzApiManagementLogger k vytvoření protokolovacího nástroje do centra událostí konfigurací připojovací řetězec.

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

Protokolovací nástroj s přihlašovacími údaji spravované identity přiřazené systémem

Požadavky najdete v tématu Konfigurace spravované identity služby API Management.

Pomocí rozhraní API Management REST API nebo šablony Bicep nebo ARM nakonfigurujte protokolovací nástroj do centra událostí pomocí přihlašovacích údajů spravované identity přiřazené systémem.

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

Protokolovací nástroj s přihlašovacími údaji spravované identity přiřazené uživatelem

Požadavky najdete v tématu Konfigurace spravované identity služby API Management.

Pomocí rozhraní REST API api služby API Management nebo šablony Bicep nebo ARM nakonfigurujte protokolovací nástroj do centra událostí s přihlašovacími údaji spravované identity přiřazenými uživatelem.

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

Konfigurace zásad log-to-eventhub

Jakmile je protokolovací nástroj nakonfigurovaný ve službě API Management, můžete nakonfigurovat zásady log-to-eventhub tak, aby protokolovaly požadované události. Pomocí log-to-eventhub zásad v části příchozích zásad můžete například protokolovat požadavky nebo v oddílu odchozích zásad protokolovat odpovědi.

  1. Přejděte do instance služby API Management.

  2. Vyberte rozhraní API a pak vyberte rozhraní API, do kterého chcete zásadu přidat. V tomto příkladu přidáváme zásady do rozhraní Echo API v neomezeném produktu.

  3. Vyberte Všechny operace.

  4. V horní části obrazovky vyberte kartu Návrh .

  5. V okně Zpracování příchozích dat nebo Odchozí zpracování vyberte </> ikonu (editor kódu). Další informace naleznete v tématu Jak nastavit nebo upravit zásady.

  6. Umístěte kurzor do oddílu inbound zásad.outbound

  7. V okně napravo vyberte Protokol rozšířených zásad>do EventHubu. Tím se log-to-eventhub vloží šablona prohlášení o zásadách.

    <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. Nahraďte logger-id názvem protokolovacího nástroje, který jste vytvořili v předchozím kroku.
    2. Můžete použít libovolný výraz, který vrací řetězec jako hodnotu prvku log-to-eventhub . V tomto příkladu se zaprotokoluje řetězec ve formátu JSON obsahující datum a čas, název služby, ID požadavku, IP adresu požadavku a název operace.
  8. Výběrem možnosti Uložit uložte aktualizovanou konfiguraci zásad. Jakmile se uloží, zásada je aktivní a události se zaprotokolují do určeného centra událostí.

Poznámka:

Maximální podporovaná velikost zprávy, kterou je možné odeslat do centra událostí z této zásady služby API Management, je 200 kilobajtů (KB). Pokud je zpráva odeslaná do centra událostí větší než 200 kB, zkrátí se automaticky a zkrácená zpráva se přenese do centra událostí. U větších zpráv zvažte použití služby Azure Storage se službou Azure API Management jako alternativní řešení pro obejití limitu 200 kB. Další podrobnosti najdete v tomto článku.

Zobrazení náhledu protokolu ve službě Event Hubs pomocí Azure Stream Analytics

Náhled protokolu ve službě Event Hubs můžete zobrazit pomocí dotazů Azure Stream Analytics.

  1. Na webu Azure Portal přejděte do centra událostí, do kterého protokolovací nástroj odesílá události.
  2. V části Funkce vyberte kartu Zpracovat data .
  3. Na kartě Povolit přehledy z událostí v reálném čase vyberte Spustit.
  4. Měli byste být schopni zobrazit náhled protokolu na kartě Náhled vstupu . Pokud zobrazená data nejsou aktuální, vyberte Aktualizovat a zobrazte nejnovější události.

Další kroky