Detalles del gateway de API

Detalles de registro para logs de gateway de API.

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/ 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.
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.
secretId ocid1.secret.oc1.iad.<unique_ID> OCID de un secreto de almacén que el gateway de API está intentando recuperar.
secretVersion 1 Número de versión de un secreto de almacén que el gateway de API está intentando recuperar.
subscriberId ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> OCID del suscriptor.
subscriberName Suscriptor de prima Nombre mostrado del suscriptor.

Códigos de log

Código de log Descripción
authentication.idpCallFailed Se ha producido un error al llamar al proveedor de identidad OAuth2.
authentication.idpCallSuccess Se ha llamado correctamente al proveedor de identidad OAuth2.
authentication.idpTokenExpiryNonNumeric El proveedor de identidad OAuth2 no ha devuelto una caducidad válida.
authentication.validationFailurePolicyOAuth Se ha disparado la política de fallo de validación OAuth2.
authentication.validationFailurePolicyOAuthStepFailed Se ha producido un error al realizar los pasos de la política de fallo de validación OAuth2.
author.unauthorizedRequest Fallo de autorización de la solicitud.
customAuthentication.authenticationFailed Fallo de autenticación personalizada.
customAuthentication.cacheMiss No se ha encontrado la respuesta del autorizador personalizado en la caché.
customAuthentication.failedFunctionInvocation Fallo al llamar a la función de Oracle.
customAuthentication.successfulAuthentication La autenticación personalizada se ha realizado correctamente.
customAuthentication.successfulFunctionInvocation Se ha llamado correctamente a la función de Oracle.
customAuthentication.unexpectedResponse Respuesta inesperada de la función de Oracle.
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.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.
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.
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.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.
dynamicRouting.backendMatched (Fin de creación) La solicitud coincidió con una regla de backend y se enrutó al backend asociado.
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.
functionBackend.badGateway Se ha recibido "Bad Gateway" al llamar a la función en OCI Functions
functionBackend.badRequestHeaderValue Valor incorrecto para la cabecera de solicitud.
functionBackend.badRequestHeaders Cabecera de solicitud incorrecta.
functionBackend.badResponse La función devolvió una respuesta defectuosa. Esto indica una respuesta incorrecta formada de la función.
functionBackend.internalServiceError Error de servicio interno al llamar a la función en OCI Functions
functionBackend.notFoundOrNotAuthorized Fallo al llamar a la función en OCI Functions debido a 404 del servicio OCI Functions.
functionBackend.rateLimited Ratio limitado al llamar a la función en OCI Functions
functionBackend.serviceUnavailable Servicio OCI Functions no disponible.
functionBackend.successfulRequest Llamada correcta de la función en OCI Functions
functionBackend.timeout Timeout de llamada de función en OCI Functions.
headerTransformation.badHeaderValue Valor incorrecto para la cabecera de solicitud.
headerTransformation.missingSetValues Falta un valor para la política de transformación definida.
headerTransformation.protectedHeaderTransformed La política ha intentado transformar una cabecera protegida.
httpBackend.formedBackendUrl La URL de backend HTTP se ha formado dinámicamente mediante variables de contexto.
httpBackend.requestError Se ha producido un error al realizar la solicitud al backend HTTP.
httpBackend.requestSent Solicitud enviada al backend HTTP.
httpBackend.responseBodyError Se ha producido un error al leer el cuerpo de respuesta del backend HTTP.
httpBackend.responseReceived Respuesta recibida del backend HTTP.
httpBackend.urlInvalid La URL de backend HTTP no es válida.
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.
jwtAuthentication.successfulAuthentication La autenticación de JWT se ha realizado correctamente.
logoutBackend.invalidAuthentication La ruta de desconexión no coincide.
logoutBackend.logoutError Se ha producido un error en el backend de desconexión OAuth2.
logoutBackend.redirectError No se permite la URL de redirección posterior a la desconexión.
mutualTls.clientCertificateInvalid Falta el certificado de cliente o no es válido.
mutualTls.clientCertificateSanInvalid Falló la validación de las SAN incluidas en el certificado de cliente.
queryParameterTransformation.badParameterValue Valor incorrecto para el parámetro de consulta de solicitud.
rateLimiting.requestDenied La política de limitación de frecuencia ha denegado la solicitud.
rateLimiting.requestPermitted La política de limitación de frecuencia permitió la solicitud.
request.bodyTooLarge El cuerpo de la solicitud era demasiado grande.
request.clientCertConversionFailed El certificado de cliente no se ha podido convertir en un valor de cadena.
request.clientEof No se pudo leer una solicitud debido a un error del cliente.
request.clientTimeout No se pudo leer una solicitud debido al timeout del cliente.
request.internalServiceError Error interno del servicio.
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.serviceUnavailable La puerta de enlace no puede actualmente dar servicio a la solicitud.
requestValidation.validationError La solicitud ha fallado en una política de validación.
requestValidation.validationPermitted La solicitud ha pasado una política de validación.
responseCache.backendResponseStorageAborted La respuesta de backend no se ha almacenado en la caché.
responseCache.backendResponseStoredInCache La respuesta de backend se ha almacenado en la caché.
responseCache.lookupAborted No se ha utilizado la caché de respuesta.
responseCache.lookupResultNotFound No se ha encontrado una respuesta en la caché.
responseCache.lookupResultSuccess Se ha leído una respuesta de la caché.
secretsClient.fetchFailure Fallo al recuperar el secreto de cliente del servicio de secretos.
secretsClient.fetchSuccess Se ha recuperado correctamente el secreto de cliente del servicio de secretos.
secretsClient.unexpectedResponse Respuesta inesperada del servicio de secretos al recuperar el secreto de cliente.
tokenAuthentication.authenticationFailed Fallo de autenticación del token.
tokenAuthentication.badDiscoveryEndpointResponse La respuesta de punto final de detección remota no es válida.
tokenAuthentication.badIntrospectionResponse La respuesta de introspección de token no es válida.
tokenAuthentication.badJsonWebKeySet El juego de claves web JSON no es válido.
tokenAuthentication.loadingDiscoveryEndpointResponse Cargando el documento de detección remota.
tokenAuthentication.loadingJsonWebKeySet Se está cargando el juego de claves web JSON.
tokenAuthentication.successfulAuthentication Autenticación de token correcta.
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.
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.requestPermitted Se permitió la solicitud de un suscriptor del plan de uso.
usePlans.requestReject Se rechazó la solicitud de un suscriptor de plan de uso.

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