Detalles del gateway de API
Detalles de registro para logs de API Gateway.
Recursos
- Despliegue de la API
Categorías de log
Valor de API (ID): | Consola (nombre mostrado) | Descripción |
---|---|---|
Acceso | Logs de acceso | Logs de acceso para un despliegue de API. |
Ejecución | Logs de ejecución | Logs de ejecución para un despliegue de API. |
Disponibilidad
El registro de acceso y ejecución del gateway de API está disponible en todas las regiones de los dominios comerciales.
Log de acceso de despliegue de API
Los logs de acceso de despliegue de API registran un resumen de todas las solicitudes y respuestas que pasan por el gateway de API y coinciden con una ruta en el despliegue de API. Cada entrada del log de acceso contiene información sobre la solicitud y la respuesta (hora a la que se recibió la solicitud, protocolo del servidor, estado de la respuesta, etc.). Para obtener la lista completa de campos, consulte Contenido de un log de acceso.
Contenido de un log de acceso
Los logs de acceso aparecen como un valor en el campo Datos de log. Este valor son datos con formato JSON con los siguientes campos:
Campo | Ejemplo | Descripción |
---|---|---|
httpMethod | GET | Método HTTP derivado de la línea de solicitud. |
requestUri | /example/ | URI de solicitud derivado de la línea de solicitud. |
serverProtocol | HTTP/1.1 | Protocolo HTTP derivado de la línea de solicitud. |
bodyBytesSent | 45 | Tamaño total de la respuesta (en bytes) enviada al cliente. |
gatewayId | ocid1.apigateway.oc1.iad.<unique_ID> | OCID del gateway de API para el despliegue de API que sirve a la solicitud. |
httpUserAgent | Apache-HttpClient/4.5.9 (Java/1.8.0_252) | Agente de usuario HTTP para la solicitud. |
message | GET /example/ HTTP/1.1 | Línea de solicitud recibida del cliente. |
opcRequestId | FF7F0B8A32246FC7526AE45A2FA8D5CE/ A408784281BF81B0EE23596CE57CA93C/ C06F7DDDFC7C505FAA0566D8F2FE0BB2 |
Valor de la cabecera HTTP opc-request-id o un identificador de solicitud generado internamente si no se ha especificado ninguno en la solicitud. |
remoteAddr | 138.1.55.172 | Dirección IP del cliente de solicitud |
httpReferrer | https://www.example.com | Dirección URL de la referencia, si está presente. |
requestDuration | 0.016 | Tiempo total (en segundos, con precisión de milisegundos), desde el momento en que el gateway empieza a recibir la solicitud del cliente hasta completa el envío de una respuesta al cliente. |
status | 404 | Código de estado de la respuesta del gateway. |
Log de acceso de ejemplo
{
"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 de ejecución de despliegue de API
Los logs de ejecución de despliegue de API registran información sobre el procesamiento en el gateway de API para una ruta individual, con el fin de ayudar con la solución de problemas y la supervisión. Cada entrada del log de ejecución contiene información (hora a la que se recibió la solicitud, nivel para indicar la gravedad del mensaje de log, un código de mensaje, etc.). Para obtener la lista completa de campos, consulte Contenido de un log de ejecución.
Contenido de un log de ejecución
Por defecto, la información de nivel de log está activada. Este valor son datos con formato JSON con los siguientes campos:
Campo | Ejemplo | Descripción |
---|---|---|
code | request.loopDetected | Código corto del evento de registro detectado durante la ejecución de la solicitud. Para obtener la lista completa de códigos de mensaje, consulte la tabla "Códigos de log" Códigos de log. |
gatewayId | ocid1.apigateway.oc1.iad.<unique_ID> | OCID de gateway de API para el despliegue de API que sirve a la solicitud. |
functionId | ocid1.fnfunc.oc1.iad.<unique_ID> | OCID de la función que ha llamado el gateway de API. Este campo solo está presente para backends de función. |
level | WARN | Nivel de log para la entrada del log de ejecución, ya sea INFO, WARN o ERROR. |
message | A request loop has been detected - requests for this gateway are being directed back to this gateway. | Mensaje de ejecución emitido durante el procesamiento de la solicitud. |
opcRequestId | FF7F0B8A32246FC7526AE45A2FA8D5CE/ A408784281BF81B0EE23596CE57CA93C/ C06F7DDDFC7C505FAA0566D8F2FE0BB2 |
Valor de la cabecera HTTP opc-request-id o un identificador de solicitud generado internamente si no se ha especificado ninguno en la solicitud. |
functionCode | FunctionInvokeSyslogUnavailable | Código proporcionado por OCI Functions para definir de forma única el error de la función. Este campo solo está presente para backends de función. |
functionMessage | Syslog endpoint unavailable | Mensaje proporcionado por OCI Functions para describir el error de la función. Este campo solo está presente para backends de función. |
functionStatusCode | 502 | Código de estado HTTP devuelto por OCI Functions. Este campo solo está presente para backends de función. |
configuredLimit | 5 | Número de solicitudes que se permiten por configuredUnit. El límite de cuota o la cuota. |
configuredUnit | MINUTO | Período en el que se permite el número de solicitudes especificado por configuredLimit. Para los límites de tipo, "SEGUNIO". Para la cuota, "MINUTE", "DAY", "HOUR", "WEEK" o "MONTH". |
entitlementName | Entitlement1 | Nombre del derecho que utiliza la solicitud para acceder al despliegue de API. |
limitingKey | <registro de hora>/ocid1.apigatewayusageplan.oc1.iad.<unique_ID>/<nombre de entidad>/ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> | Para calcular el uso a efectos de límite de cuota y cuota, las solicitudes con la misma clave se cuentan juntas. |
limitingResourceId | ocid1.apigatewayusageplan.oc1.iad.<unique_ID> | OCID del plan de uso utilizado para acceder al despliegue de API. |
limitingResourceName | Plan de uso de oro | Nombre del plan de uso utilizado para acceder al despliegue de API. |
Códigos de log
Código de log | Descripción | Función relacionada |
---|---|---|
httpBackend.timeout | Timeout de la solicitud al backend HTTP. | Backend HTTP |
httpBackend.dnsResolutionFailed | Fallo al resolver la URL de backend HTTP. | |
httpBackend.sslHandshakeFailed | Fallo de establecimiento de comunicación de SSL con el backend HTTP. | |
httpBackend.successfulRequest | Solicitud correcta al backend HTTP. | |
httpBackend.responseReceived | Respuesta recibida del backend HTTP. | |
httpBackend.requestSent | Solicitud enviada al backend HTTP. | |
functionBackend.successfulRequest | Llamada correcta de la función en Funciones de OCI. | Backend de funciones de OCI |
functionBackend.notFoundOrNotAuthorized | Fallo al llamar a la función en Funciones de OCI debido a 404 desde el servicio Funciones de OCI. | |
functionBackend.rateLimited | Ratio limitado al llamar a la función en Funciones de OCI. | |
functionBackend.serviceUnavailable | Servicio OCI Functions no disponible. | |
functionBackend.badGateway | Se ha recibido "Gateway erróneo" al llamar a la función en Funciones de OCI. | |
functionBackend.timeout | Desactivación de la llamada de la función en Funciones de OCI. | |
functionBackend.internalServiceError | Error de servicio interno al llamar a la función en Funciones de OCI. | |
specified.badVariableReference | No se ha podido resolver la variable de contexto. | Especificación incorrecta en tiempo de ejecución |
specified.invalidAuthenticationPolicy | Política de autenticación no válida. | |
specified.badTransformationPolicy | Política de transformación incorrecta. | |
specified.badHeaderTransformationPolicy | Política de transformación de cabecera incorrecta. | |
specified.badQueryParameterTransformationPolicy | Política de transformación de parámetros de consulta incorrecta. | |
request.internalServiceError | Error interno del servicio. | Procesamiento de solicitud. |
request.loopDetected | Se ha detectado una condición de bucle de solicitud, en la que las solicitudes para el gateway se redireccionan a sí mismas creando un ciclo. | |
request.possibleLoopDetected | Se ha detectado una posible condición de bucle de solicitud, en la que las solicitudes para el gateway se redireccionan a sí mismas creando un ciclo. | |
request.headersTruncated | Se han truncado las cabeceras de solicitud. | |
request.queryParametersTruncated | Se han truncado los parámetros de consulta de solicitud. | |
author.unauthorizedRequest | Fallo de autorización de la solicitud. | Autorización de solicitud |
author.scopeCheckFailed | Fallo al comprobar el ámbito de la solicitud. | |
customAuthentication.successfulFunctionInvocation | Se ha llamado correctamente a la función de Oracle. | Autenticación personalizada |
customAuthentication.failedFunctionInvocation | Fallo al llamar a la función de Oracle. | |
customAuthentication.successfulAuthentication | La autenticación personalizada se ha realizado correctamente. | |
customAuthentication.authenticationFailed | Fallo de autenticación personalizada. | |
customAuthentication.unexpectedResponse | Respuesta inesperada de la función de Oracle. | |
jwtAuthentication.successfulAuthentication | La autenticación de JWT se ha realizado correctamente. | Autenticación de JWT |
jwtAuthentication.authenticationFailed | Fallo de autenticación de JWT. | |
jwtAuthentication.badJsonWebKeySet | El juego de claves web JSON no es válido. | |
jwtAuthentication.loadingJsonWebKeySet | Se está cargando el juego de claves web JSON. | |
headerTransformation.badHeaderValue | Valor incorrecto para la cabecera de solicitud. | Transformación de cabecera |
headerTransformation.protectedHeaderTransformed | La política ha intentado transformar una cabecera protegida. | |
headerTransformation.protectedElementTransformed | La política ha intentado transformar un elemento protegido. | |
headerTransformation.missingSetValues | Falta un valor para la política de transformación definida. | |
queryParameterTransformation.badParameterValue | Valor incorrecto para el parámetro de consulta de solicitud. | Transformación de parámetro de consulta |
queryParameterTransformation.protectedElementTransformed | La política ha intentado transformar un elemento protegido. | |
queryParameterTransformation.missingSetValues | Falta un valor para la política de transformación definida. | |
requestValidation.validationError | La solicitud ha fallado en una política de validación. | Validación de solicitud |
usePlans.requestPermitted | Se permitió la solicitud de un suscriptor del plan de uso. | Planes de uso |
usePlans.requestReject | Se rechazó la solicitud de un suscriptor de plan de uso. | |
usePlans.requestBreachedButAllowed | Se permitió la solicitud, aunque se excedió el número máximo de solicitudes especificado por un derecho de plan de uso. | |
usePlans.eligibleNotEntitled | El despliegue de API no es el destino de un derecho en ningún plan de uso, aunque la especificación de despliegue de API incluya una política de solicitud de plan de uso que especifique un token de cliente. | |
dynamicRouting.backendMatched (Fin de creación) | La solicitud coincidió con una regla de backend y se enrutó al backend asociado. | Enrutamiento de backend dinámico |
dynamicRouting.backendRejected (Fin de creación) | Se produjo un fallo en la solicitud porque la solicitud no coincide con una regla de backend y no se definió ninguna regla por defecto. | |
dynamicRouting.defaultBackendMatched (Fin de creación) | La solicitud no coincide con una regla de backend, por lo que se ha direccionado al backend asociado a la regla por defecto. | |
dynamicAuthentication.defaultAuthenticationServerMatched (Fin de creación) | El valor de variable de contexto seleccionado no coincide con ninguna de las reglas del servidor de autenticación, pero se ha especificado un servidor de autenticación por defecto que se ha utilizado para la autenticación. | Selección de Servidor de Autenticación Dinámica |
dynamicAuthentication.authenticationServerMatched (Fin de creación) | El valor de variable de contexto seleccionado coincide con una de las reglas del servidor de autenticación. | |
dynamicAuthentication.noAuthenticationServerMatched (Fin de creación) | El valor de variable de contexto seleccionado no coincide con ninguna de las reglas del servidor de autenticación y no se ha especificado ningún servidor de autenticación por defecto. | |
dynamicAuthentication.jwtTokenNotFound (Fin de creación) | La variable de contexto seleccionada es request.auth[claimName], pero no se ha enviado ningún token de JWT con la solicitud. | |
dynamicAuthentication.jwtTokenInvalid (Fin de creación) | La variable de contexto seleccionada era request.auth[claimName], pero se envió un token de JWT no válido con la solicitud. | |
authentication.validationFailurePolicyInvalid (Fin de creación) | La política de fallos de validación no es un tipo definido. | Autenticación basada en solicitud |
Logs de ejecución de ejemplo
- Tipo: solicitud
- Escenario: bucle de solicitud detectado
- Descripción: se ha detectado una condición de bucle de solicitud, en la que las solicitudes para el gateway se redireccionan a sí mismas creando un ciclo.
- Ejemplo:
{ "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", }