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