Dettagli per API Gateway

Dettagli di log per i log del gateway API.

Risorse

  • Distribuzione API

Categorie di log

Valore API (ID): Console (nome visualizzato) descrizione;
Accedi Log degli accessi Log degli accessi per una distribuzione API.
Esecuzione Log di esecuzione Log di esecuzione per una distribuzione API.

Disponibilità

Il log di accesso/esecuzione del gateway API è disponibile in tutte le aree dei regimi commerciali.

Log di accesso distribuzione API

I log degli accessi alla distribuzione API registrano un riepilogo di ogni richiesta e risposta che passa attraverso il gateway API, abbinando un instradamento alla distribuzione API. Ogni voce del log degli accessi contiene informazioni sulla richiesta e sulla risposta (ora di ricezione della richiesta, protocollo del server, stato della risposta e così via). Per l'elenco completo dei campi, vedere Contenuti di un log degli accessi.

Contenuto di un log degli accessi

I log degli accessi vengono visualizzati come valore nel campo Dati di log. Questo valore è costituito da dati in formato JSON con i seguenti campi:

Campo Esempio descrizione;
httpMethod GET Metodo HTTP derivato dalla riga richiesta.
requestUri /esempio/ URI richiesta derivato dalla riga richiesta.
serverProtocol HTTP/1.1 Protocollo HTTP derivato dalla riga della richiesta.
bodyBytesSent 45 Dimensione totale della risposta (in byte) inviata al client.
gatewayId ocid1.apigateway.oc1.iad.<unique_ID> OCID del gateway API per la distribuzione API che soddisfa la richiesta.
httpUserAgent Apache-HttpClient/4.5.9 (Java/1.8.0_252) User Agent HTTP per la richiesta.
messaggio OTTIENI /esempio/ HTTP/1.1 Riga di richiesta ricevuta dal client.
opcRequestId FF7F0B8A32246FC7526AE45A2FA8D5CE/

A408784281BF81B0EE23596CE57CA93C/

C06F7DDDFC7C505FAA0566D8F2FE0BB2

Valore dell'intestazione HTTP opc-request-id o di un ID richiesta generato internamente se non è stato specificato alcun valore nella richiesta.
remoteAddr 138.1.55.172 Indirizzo IP del client richiedente.
httpReferrer https://www.example.com URL della segnalazione, se presente.
requestDuration 0.016 Tempo totale impiegato (in secondi, con precisione in millisecondi) da quando il gateway inizia a ricevere la richiesta dal client fino al completamento dell'invio di una risposta al client.
stato 404 Codice di stato della risposta dal gateway.

Log degli accessi di esempio

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

Log esecuzione distribuzione API

I log di esecuzione della distribuzione API registrano le informazioni sull'elaborazione all'interno del gateway API per un singolo instradamento, in modo da facilitare la risoluzione dei problemi e il monitoraggio. Ogni voce del log di esecuzione contiene informazioni (ora di ricezione della richiesta, livello per indicare la severità del messaggio di log, un codice di messaggio e così via). Per l'elenco completo dei campi, vedere Contenuti di un log di esecuzione.

Contenuto di un log di esecuzione

Per impostazione predefinita, le informazioni sul livello di log sono abilitate. Questo valore è costituito da dati in formato JSON con i seguenti campi:

Campo Esempio descrizione;
Codice request.loopDetected Codice breve per l'evento di log rilevato durante l'esecuzione della richiesta. Per l'elenco completo dei codici messaggio, vedere la tabella "Codici log" Codici log.
gatewayId ocid1.apigateway.oc1.iad.<unique_ID> OCID gateway API per la distribuzione API che soddisfa la richiesta.
functionId ocid1.fnfunc.oc1.iad.<unique_ID> OCID della funzione richiamata dal gateway API. Questo campo è presente solo per i backend delle funzioni.
livello WARN Livello di log per la voce del log di esecuzione, se INFO, WARN o ERROR.
messaggio È stato rilevato un loop di richiesta: le richieste per questo gateway vengono reindirizzate a questo gateway. Messaggio di esecuzione emesso durante l'elaborazione della richiesta.
opcRequestId FF7F0B8A32246FC7526AE45A2FA8D5CE/

A408784281BF81B0EE23596CE57CA93C/

C06F7DDDFC7C505FAA0566D8F2FE0BB2

