Protokollieren von Ereignissen in Azure Event Hubs mit Azure API Management
GILT FÜR: Alle API Management-Ebenen
In diesem Artikel wird beschrieben, wie Sie API Management-Ereignisse mithilfe von Azure Event Hubs protokollieren.
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 fungiert als „Eingangstür“ für eine Ereignispipeline. Nach der Erfassung in Event Hubs können Sie Daten mit einem beliebigen Echtzeit-Analyseanbieter oder mit Batchverarbeitungs-/Speicheradaptern umwandeln 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
Diese Funktion ist derzeit in Arbeitsbereichen nicht verfügbar.
Voraussetzungen
- Eine API Management-Dienstinstanz. Sollten Sie über keine verfügen, lesen Sie Erstellen einer API Management-Dienstinstanz.
- Ein Azure 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
Microsoft empfiehlt nach Möglichkeit die Verwendung von Anmeldeinformationen für eine verwaltete Identität, um die Sicherheit zu erhöhen.
Option 1: Konfigurieren einer verwalteten API Management-Identität
Aktivieren Sie eine system- oder benutzerseitig zugewiesene verwaltete Identität für API Management in Ihrer API Management-Instanz.
- Wenn Sie eine benutzerseitig zugewiesene verwaltete Identität aktivieren, notieren Sie sich die Client-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. Verwenden Sie zum Zuweisen der Rolle das Azure-Portal oder andere Azure-Tools.
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 Management-Protokollierungen, indem Sie die API Management REST-API direkt oder mithilfe von Tools wie Azure PowerShell, einer Bicep-Vorlage oder einer Azure Resource Management-Vorlage verwenden.
Option 1: Protokollierung mit Anmeldeinformationen für eine verwaltete Identität (empfohlen)
Sie können eine API Management-Protokollierung für einen Event Hub mithilfe von Anmeldeinformationen für systemseitig oder benutzerseitig zugewiesene verwaltete Identitäten konfigurieren.
Protokollierung mit systemseitig zugewiesenen Anmeldeinformationen für verwaltete Identitäten
Voraussetzungen finden Sie unter Konfigurieren der verwalteten API Management-Identität.
Verwenden Sie die REST-API Logger – 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>"
}
}
}
Protokollierung mit Anmeldeinformationen für eine benutzerseitig zugewiesene verwaltete Identität
Voraussetzungen finden Sie unter Konfigurieren der verwalteten API Management-Identität.
Verwenden Sie die REST-API Logger – 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. Protokollierung mit Verbindungszeichenfolgen-Anmeldeinformationen
Voraussetzungen finden Sie unter Konfigurieren einer Event Hubs-Verbindungszeichenfolge.
Hinweis
Microsoft empfiehlt nach Möglichkeit, die Protokollierung mit Anmeldeinformationen für eine verwaltete Identität zu konfigurieren. Weitere Informationen finden Sie weiter oben in diesem Artikel unter Konfigurieren der Protokollierung mit Anmeldeinformationen für eine verwaltete Identität.
Im folgenden Beispiel wird das Cmdlet New-AzApiManagementLogger verwendet, um eine Protokollierung zu einem Event Hub zu erstellen, indem eine Verbindungszeichenfolge konfiguriert wird.
# 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"
Konfigurieren der Richtlinie „log-to-eventhub“ (Protokollieren zum Event Hub)
Nachdem Sie die Protokollierung in API Management konfiguriert haben, können Sie Ihre Richtlinie log-to-eventhub (Protokollieren zum Event Hub) für die gewünschten Ereignisse konfigurieren. 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.
Navigieren Sie zu Ihrer API Management-Instanz.
Wählen Sie APIs 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 Alle Vorgänge aus.
Wählen Sie oben auf dem Bildschirm die Registerkarte Entwurf aus.
Wählen Sie im Fenster „Eingehenden Datenverkehr verarbeiten“ oder „Ausgehenden Datenverkehr verarbeiten“ das Symbol
</>
(Codeeditor) aus. Weitere Informationen finden Sie unter Einrichten oder Bearbeiten von Richtlinien.Positionieren Sie den Cursor im Richtlinienabschnitt
inbound
oderoutbound
.Wählen Sie im Fenster rechts die Optionen Erweiterte Richtlinien>Bei EventHub anmelden aus. Damit wird die Richtlinienanweisungsvorlage
log-to-eventhub
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-id
durch 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-eventhub
zurü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. Die Richtlinie ist sofort nach dem Speichern aktiv, und Ereignisse werden zum angegebenen 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). Ist eine an einen Event Hub gesendete Nachricht größer als 200 KB, wird sie automatisch gekürzt, und die gekürzte Nachricht wird an den Event Hub übertragen. Für größere Nachrichten sollten Sie Azure Storage mit Azure API Management als Problemumgehung verwenden, um den Grenzwert von 200 KB zu umgehen. Ausführlichere Informationen finden Sie in diesem Artikel.
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.
- Navigieren Sie im Azure-Portal zu dem Event Hub, an den die Protokollierung Ereignisse sendet.
- Wählen Sie unter Featuresdie Registerkarte Daten verarbeiten 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 neuesten Ereignisse anzuzeigen.
Nächste Schritte
- 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.