Freigeben über


Tutorial: Debuggen von APIs mit der Anforderungsablaufverfolgung

GILT FÜR: Alle API Management Ebenen

In diesem Lernprogramm wird beschrieben, wie Sie die Anforderungsverarbeitung in Azure API Management untersuchen oder nachverfolgen können. Das Tracing hilft Ihnen beim Debuggen und bei der Fehlerbehebung Ihrer API.

Hinweis

Diese Funktion ist derzeit in Arbeitsbereichen nicht verfügbar.

In diesem Tutorial lernen Sie Folgendes:

  • Ablaufverfolgung für einen Beispielaufruf in der Testkonsole
  • Überprüfen der Schritte zur Anforderungsverarbeitung
  • Ablaufverfolgung für eine API aktivieren

Screenshot des API-Inspektors.

Voraussetzungen

Wichtig

  • API Management unterstützt keine Abonnements mehr für die Ablaufverfolgung oder den Header Ocp-Apim-Trace.
  • Um die API-Sicherheit zu verbessern, kann die Ablaufverfolgung jetzt auf der Ebene einer einzelnen API aktiviert werden. Rufen Sie ein zeitlich begrenztes Token mithilfe der API Management REST-API ab, und übergeben Sie das Token in einer Anforderung an das Gateway. Ausführliche Informationen finden Sie unter Aktivieren der Ablaufverfolgung einer API.
  • Achten Sie beim Aktivieren der Ablaufverfolgung. Es kann vertrauliche Informationen in den Tracing-Daten enthüllen. Stellen Sie sicher, dass Sie über geeignete Sicherheitsmaßnahmen verfügen, um die Tracking-Daten zu schützen.

Verfolgen eines Anrufs im Azure portal

Führen Sie die folgenden Schritte aus, um eine API-Anforderung in der Testkonsole im Portal nachzuverfolgen. In diesem Beispiel wird davon ausgegangen, dass Sie eine Beispiel-API in einem vorherigen Tutorial importiert haben. Sie können ähnliche Schritte mit einer anderen API ausführen, die Sie importiert haben.

  1. Melden Sie sich bei der Azure portal an, und navigieren Sie zu Ihrer API Management Instanz.

  2. Wählen Sie APIs>APIs aus.

  3. Wählen Sie die Petstore-API aus Ihrer API-Liste aus.

  4. Wählen Sie die Registerkarte Testen aus.

  5. Wählen Sie den Vorgang Haustier nach ID suchen aus.

  6. Geben Sie im AbfrageparameterpetId1 ein.

  7. Überprüfen Sie optional den Wert für den in der Anforderung verwendeten Ocp-Apim-Subscription-Key-Header, indem Sie das Auge-Symbol auswählen.

    Tipp

    Sie können den Wert von Ocp-Apim-Subscription-Key außer Kraft setzen, indem Sie einen Schlüssel für ein anderes Abonnement im Azure portal abrufen. Wählen Sie Abonnements aus, und öffnen Sie das Kontextmenü (...) für ein anderes Abonnement. Wählen Sie Schlüssel anzeigen/ausblenden aus, und kopieren Sie einen der Schlüssel. Sie können Schlüssel bei Bedarf auch erneut generieren. Wählen Sie dann in der Testkonsole + Kopfzeile hinzufügen aus, um einen Ocp-Apim-Subscription-Key-Header mit dem neuen Schlüsselwert hinzuzufügen.

  8. Wählen Sie Trace aus.

Überprüfen der Ablaufverfolgungsinformationen

  1. Navigieren Sie nach Abschluss des Aufrufs in der HTTP-Antwort zur Registerkarte Ablaufverfolgung.

  2. Wählen Sie einen der folgenden Links aus, um ausführliche Informationen zur Ablaufverfolgung anzuzeigen: Eingehend, Back-End, Ausgehend, Bei Fehler.

    Screenshot der Ablaufverfolgung der Überprüfungsantwort.

    • Eingehend. Zeigt die ursprüngliche Anfrage, die von API-Management vom Aufrufer empfangen wurde, und die Richtlinien, die auf die Anfrage angewendet wurden. Wenn Sie beispielsweise Richtlinien im Tutorial: Transformieren und Schützen Ihrer API hinzugefügt haben, werden sie hier angezeigt.
    • Backend. Zeigt die Anfragen des API-Managements an das API-Backend sowie die erhaltene Antwort.
    • Ausgehend. Zeigt die Richtlinien an, die auf die Antwort angewendet wurden, bevor sie zurück an den Anrufer gesendet werden.
    • Bei einem Fehler. Zeigt die Fehler an, die während der Verarbeitung der Anforderung aufgetreten sind, und die Richtlinien, die auf die Fehler angewendet wurden.

    Tipp

    Jeder Schritt zeigt auch die verstrichene Zeit an, seit API Management die Anforderung empfängt.

