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