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