Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR: Alle API Management-Ebenen
In diesem Artikel wird das Protokollieren von API-Verwaltungsereignissen mithilfe von Azure Event Hubs beschrieben.
Azure Event Hubs ist ein hochgradig skalierbarer Dateneingangsdienst, der Millionen von Ereignissen pro Sekunde erfassen kann. Auf diese Weise können Sie riesige Datenmengen verarbeiten und analysieren, die von vernetzten Geräten und Anwendungen erzeugt werden. Event Hubs fungieren als "Front door" für eine Ereignispipeline, und nachdem Daten in einem Event Hub gesammelt wurden, können Sie sie mithilfe eines beliebigen Echtzeitanalyseanbieters oder Batch-/Speicheradapters transformieren und speichern. Event Hubs entkoppelt die Erzeugung eines Datenstroms von Ereignissen von der Nutzung dieser Ereignisse, sodass Ereignisconsumer nach einem eigenen Zeitplan auf Ereignisse zugreifen können.
Hinweis
Dieses Feature ist derzeit in Arbeitsbereichen nicht verfügbar.
Voraussetzungen
- Eine API Management-Dienstinstanz. Wenn Sie keine haben, lesen Sie Erstellen einer API Management-Dienstinstanz.
- Ein Event Hubs-Namespace und ein Event Hub. Detaillierte Schritte finden Sie unter Erstellen eines Event Hubs-Namespace und eines Event Hubs mithilfe des Azure-Portals.
Hinweis
Die Event Hubs-Ressource kann sich in einem anderen Abonnement oder sogar einem anderen Mandanten als die API Management-Ressource befinden.
Konfigurieren des Zugriffs auf den Event Hub
Um Ereignisse zum Event Hub zu protokollieren, müssen Sie Anmeldeinformationen für den Zugriff von API Management konfigurieren. API Management unterstützt einen der beiden folgenden Zugriffsmechanismen:
- Eine verwaltete Identität für Ihre API Management-Instanz (empfohlen)
- Eine Event Hubs-Verbindungszeichenfolge
Hinweis
Es wird empfohlen, nach Möglichkeit verwaltete Identitätsanmeldeinformationen für erhöhte Sicherheit zu verwenden.
Option 1: Konfigurieren einer verwalteten API-Verwaltungsidentität
Aktivieren Sie eine system- oder benutzerseitig zugewiesene verwaltete Identität für API Management in Ihrer API Management-Instanz.
- Wenn Sie eine vom Benutzer zugewiesene verwaltete Identität aktivieren, notieren Sie sich die Objekt-ID der Identität.
Weisen Sie der Identität die Rolle Azure Event Hubs-Datensender zu, die auf den Event Hubs-Namespace oder den für die Protokollierung verwendeten Event Hubs festgelegt ist. Um die Rolle zuzuweisen, verwenden Sie das Azure-Portal oder ein anderes Azure-Tool.
Option 2: Konfigurieren einer Event Hubs-Verbindungszeichenfolge
Um eine Event Hubs-Verbindungszeichenfolge zu erstellen, lesen Sie Abrufen einer Event Hubs-Verbindungszeichenfolge.
- Sie können eine Verbindungszeichenfolge für den Event Hubs-Namespace oder für den spezifischen Event Hub verwenden, den Sie für die Protokollierung von API Management verwenden.
- Die SAS-Richtlinie für die Verbindungszeichenfolge muss mindestens Berechtigungen für Senden aktivieren.
Erstellen eines API Management-Loggers
Der nächste Schritt besteht darin, eine Protokollierung in Ihrem API Management-Dienst zu konfigurieren, sodass er Ereignisse zum Event Hub protokollieren kann.
Erstellen und verwalten Sie API-Verwaltungsprotokollierer mithilfe der API-Verwaltungs-REST-API direkt oder mithilfe anderer Tools wie Azure PowerShell, einer Bicep-Datei oder einer Azure-Ressourcenverwaltungsvorlage.
Option 1: Erstellen eines Loggers mit verwalteten Identitätsanmeldeinformationen (empfohlen)
Sie können einen API Management Logger für einen Event Hub konfigurieren, indem Sie entweder vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identitätsanmeldeinformationen verwenden.
Erstellen einer Protokollierung mit Anmeldeinformationen für eine systemseitig zugewiesene verwaltete Identität
Voraussetzungen finden Sie unter Konfigurieren einer verwalteten API-Verwaltungsidentität.
Verwenden Sie das REST-API-Element Protokollierung – Erstellen oder Aktualisieren von API Management mit dem folgenden Anforderungstext.
{
"properties": {
"loggerType": "azureEventHub",
"description": "Event Hub logger with system-assigned managed identity",
"credentials": {
"endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
"identityClientId":"SystemAssigned",
"name":"<EventHubName>"
}
}
}
Erstellen einer Protokollierung mit Anmeldeinformationen für eine benutzerseitig zugewiesene verwaltete Identität
Voraussetzungen finden Sie unter Konfigurieren einer verwalteten API-Verwaltungsidentität.
Verwenden Sie das REST-API-Element Protokollierung – Erstellen oder Aktualisieren von API Management mit dem folgenden Anforderungstext.
{
"properties": {
"loggerType": "azureEventHub",
"description": "Event Hub logger with user-assigned managed identity",
"credentials": {
"endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
"identityClientId":"<ClientID>",
"name":"<EventHubName>"
}
}
}
Option 2. Erstellen einer Protokollierung mit Anmeldeinformationen für die Verbindungszeichenfolge
Voraussetzungen finden Sie unter Konfigurieren einer Event Hubs-Verbindungszeichenfolge.
Hinweis
Es wird empfohlen, den Logger nach Möglichkeit mit verwalteten Identitätsanmeldeinformationen zu konfigurieren. Weitere Informationen finden Sie unter Konfigurieren eines Loggers mit verwalteten Identitätsanmeldeinformationen weiter oben in diesem Artikel.
Im folgenden Beispiel wird das Cmdlet New-AzApiManagementLogger verwendet, um eine Protokollierung zu einem Event Hub zu erstellen, indem eine Verbindungszeichenfolge konfiguriert wird.
# 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"
Konfigurieren einer Protokoll-zu-EventHub-Richtlinie
Nachdem Ihr Logger in der API-Verwaltung konfiguriert wurde, können Sie Ihre Log-to-EventHub-Richtlinie so konfigurieren, dass die gewünschten Ereignisse protokolliert werden. Verwenden Sie beispielsweise die log-to-eventhub-Richtlinie im Abschnitt für eingehenden Datenverkehr der Richtlinie, um Anforderungen zu protokollieren, oder im Abschnitt für ausgehenden Datenverkehr der Richtlinie, um Antworten zu protokollieren.
Wechseln Sie zu Ihrer API-Verwaltungsinstanz.
Wählen Sie unter APIsAPIs aus, und wählen Sie dann die API aus, der Sie die Richtlinie hinzufügen möchten. In diesem Beispiel fügen wir die Richtlinie zur Echo-API im Produkt Unlimited hinzu.
Wählen Sie auf der Registerkarte " Entwurf " die Option "Alle Vorgänge" aus.
Wählen Sie im Bereich "Eingehende Verarbeitung " oder " Ausgehende Verarbeitung " die <Schaltfläche /> (Richtliniencode-Editor) aus. Weitere Informationen finden Sie unter Einrichten oder Bearbeiten von Richtlinien.
Positionieren Sie den Cursor im Richtlinienabschnitt
inboundoderoutbound.Wählen Sie „Codeausschnitte anzeigen“ oben auf der Registerkarte aus. Wählen Sie „Erweiterte Richtlinien“> bei EventHub protokollieren aus. Mit dieser Aktion wird die
log-to-eventhub-Richtlinienausweisungsvorlage eingefügt.<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>- Ersetzen Sie
logger-iddurch den Namen der Protokollierung, die Sie im vorherigen Schritt erstellt haben. - Sie können jeden Ausdruck verwenden, der eine Zeichenfolge als Wert für das Element
log-to-eventhubzurückgibt. In diesem Beispiel wird eine Zeichenfolge im JSON-Format protokolliert, die das Datum, die Uhrzeit, den Dienstnamen, die Anforderungs-ID, die IP-Adresse der Anforderung und den Vorgangsnamen enthält.
- Ersetzen Sie
Wählen Sie Speichern aus, um die aktualisierte Richtlinienkonfiguration zu speichern. Sobald die Konfiguration gespeichert wird, ist die Richtlinie aktiv, und Ereignisse werden beim vorgesehenen Event Hub protokolliert.
Hinweis
Die maximal unterstützte Nachrichtengröße, die von dieser API Management-Richtlinie an einen Event Hub gesendet werden kann, beträgt 200 Kilobyte (KB). Wenn eine Nachricht, die an einen Event Hub gesendet wird, größer als 200 KB ist, wird sie automatisch abgeschnitten, und die abgeschnittene Nachricht wird an den Ereignishub übertragen. Für größere Nachrichten sollten Sie Azure Storage mit API-Verwaltung als Problemumgehung verwenden, um den Grenzwert von 200 KB zu umgehen. Weitere Informationen finden Sie unter Senden von Anforderungen an Azure Storage aus der API-Verwaltung.
Anzeigen einer Vorschau des Protokolls in Event Hubs mithilfe von Azure Stream Analytics
Sie können eine Vorschau des Protokolls in Event Hubs anzeigen, indem Sie Azure Stream Analytics-Abfragen verwenden.
- Wechseln Sie im Azure-Portal zum Event Hub, an den der Logger Ereignisse sendet.
- Wählen Sie unter "Features"die Option "Prozessdaten" aus.
- Wählen Sie auf der Karte Echtzeiterkenntnisse von Ereignissen aktivieren die Option Start aus.
- Sie sollten in der Lage sein, die Vorschau des Protokolls auf der Registerkarte Eingabevorschau anzuzeigen. Wenn die angezeigten Daten nicht aktuell sind, wählen Sie Aktualisieren aus, um die aktuellen Ereignisse anzuzeigen.
Verwandte Inhalte
- Weitere Informationen zu Azure Event Hubs
- Erfahren Sie mehr über die Integration der API-Verwaltung und Event Hubs
- Verweis zu Protokollierungstool
- log-to-eventhub-Richtlinienreferenz
- Erfahren Sie mehr über die Integration in Azure Application Insights.