Valore dell'intestazione HTTP opc-request-id o di un ID richiesta generato internamente se non è stato specificato alcun valore nella richiesta.
configuredLimit 5 Numero di richieste da consentire per configuredUnit. Il limite di tasso o la quota.
configuredUnit MINUTO Periodo di tempo in cui consentire il numero di richieste specificato da configuredLimit. Per i limiti di frequenza, "SECOND". Per la quota, "MINUTE", "DAY", "HOUR", "WEEK" o "MONTH".
entitlementName Entitlement1 Nome dell'abilitazione utilizzata dalla richiesta per accedere alla distribuzione API.
limitingKey <timestamp>/ocid1.apigatewayusageplan.oc1.iad.<unique_ID>/<entitlement-name>/ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> Per calcolare l'uso ai fini del limite di frequenza e della quota, le richieste con la stessa chiave vengono conteggiate insieme.
limitingResourceId ocid1.apigatewayusageplan.oc1.iad.<unique_ID> OCID del piano di utilizzo utilizzato per accedere alla distribuzione API.
limitingResourceName Piano utilizzo oro Nome del piano di utilizzo utilizzato per accedere alla distribuzione API.
secretId ocid1.secret.oc1.iad.<unique_ID> OCID di un segreto vault che il gateway API sta tentando di recuperare.
secretVersion 1 Numero di versione di un segreto vault che il gateway API sta tentando di recuperare.
subscriberId ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> OCID del sottoscrittore.
subscriberName Sottoscrittore premio Nome visualizzato del sottoscrittore.

Codici log