Ablaufverfolgung für eine API aktivieren

Die folgenden allgemeinen Schritte sind erforderlich, um die Ablaufverfolgung für eine Anforderung zum API Management bei Verwendung von curl, einem REST-Client wie Visual Studio Code mit der REST-Clienterweiterung oder einer Client-App zu aktivieren. Derzeit müssen die folgenden Schritte mit der REST-API API Management befolgt werden:

  1. Abrufen eines Debugtokens für die Ablaufverfolgung.
  2. Fügen Sie den Tokenwert in einem Apim-Debug-Authorization Anforderungsheader zum API Management Gateway hinzu.
  3. Rufen Sie eine Ablaufverfolgungs-ID im Apim-Trace-Id-Antwortheader ab.
  4. Rufen Sie die Ablaufverfolgung ab, die der Ablaufverfolgungs-ID entspricht.

Die Schritte im Detail folgen.

Hinweis

  • Für diese Schritte ist API Management REST-API Version 2023-05-01-preview oder höher erforderlich. Sie müssen der Rolle "Mitwirkender" oder einer höheren Rolle in der API Management Instanz zugewiesen sein, um die REST-API aufzurufen.
  • Informationen zur Authentifizierung bei der REST-API finden Sie unter Azure REST-API-Referenz.
  1. Abrufen eines Debugtokens. Rufen Sie die List-Debuganmeldeinformationen des API Management Gateways-API auf. Geben Sie im URI managed für das verwaltete Gateway der Instanz in der Cloud oder die Gateway-ID für ein selbst gehostetes Gateway ein. Um beispielsweise Ablaufverfolgungsanmeldeinformationen für das verwaltete Gateway der Instanz abzurufen, stellen Sie eine Anforderung ähnlich dem folgenden Beispiel:

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/gateways/managed/listDebugCredentials?api-version=2023-05-01-preview
    

    Übergeben Sie im Anforderungstext die vollständige Ressourcen-ID der API, die Sie nachverfolgen möchten. Geben Sie purposes als tracing an. Standardmäßig laufen die in der Antwort zurückgegebenen Tokenanmeldeinformationen nach 1 Stunde ab. Sie können einen anderen Wert in der Nutzlast angeben. Die Ablaufzeit ist auf maximal 1 Stunde begrenzt. Beispiel:

    {
        "credentialsExpireAfter": "PT1H",
        "apiId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}",
        "purposes": ["tracing"]
    }
    

    Hinweis

    Die apiId kann nur aus der vollständigen Ressourcen-ID abgerufen werden, nicht aus dem Namen, der im Azure portal angezeigt wird.

    API-ID abrufen:

    az apim api list --resource-group <resource-group> --service-name <service-name> -o table
    

    Die Debuganmeldeinformationen werden in der Antwort zurückgegeben, ähnlich wie im folgenden Beispiel:

    {
          "token": "aid=api-name&......."
    }
    
  2. Fügen Sie den Tokenwert in einem Anforderungsheader hinzu. Um die Ablaufverfolgung für eine Anforderung an das API Management Gateway zu aktivieren, senden Sie den Tokenwert in einem header Apim-Debug-Authorization. Um beispielsweise einen Aufruf der Petstore-API nachzuverfolgen, die Sie in einem vorherigen Lernprogramm importiert haben, können Sie eine Anforderung ähnlich dem folgenden Beispiel verwenden:

    curl -v https://apim-hello-world.azure-api.net/pet/1 HTTP/1.1 \
        -H "Ocp-Apim-Subscription-Key: <subscription-key>" \
        -H "Apim-Debug-Authorization: aid=api-name&......."
    
  3. Die Antwort auswerten. Die Antwort kann je nach Status des Debugtokens einen der folgenden Header enthalten:

    Kopfzeile der Antwort Explanation
    Apim-Trace-Id Debugtoken gültig. Der Wert ist die Trace-ID, wie: Apim-Trace-Id: 0123456789abcdef....
    Apim-Debug-Authorization-Expired Das Token ist abgelaufen. Kopfzeile enthält Informationen zum Ablaufdatum.
    Apim-Debug-Authorization-WrongAPI Token, das für eine andere API abgerufen wurde. Kopfzeile enthält eine Fehlermeldung.
  4. Rufen Sie das Protokoll ab. Übergeben Sie die im vorherigen Schritt abgerufene Ablaufverfolgungs-ID an die Listenablaufverfolgungs-API des Gateways. Um beispielsweise die Ablaufverfolgung für das verwaltete Gateway abzurufen, verwenden Sie eine Anforderung ähnlich dem folgenden Beispiel:

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/gateways/managed/listTrace?api-version=2023-05-01-preview
    

    Übergeben Sie im Anforderungstext die im vorherigen Schritt abgerufene Trace-ID.

    {
        "traceId": "0123456789abcdef...."
    }
    

    Der Antworttext enthält die Ablaufverfolgungsdaten für die vorherige API-Anforderung an das Gateway. Die Ablaufverfolgung ähnelt der Ablaufverfolgung, die Sie sehen können, wenn Sie einen Aufruf in der Testkonsole des Portals verfolgen.

