Details zu API Gateway

Loggingdetails für API-Gateway-Logs.

Ressourcen

  • API-Deployment

Logkategorien

API-Wert (ID): Konsole (Anzeigename) Beschreibung
Zugriff Zugriffslogs Zugriffslogs für ein API-Deployment.
Ausführung Ausführungslogs Ausführungslogs für ein API-Deployment.

Verfügbarkeit

Zugriffs-/Ausführungslogs für API Gateway sind in allen Regionen der kommerziellen Realms verfügbar.

API-Deployment-Zugriffslog

API-Deployment-Zugriffslogs zeichnen eine Übersicht über jede Anforderung und Antwort auf, die das API-Gateway durchläuft und einer Route im API-Deployment entspricht. Jeder Zugriffslogeintrag enthält Informationen zur Anforderung und Antwort (Zeitpunkt des Eingangs der Anforderung, Serverprotokoll, Antwortstatus usw.). Die vollständige Liste der Felder finden Sie unter Inhalt eines Zugriffslogs.

Inhalt eines Zugriffslogs

Zugriffslogs werden als Wert im Feld Logdaten angezeigt. Bei dem Wert handelt es sich um JSON-formatierte Daten mit den folgenden Feldern:

Feld Beispiel Beschreibung
httpMethod GET Von der Anforderungszeile abgeleitete HTTP-Methode.
requestUri /example/ Von der Anforderungszeile abgeleitete Anforderungs-URI.
serverProtocol HTTP/1.1 Von der Anforderungszeile abgeleitetes HTTP-Protokoll.
bodyBytesSent 45 Gesamtgröße der an den Client gesendeten Antwort (in Byte).
gatewayId ocid1.apigateway.oc1.iad.<unique_ID> OCID des API-Gateways für das API-Deployment, das die Anforderung verarbeitet.
httpUserAgent Apache-HttpClient/4.5.9 (Java/1.8.0_252) HTTP-Benutzer-Agent für die Anforderung.
message GET /example/ HTTP/1.1 Vom Client empfangene Anforderungszeile.
opcRequestId FF7F0B8A32246FC7526AE45A2FA8D5CE/

A408784281BF81B0EE23596CE57CA93C/

C06F7DDDFC7C505FAA0566D8F2FE0BB2

Wert des HTTP-Headers opc-request-id oder einer intern generierten Anforderungs-ID, wenn keine in der Anforderung angegeben wurde.
remoteAddr 138.1.55.172 IP-Adresse des anfordernden Clients.
httpReferrer https://www.example.com Die URL der Empfehlung, falls vorhanden.
requestDuration 0.016 Gesamte aufgewendete Zeit (in Sekunden, mit Millisekundengenauigkeit) ab dem Zeitpunkt, zu dem das Gateway beginnt, die Anforderung vom Client zu empfangen, bis zum Zeitpunkt, zu dem die Übermittlung der Antwort an den Client abgeschlossen ist.
status 404 Statuscode der Antwort vom Gateway.

Beispielzugriffslog

{
    "httpMethod": "GET",
    "requestUri": "/example/",
    "serverProtocol": "HTTP/1.1",
    "bodyBytesSent": 45,
    "gatewayId": "ocid1.apigateway.oc1.iad.<unique_ID>",
    "httpUserAgent": "Apache-HttpClient/4.5.9 (Java/1.8.0_252)",
    "message": "GET /example/ HTTP/1.1",
    "opcRequestId": "FF7F0B8A32246FC7526AE45A2FA8D5CE/A408784281BF81B0EE23596CE57CA93C/C06F7DDDFC7C505FAA0566D8F2FE0BB2",
    "remoteAddr": "138.2.05.172",
    "requestDuration": 0.016,
    "status": 404
  }

API-Deployment-Ausführungslog

API-Deployment-Ausführungslogs zeichnen Informationen zur Verarbeitung innerhalb des API-Gateways für eine einzelne Route auf, um die Fehlerbehebung und das Monitoring zu unterstützen. Jeder Ausführungslogeintrag enthält Informationen (Zeitpunkt des Eingangs der Anforderung, Ebene zur Angabe des Schweregrads der Logmeldung, einen Meldungscode usw.). Die vollständige Liste der Felder finden Sie unter Inhalt eines Ausführungslogs.

Inhalt eines Ausführungslogs

Informationen auf Logebene sind standardmäßig aktiviert. Bei dem Wert handelt es sich um JSON-formatierte Daten mit den folgenden Feldern:

Feld Beispiel Beschreibung
code request.loopDetected Kurzcode für das Loggingereignis, das beim Ausführen der Anforderung aufgetreten ist. Eine vollständige Liste der Meldungscodes finden Sie in der Tabelle Logcodes.
gatewayId ocid1.apigateway.oc1.iad.<unique_ID> API-Gateway-OCID für das API-Deployment, das die Anforderung verarbeitet.
functionId ocid1.fnfunc.oc1.iad.<unique_ID> OCID der vom API-Gateway aufgerufenen Funktion. Dieses Feld ist nur für Funktions-Backends vorhanden.
level WARN Logebene für den Ausführungslogeintrag: INFO, WARN oder ERROR.
message A request loop has been detected - requests for this gateway are being directed back to this gateway. Während der Verarbeitung der Anforderung ausgegebene Ausführungsmeldung.
opcRequestId FF7F0B8A32246FC7526AE45A2FA8D5CE/

A408784281BF81B0EE23596CE57CA93C/

C06F7DDDFC7C505FAA0566D8F2FE0BB2

Wert des HTTP-Headers opc-request-id oder einer intern generierten Anforderungs-ID, wenn keine in der Anforderung angegeben wurde.
configuredLimit 5 Anzahl der Anforderungen, die pro configuredUnit zulässig sind. Entweder das Ratenlimit oder die Quote.
configuredUnit MINUTE Zeitraum, in dem die Anzahl der von configuredLimit angegebenen Anforderungen zulässig ist. Bei Ratenlimits "SECOND". Für Quota "MINUTE", "DAY", "HOUR", "WEEK" oder "MONTH".
entitlementName Entitlement1 Name der Berechtigung, mit der die Anforderung auf das API-Deployment zugreift.
limitingKey <timestamp>/ocid1.apigatewayusageplan.oc1.iad.<unique_ID>/<entitlement-name>/ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> Um die Verwendung für Ratenbegrenzungs- und Quota-Zwecke zu berechnen, werden Anforderungen mit demselben Schlüssel zusammen gezählt.
limitingResourceId ocid1.apigatewayusageplan.oc1.iad.<unique_ID> OCID des Nutzungsplans, der für den Zugriff auf das API-Deployment verwendet wird.
limitingResourceName Gold-Nutzungs-Plan Name des Nutzungsplans, der für den Zugriff auf das API-Deployment verwendet wird.
secretId ocid1.secret.oc1.iad.<unique_ID> OCID eines Vault Secrets, das das API-Gateway abzurufen versucht.
secretVersion 1 Versionsnummer eines Vault Secrets, das das API-Gateway abzurufen versucht.
subscriberId ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> OCID des Subscribers.
subscriberName Premium-Abonnent Anzeigename des Abonnenten.

Logcodes