Codice log descrizione;
authentication.idpCallFailed Si è verificato un errore durante la chiamata al provider di identità OAuth2.
authentication.idpCallSuccess Chiamata del provider di identità OAuth2 riuscita.
authentication.idpTokenExpiryNonNumeric Il provider di identità OAuth2 non ha restituito una scadenza valida.
authentication.validationFailurePolicyOAuth Il criterio di errore della convalida OAuth2 è stato attivato.
authentication.validationFailurePolicyOAuthStepFailed Si è verificato un errore durante l'esecuzione dei passi del criterio di errore della convalida OAuth2.
authorization.unauthorizedRequest Autorizzazione non riuscita per la richiesta.
customAuthentication.authenticationFailed Autenticazione custom non riuscita.
customAuthentication.cacheMiss Risposta del responsabile autorizzazioni personalizzato non trovata nella cache.
customAuthentication.failedFunctionInvocation Richiamo della funzione Oracle non riuscito.
customAuthentication.successfulAuthentication Autenticazione personalizzata riuscita.
customAuthentication.successfulFunctionInvocation Richiamo della funzione Oracle riuscito.
customAuthentication.unexpectedResponse Risposta imprevista dalla funzione Oracle.
dynamicAuthentication.authenticationServerMatched Il valore della variabile di contesto selezionata corrisponde a una delle regole del server di autenticazione.
dynamicAuthentication.defaultAuthenticationServerMatched Il valore della variabile di contesto selezionata non corrisponde ad alcuna regola del server di autenticazione, ma è stato specificato un server di autenticazione predefinito utilizzato per l'autenticazione.
dynamicAuthentication.jwtTokenInvalid La variabile di contesto selezionata era request.auth[claimName] ma con la richiesta è stato inviato un token JWT non valido.
dynamicAuthentication.jwtTokenNotFound La variabile di contesto selezionata era request.auth[claimName] ma non è stato inviato alcun token JWT con la richiesta.
dynamicAuthentication.noAuthenticationServerMatched Il valore della variabile di contesto selezionata non corrisponde ad alcuna regola del server di autenticazione e non è stato specificato alcun server di autenticazione predefinito.
dynamicRouting.backendMatched La richiesta corrisponde a una regola backend ed è stata instradata al backend associato.
dynamicRouting.backendRejected Richiesta non riuscita perché la richiesta non corrisponde a una regola backend e non è stata definita alcuna regola predefinita.
dynamicRouting.defaultBackendMatched La richiesta non corrisponde a una regola backend, pertanto è stata instradata al backend associato alla regola predefinita.
functionBackend.badGateway Ricevuto "Bad Gateway" durante il richiamo della funzione nelle funzioni OCI
functionBackend.badRequestHeaderValue Valore non valido per l'intestazione della richiesta.
functionBackend.badRequestHeaders Intestazione della richiesta non valida.
functionBackend.badResponse La funzione ha restituito una risposta errata. Ciò indica una risposta formata errata dalla funzione.
functionBackend.internalServiceError Errore interno del servizio durante il richiamo della funzione nelle funzioni OCI
functionBackend.notFoundOrNotAuthorized Richiamo della funzione in OCI Functions non riuscito a causa del numero 404 del servizio OCI Functions.
functionBackend.rateLimited Frequenza limitata durante il richiamo della funzione nelle funzioni OCI
functionBackend.serviceUnavailable Servizio OCI Functions non disponibile.
functionBackend.successfulRequest Richiamo della funzione riuscito nelle funzioni OCI
functionBackend.timeout Timeout del richiamo della funzione nelle funzioni OCI.
headerTransformation.badHeaderValue Valore non valido per l'intestazione della richiesta.
headerTransformation.missingSetValues Valore mancante per il criterio di trasformazione set.
headerTransformation.protectedHeaderTransformed Il criterio ha tentato di trasformare un'intestazione protetta.
httpBackend.formedBackendUrl L'URL backend HTTP è stato formato in modo dinamico utilizzando variabili di contesto.
httpBackend.requestError Si è verificato un errore durante l'esecuzione della richiesta al backend HTTP.
httpBackend.requestSent Richiesta inviata al backend HTTP.
httpBackend.responseBodyError Si è verificato un errore durante la lettura del corpo della risposta dal backend HTTP.
httpBackend.responseReceived Risposta ricevuta dal backend HTTP.
httpBackend.urlInvalid L'URL backend HTTP non è valido.
jwtAuthentication.authenticationFailed Autenticazione JWT non riuscita.
jwtAuthentication.badJsonWebKeySet Il set di chiavi Web JSON non è valido.
jwtAuthentication.loadingJsonWebKeySet Caricamento del set di chiavi Web JSON in corso.
jwtAuthentication.successfulAuthentication autenticazione JWT riuscita.
logoutBackend.invalidAuthentication Percorso di logout non corrispondente.
logoutBackend.logoutError Si è verificato un errore nel backend di logout OAuth2.
logoutBackend.redirectError L'URL di reindirizzamento dopo il logout non è consentito.
mutualTls.clientCertificateInvalid Il certificato client è mancante o non valido.
mutualTls.clientCertificateSanInvalid Le SAN contenute nel certificato client non hanno superato la convalida.
queryParameterTransformation.badParameterValue Valore non valido per il parametro di query della richiesta.
rateLimiting.requestDenied La richiesta è stata negata dal criterio di limitazione della frequenza.
rateLimiting.requestPermitted La richiesta è stata consentita dal criterio di limitazione della frequenza.
request.bodyTooLarge Il corpo della richiesta era troppo grande.
request.clientCertConversionFailed Impossibile convertire il certificato client in un valore stringa.
request.clientEof Impossibile leggere una richiesta a causa di un errore del client.
request.clientTimeout Impossibile leggere una richiesta a causa di un timeout del client.
request.internalServiceError Errore interno del servizio.
request.loopDetected È stata rilevata una condizione di loop della richiesta, in base alla quale le richieste per il gateway vengono reindirizzate a se stesse creando un ciclo.
request.possibleLoopDetected È stata rilevata una possibile condizione di loop richieste, in base alla quale le richieste per il gateway vengono reindirizzate a se stesse creando un ciclo.
request.serviceUnavailable Il gateway non è attualmente in grado di soddisfare la richiesta.
requestValidation.validationError La richiesta non ha superato un criterio di convalida.
requestValidation.validationPermitted La richiesta ha superato un criterio di convalida.
responseCache.backendResponseStorageAborted La risposta backend non è stata memorizzata nella cache.
responseCache.backendResponseStoredInCache La risposta backend è stata memorizzata nella cache.
responseCache.lookupAborted Cache delle risposte non utilizzata.
responseCache.lookupResultNotFound Risposta non trovata nella cache.
responseCache.lookupResultSuccess Una risposta è stata letta dalla cache.
secretsClient.fetchFailure Recupero del segreto client dal servizio segreto non riuscito.
secretsClient.fetchSuccess Recupero del segreto client dal servizio segreto riuscito.
secretsClient.unexpectedResponse Risposta imprevista del servizio segreto durante il recupero del segreto client.
tokenAuthentication.authenticationFailed Autenticazione token non riuscita.
tokenAuthentication.badDiscoveryEndpointResponse La risposta dell'endpoint di ricerca automatica remota non è valida.
tokenAuthentication.badIntrospectionResponse La risposta di introspezione del token non è valida.
tokenAuthentication.badJsonWebKeySet Set di chiavi Web JSON non valido.
tokenAuthentication.loadingDiscoveryEndpointResponse Caricamento del documento di ricerca automatica remota.
tokenAuthentication.loadingJsonWebKeySet Caricamento del set di chiavi Web JSON.
tokenAuthentication.successfulAuthentication Autenticazione token riuscita.
usagePlans.eligibleNotEntitled La distribuzione API non è la destinazione di un'abilitazione in alcun piano di utilizzo, anche se la specifica di distribuzione API include un criterio di richiesta del piano di utilizzo che specifica un token client.
usagePlans.requestBreachedButAllowed La richiesta è stata consentita anche se è stato superato il numero massimo di richieste specificate da un'abilitazione del piano di utilizzo.
usagePlans.requestPermitted Richiesta di un sottoscrittore del piano di utilizzo consentita.
usagePlans.requestRejected La richiesta di un sottoscrittore del piano di utilizzo è stata rifiutata.

Log di esecuzione di esempio

  • Tipo: Richiesta
  • Scenario: loop richieste rilevato
  • Descrizione: è stata rilevata una condizione di loop della richiesta, in base alla quale le richieste per il gateway vengono reindirizzate a se stesse creando un ciclo.
  • Ad esempio:
    {
        "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",
     }