Beispiel-HTTP-Datei für vs Code REST-Clienterweiterung

Um diese Schritte mit der Erweiterung Visual Studio Code REST Client zu automatisieren, können Sie das folgende Beispiel .httpDatei verwenden:

@subscriptionId = // Your subscription ID
@resourceGroup = // Your resource group
@apimName = // Your API Management service name
@clientId = // Client ID from an app registration for authentication
@clientSecret = // Client secret from app registration
@externalHost = // The host name of the App Gateway or the fully qualified gateway URL
@subscriptionKey = // API Management subscription key
@apiEndPoint = // API URL
@requestBody = // Data to send
@tenantId = // Tenant ID
@apiId = // Api Id for which trace log is to be generated.

# @name login 
POST https://login.microsoftonline.com/{{tenantId}}/oauth2/token
content-type: application/x-www-form-urlencoded
 
grant_type=client_credentials&client_id={{clientId}}&client_secret={{clientSecret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F
 
###
@authToken = {{login.response.body.$.access_token}}
###
# @name listDebugCredentials
POST https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.ApiManagement/service/{{apimName}}/gateways/managed/listDebugCredentials?api-version=2023-05-01-preview
Authorization: Bearer {{authToken}}

Content-Type: application/json
{
    "credentialsExpireAfter": "PT1H",
    "apiId": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.ApiManagement/service/{{apimName}}/apis/{{apiId}}",
    "purposes": ["tracing"]
}
 
###
@debugToken = {{listDebugCredentials.response.body.$.token}}
 
###
# @name callApi
POST {{apiEndPoint}} HTTP/1.1
Host: {{externalHost}}
Apim-Debug-Authorization: {{debugToken}}
Ocp-Apim-Subscription-Key: {{subscriptionKey}}
Content-Type: application/json

{{requestBody}}
 
###
@traceId = {{callApi.response.headers.Apim-Trace-Id}}
 
###
# @name getTrace
POST https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.ApiManagement/service/{{apimName}}/gateways/managed/listTrace?api-version=2024-06-01-preview
Authorization: Bearer {{authToken}}
Content-Type: application/json
 
{
    "traceId": "{{traceId}}"
}

Informationen zum Anpassen von Ablaufverfolgungsinformationen finden Sie in der Ablaufverfolgungsrichtlinie.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie die folgenden Aufgaben ausgeführt werden:

  • Ablaufverfolgung für einen Beispielaufruf in der Testkonsole
  • Überprüfen der Schritte zur Anforderungsverarbeitung
  • Ablaufverfolgung für eine API aktivieren

Nächster Schritt

Fahren Sie mit dem nächsten Tutorial fort: