Sdílet prostřednictvím


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

PLATÍ PRO: Všechny úrovně služby správy rozhraní API

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

Azure Event Hubs je vysoce škálovatelná služba příchozího přenosu dat, která dokáže ingestovat miliony událostí za sekundu, abyste mohli zpracovávat a analyzovat obrovské objemy dat vytvořených připojenými zařízeními a aplikacemi. Event Hubs funguje jako "front door" pro kanál událostí a jakmile se data shromažďují do centra událostí, můžete je transformovat a uložit pomocí libovolného poskytovatele analýz v reálném čase nebo adaptérů batching/storage. Event Hubs odděluje produkci datového proudu událostí od spotřeby těchto událostí, aby uživatelé událostí měli přístup k událostem podle vlastního plánu.

Poznámka:

V současné době tato funkce není dostupná v pracovních prostorech.

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:

  • Spravovaná identita pro vaši instanci služby API Management (doporučeno)
  • Připojovací řetězec služby Event Hubs

Poznámka:

Pro lepší zabezpečení doporučujeme používat přihlašovací údaje spravované identity, pokud je to možné.

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

  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 aktivujete spravovanou identitu přiřazenou uživatelem, zaznamenejte si ID objektu identity.
  2. Přiřaďte identitu roli odesílatele dat služby Azure Event Hubs v rámci oboru jmenného prostoru Event Hubs nebo ke konkrétnímu centru událostí určenému pro protokolování. K přiřazení role použijte Azure Portal nebo jiný nástroj Azure.

Možnost 2: Konfigurace připojovacího řetězce služby Event Hubs

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

  • Připojovací řetězec můžete použít 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 .

Vytvořte protokolovací nástroj pro správu rozhraní API

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

Protokolovací nástroje API Management můžete vytvářet a spravovat přímo pomocí rozhraní REST API služby API Management nebo pomocí jiných nástrojů, jako je Azure PowerShell, soubor Bicep nebo šablona azure Resource Management.

Protokolovací nástroj API Management můžete nakonfigurovat do centra událostí pomocí přihlašovacích údajů spravované identity přiřazené systémem nebo přiřazené uživatelem.

Vytvořte logger 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.

Použijte protokolovací nástroj API Management – Vytvoření nebo aktualizace člena rozhraní REST API s následujícím textem požadavku.

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

Vytvořte logger 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.

Použijte protokolovací nástroj API Management – Vytvoření nebo aktualizace člena rozhraní REST API s následujícím textem požadavku.

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

Možnost 2. Vytvořte protokolovací nástroj s údaji připojovacího řetězce

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

Poznámka:

Doporučujeme, abyste protokolovací nástroj nakonfigurovali s přihlašovacími údaji spravované identity, pokud je to možné. Viz Konfigurace protokolovacího nástroje s přihlašovacími údaji spravované identity dříve v tomto článku.

Následující příklad používá rutinu New-AzApiManagementLogger k vytvoření loggeru do událostního rozbočovače pomocí konfigurace připojovacího řetězce.

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

Konfigurovat zásady log-to-eventhub

Jakmile je záznamový nástroj nakonfigurován ve službě API Management, můžete nakonfigurovat zásady log-to-eventhub tak, aby zapisovaly 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. V části Rozhraní API vyberte rozhraní API a pak vyberte rozhraní API, do kterého chcete zásadu přidat. V tomto příkladu přidáváme politiku do rozhraní Echo API v produktu Neomezený.

  3. Na kartě Návrh vyberte Všechny operace.

  4. V podokně Zpracování příchozích dat nebo Odchozí zpracování vyberte <tlačítko /> (Editor kódu zásad). Další informace naleznete v tématu Jak nastavit nebo upravit zásady.

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

  6. V horní části karty vyberte Zobrazit úryvky. Vyberte Rozšířené zásady>Zapsat do EventHubu. Tato akce vloží log-to-eventhub šablonu 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.
  7. Výběrem možnosti Uložit uložte aktualizovanou konfiguraci zásad. Jakmile se konfigurace 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, automaticky se zkrátí 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 API Management jako alternativní řešení pro obejití limitu 200 kB. Další informace najdete v tématu Odesílání požadavků do služby Azure Storage ze služby API Management.

Prohlédněte si náhled protokolu ve službě Event Hubs pomocí Azure Stream Analytics

Předběžný 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 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, abyste zobrazili nejnovější události.