Logcode Beschreibung
authentication.idpCallFailed Beim Aufrufen des Identitätsproviders OAuth2 ist ein Fehler aufgetreten.
authentication.idpCallSuccess Der Identitätsprovider OAuth2 wurde erfolgreich aufgerufen.
authentication.idpTokenExpiryNonNumeric Der OAuth2-Identitätsprovider hat kein gültiges Ablaufdatum zurückgegeben.
authentication.validationFailurePolicyOAuth Die Validierungsfehler-Policy OAuth2 wurde ausgelöst.
authentication.validationFailurePolicyOAuthStepFailed Beim Ausführen der Schritte der Validierungsfehler-Policy OAuth2 ist ein Fehler aufgetreten.
authorization.unauthorizedRequest Autorisierung für die Anforderung nicht erfolgreich.
customAuthentication.authenticationFailed Benutzerdefinierte Authentifizierung nicht erfolgreich.
customAuthentication.cacheMiss Die benutzerdefinierte Autorisiererantwort wurde im Cache nicht gefunden.
customAuthentication.failedFunctionInvocation Oracle-Funktion konnte nicht aufgerufen werden.
customAuthentication.successfulAuthentication Benutzerdefinierte Authentifizierung erfolgreich.
customAuthentication.successfulFunctionInvocation Die Oracle-Funktion wurde erfolgreich aufgerufen.
customAuthentication.unexpectedResponse Unerwartete Antwort von der Oracle-Funktion.
dynamicAuthentication.authenticationServerMatched Der ausgewählte Kontextvariablenwert entspricht einer der Authentifizierungsserverregeln.
dynamicAuthentication.defaultAuthenticationServerMatched Der ausgewählte Kontextvariablenwert entsprach keiner der Authentifizierungsserverregeln, es wurde jedoch ein Standardauthentifizierungsserver angegeben, der für die Authentifizierung verwendet wurde.
dynamicAuthentication.jwtTokenInvalid Die ausgewählte Kontextvariable war request.auth[claimName], aber ein ungültiges JWT-Token wurde mit der Anforderung gesendet.
dynamicAuthentication.jwtTokenNotFound Die ausgewählte Kontextvariable war request.auth[claimName], aber es wurde kein JWT-Token mit der Anforderung gesendet.
dynamicAuthentication.noAuthenticationServerMatched Der ausgewählte Kontextvariablenwert entsprach keiner der Authentifizierungsserverregeln, und es wurde kein Standardauthentifizierungsserver angegeben.
dynamicRouting.backendMatched Die Anforderung stimmt mit einer Backend-Regel überein und wurde an das zugehörige Backend weitergeleitet.
dynamicRouting.backendRejected Die Anforderung war nicht erfolgreich, weil die Anforderung keiner Backend-Regel entsprach und keine Standardregel definiert wurde.
dynamicRouting.defaultBackendMatched Die Anforderung stimmte nicht mit einer Backend-Regel überein und wurde daher an das mit der Standardregel verknüpfte Backend weitergeleitet.
functionBackend.badGateway "Bad Gateway" beim Aufruf der Funktion in OCI Functions empfangen
functionBackend.badRequestHeaderValue Ungültiger Wert für Anforderungsheader.
functionBackend.badRequestHeaders Fehlerhafter Anforderungsheader.
functionBackend.badResponse Funktion hat fehlerhafte Antwort zurückgegeben. Dies deutet auf eine falsch geformte Antwort von der Funktion hin.
functionBackend.internalServiceError Interner Servicefehler beim Aufrufen der Funktion in OCI Functions
functionBackend.notFoundOrNotAuthorized Die Funktion in OCI Functions konnte aufgrund von 404 nicht vom OCI Functions-Service aufgerufen werden.
functionBackend.rateLimited Begrenzte Rate beim Aufruf der Funktion in OCI Functions
functionBackend.serviceUnavailable OCI Functions-Service nicht verfügbar.
functionBackend.successfulRequest Erfolgreicher Aufruf der Funktion in OCI Functions
functionBackend.timeout Timeout beim Aufruf der Funktion in OCI Functions.
headerTransformation.badHeaderValue Ungültiger Wert für Anforderungsheader.
headerTransformation.missingSetValues Fehlender Wert für die Settransformations-Policy.
headerTransformation.protectedHeaderTransformed Die Policy hat versucht, einen geschützten Header zu transformieren.
httpBackend.formedBackendUrl Die HTTP-Backend-URL wurde dynamisch mit Kontextvariablen gebildet.
httpBackend.requestError Fehler beim Erstellen der Anforderung an das HTTP-Backend.
httpBackend.requestSent Anforderung an das HTTP-Backend gesendet.
httpBackend.responseBodyError Beim Lesen des Antworttexts aus dem HTTP-Backend ist ein Fehler aufgetreten.
httpBackend.responseReceived Antwort vom HTTP-Backend empfangen.
httpBackend.urlInvalid Die HTTP-Backend-URL ist ungültig.
jwtAuthentication.authenticationFailed JWT-Authentifizierung nicht erfolgreich.
jwtAuthentication.badJsonWebKeySet JSON Web Key Set ist nicht gültig.
jwtAuthentication.loadingJsonWebKeySet JSON Web Key Set wird geladen.
jwtAuthentication.successfulAuthentication JWT-Authentifizierung erfolgreich.
logoutBackend.invalidAuthentication Abmeldepfad stimmt nicht überein.
logoutBackend.logoutError Im Backend der OAuth2-Abmeldung ist ein Fehler aufgetreten.
logoutBackend.redirectError Die Umleitungs-URL nach der Abmeldung war nicht zulässig.
mutualTls.clientCertificateInvalid Das Clientzertifikat fehlt oder ist ungültig.
mutualTls.clientCertificateSanInvalid Die im Clientzertifikat enthaltenen SANs konnten nicht validiert werden.
queryParameterTransformation.badParameterValue Ungültiger Wert für Anforderungsabfrageparameter.
rateLimiting.requestDenied Die Anforderung wurde von der Ratenbegrenzungsrichtlinie abgelehnt.
rateLimiting.requestPermitted Die Anforderung wurde von der Ratenbegrenzungs-Policy zugelassen.
request.bodyTooLarge Der Anforderungsbody war zu groß.
request.clientCertConversionFailed Das Clientzertifikat konnte nicht in einen Zeichenfolgenwert konvertiert werden.
request.clientEof Eine Anforderung konnte aufgrund eines Clientfehlers nicht gelesen werden.
request.clientTimeout Eine Anforderung konnte aufgrund eines Clienttimeouts nicht gelesen werden.
request.internalServiceError Interner Servicefehler.
request.loopDetected Es wurde eine Anforderungsschleifenbedingung erkannt, bei der Anforderungen für das Gateway an dieses selbst umgeleitet werden, wodurch ein Zyklus entsteht.
request.possibleLoopDetected Es wurde eine mögliche Anforderungsschleifenbedingung erkannt, bei der Anforderungen für das Gateway an dieses selbst umgeleitet werden, wodurch ein Zyklus entsteht.
request.serviceUnavailable Das Gateway kann die Anforderung derzeit nicht bearbeiten.
requestValidation.validationError Anforderung hat eine Validierungs-Policy nicht erfüllt.
requestValidation.validationPermitted Anforderung hat eine Validierungs-Policy bestanden.
responseCache.backendResponseStorageAborted Backend-Antwort wurde nicht im Cache gespeichert.
responseCache.backendResponseStoredInCache Backend-Antwort wurde im Cache gespeichert.
responseCache.lookupAborted Der Antwortcache wurde nicht verwendet.
responseCache.lookupResultNotFound Im Cache wurde keine Antwort gefunden.
responseCache.lookupResultSuccess Eine Antwort wurde aus dem Cache gelesen.
secretsClient.fetchFailure Client Secret konnte nicht aus Secret Service abgerufen werden.
secretsClient.fetchSuccess Client Secret wurde erfolgreich aus Secret Service abgerufen.
secretsClient.unexpectedResponse Unerwartete Antwort vom Secret-Service beim Abrufen des Client Secret.
tokenAuthentication.authenticationFailed Tokenauthentifizierung nicht erfolgreich.
tokenAuthentication.badDiscoveryEndpointResponse Die Antwort des Remote-Discovery-Endpunkts ist nicht gültig.
tokenAuthentication.badIntrospectionResponse Die Token-Introspektionsantwort ist nicht gültig.
tokenAuthentication.badJsonWebKeySet JSON Web Key Set ist nicht gültig.
tokenAuthentication.loadingDiscoveryEndpointResponse Remote Discovery-Dokument wird geladen.
tokenAuthentication.loadingJsonWebKeySet JSON Web Key Set wird geladen.
tokenAuthentication.successfulAuthentication Tokenauthentifizierung erfolgreich.
usePlans.eligibilityNotEntitled Das API-Deployment ist nicht das Ziel einer Berechtigung in einem Nutzungsplan, obwohl die API-Deployment-Spezifikation eine Nutzungsplananforderungs-Policy enthält, die ein Clienttoken angibt.
usePlans.requestBreachedButAllowed Die Anforderung war zulässig, obwohl die maximale Anzahl von Anforderungen, die von einer Nutzungsplanberechtigung angegeben wurden, überschritten wurde.
usePlans.requestPermitted Anforderung eines Nutzungsplan-Abonnenten war zulässig.
usePlans.requestAbgelehnt Anforderung eines Nutzungsplan-Abonnenten wurde abgelehnt.

Beispielausführungslogs

  • Typ: Anforderung
  • Szenario: Anforderungsschleife erkannt
  • Beschreibung: Es wurde eine Anforderungsschleifenbedingung erkannt, bei der Anforderungen für das Gateway an dieses selbst umgeleitet werden, wodurch ein Zyklus entsteht.
  • Beispiel:
    {
        "code": "request.loopDetected",
        "gatewayId": "ocid1.apigateway.oc1.iad.<unique_ID>",
        "level": "WARN",
        "message": "A request loop has been detected - requests for this gateway are being directed back to this gateway.",
        "opcRequestId": "FF7F0B8A32246FC7526AE45A2FA8D5CE/A408784281BF81B0EE23596CE57CA93C/C06F7DDDFC7C505FAA0566D8F2FE0BB2",
     }