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.
functionCode FunctionInvokeSyslogUnavailable Ein Code von OCI Functions zur eindeutigen Bestimmung des Funktionsfehlers. Dieses Feld ist nur für Funktions-Backends vorhanden.
functionMessage Syslog endpoint unavailable Eine von OCI Functions bereitgestellte Meldung zur Beschreibung des Funktionsfehlers. Dieses Feld ist nur für Funktions-Backends vorhanden.
functionStatusCode 502 Der HTTP-Statuscode, der von OCI Functions zurückgegeben wird. Dieses Feld ist nur für Funktions-Backends vorhanden.
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.

Logcodes

Logcode Beschreibung Zugehöriges Feature
httpBackend.timeout Anforderung an das HTTP-Backend wegen Timeout abgebrochen. HTTP-Backend
httpBackend.dnsResolutionFailed Die HTTP-Backend-URL konnte nicht aufgelöst werden.
httpBackend.sslHandshakeFailed SSL-Handshake beim HTTP-Backend nicht erfolgreich.
httpBackend.successfulRequest Anforderung an das HTTP-Backend erfolgreich.
httpBackend.responseReceived Antwort vom HTTP-Backend empfangen.
httpBackend.requestSent Anforderung an das HTTP-Backend gesendet.
functionBackend.successfulRequest Erfolgreicher Aufruf der Funktion in OCI Functions. OCI Functions-Backend
functionBackend.notFoundOrNotAuthorized Die Funktion in OCI Functions konnte aufgrund von 404 nicht vom OCI Functions-Service aufgerufen werden.
functionBackend.rateLimited Rate beim Aufrufen der Funktion in OCI Functions begrenzt.
functionBackend.serviceUnavailable OCI Functions-Service nicht verfügbar.
functionBackend.badGateway Beim Aufrufen der Funktion in OCI Functions "Ungültiges Gateway" empfangen.
functionBackend.timeout Aufruf der Funktion in OCI Functionstimed out.
functionBackend.internalServiceError Interner Servicefehler beim Aufruf der Funktion in OCI Functions.
specification.badVariableReference Die Kontextvariable konnte nicht aufgelöst werden. Falsche Spezifikation zur Laufzeit
specification.invalidAuthenticationPolicy Ungültige Authentifizierungs-Policy.
specification.badTransformationPolicy Ungültige Transformations-Policy.
specification.badHeaderTransformationPolicy Ungültige Headertransformations-Policy.
specification.badQueryParameterTransformationPolicy Ungültige Abfrageparametertransformations-Policy.
request.internalServiceError Interner Servicefehler. Anforderungsverarbeitung
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.headersTruncated Anforderungsheader wurden abgeschnitten.
request.queryParametersTruncated Anforderungsabfrageparameter wurden abgeschnitten.
authorization.unauthorizedRequest Autorisierung für die Anforderung nicht erfolgreich. Anforderungsautorisierung
authorization.scopeCheckFailed Der Geltungsbereich für die Anforderung konnte nicht geprüft werden.
customAuthentication.successfulFunctionInvocation Die Oracle-Funktion wurde erfolgreich aufgerufen. Benutzerdefinierte Authentifizierung
customAuthentication.failedFunctionInvocation Oracle-Funktion konnte nicht aufgerufen werden.
customAuthentication.successfulAuthentication Benutzerdefinierte Authentifizierung erfolgreich.
customAuthentication.authenticationFailed Benutzerdefinierte Authentifizierung nicht erfolgreich.
customAuthentication.unexpectedResponse Unerwartete Antwort von der Oracle-Funktion.
jwtAuthentication.successfulAuthentication JWT-Authentifizierung erfolgreich. JWT-Authentifizierung
jwtAuthentication.authenticationFailed JWT-Authentifizierung nicht erfolgreich.
jwtAuthentication.badJsonWebKeySet JSON Web Key Set ist nicht gültig.
jwtAuthentication.loadingJsonWebKeySet JSON Web Key Set wird geladen.
headerTransformation.badHeaderValue Ungültiger Wert für Anforderungsheader. Headertransformation
headerTransformation.protectedHeaderTransformed Die Policy hat versucht, einen geschützten Header zu transformieren.
headerTransformation.protectedElementTransformed Die Policy hat versucht, ein geschütztes Element zu transformieren.
headerTransformation.missingSetValues Fehlender Wert für die Settransformations-Policy.
queryParameterTransformation.badParameterValue Ungültiger Wert für Anforderungsabfrageparameter. Abfrageparametertransformation
queryParameterTransformation.protectedElementTransformed Die Policy hat versucht, ein geschütztes Element zu transformieren.
queryParameterTransformation.missingSetValues Fehlender Wert für die Settransformations-Policy.
requestValidation.validationError Anforderung hat eine Validierungs-Policy nicht erfüllt. Anforderungsvalidierung
usePlans.requestPermitted Anforderung eines Nutzungsplan-Abonnenten war zulässig. Nutzungspläne
usePlans.requestAbgelehnt Anforderung eines Nutzungsplan-Abonnenten wurde abgelehnt.
usePlans.requestBreachedButAllowed Die Anforderung war zulässig, obwohl die maximale Anzahl von Anforderungen, die von einer Nutzungsplanberechtigung angegeben wurden, überschritten wurde.
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.
dynamicRouting.backendMatched Die Anforderung stimmt mit einer Backend-Regel überein und wurde an das zugehörige Backend weitergeleitet. Dynamisches Backend-Routing
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.
dynamicAuthentication.defaultAuthenticationServerMatched Der ausgewählte Kontextvariablenwert entsprach keiner der Authentifizierungsserverregeln, es wurde jedoch ein Standardauthentifizierungsserver angegeben, der für die Authentifizierung verwendet wurde. Auswahl des dynamischen Authentifizierungsservers
dynamicAuthentication.authenticationServerMatched Der ausgewählte Kontextvariablenwert entspricht einer der Authentifizierungsserverregeln.
dynamicAuthentication.noAuthenticationServerMatched Der ausgewählte Kontextvariablenwert entsprach keiner der Authentifizierungsserverregeln, und es wurde kein Standardauthentifizierungsserver angegeben.
dynamicAuthentication.jwtTokenNotFound Die ausgewählte Kontextvariable war request.auth[claimName], aber es wurde kein JWT-Token mit der Anforderung gesendet.
dynamicAuthentication.jwtTokenInvalid Die ausgewählte Kontextvariable war request.auth[claimName], aber ein ungültiges JWT-Token wurde mit der Anforderung gesendet.
authentication.validationFailurePolicyInvalid Die Validierungsfehler-Policy ist kein definierter Typ. Anforderungsbasierte Authentifizierung

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",
     }