Detalhes do Serviço API Gateway

Detalhes de log para logs do API Gateway.

Recursos

  • Implantação da API

Categoria de Log

Valor da API (ID): Console (Nome para Exibição) Descrição
Acesso Logs de Acesso Logs de acesso para uma implantação de API.
Execução Logs de Execução Logs de execução para uma implantação de API.

Disponibilidade

O log de Acesso/Execução do serviço API Gateway está disponível em todas as regiões dos realms comerciais.

Log de Acesso à Implantação de API

Os logs de acesso de implantação de API registram um resumo de cada solicitação e resposta que passa pelo gateway de API, correspondendo a uma rota na implantação de API. Cada entrada do log de acesso contém informações sobre a solicitação e a resposta (hora em que a solicitação foi recebida, o protocolo do servidor, o status da resposta e assim por diante). Para obter a lista completa de campos, consulte Conteúdo de um Log de Acesso.

Conteúdo de um Log de Acesso

Os logs de acesso aparecem como um valor no campo Dados de Log. Este valor corresponde a dados formatados em JSON com os seguintes campos:

Campo Exemplo Descrição
httpMethod GET Método HTTP derivado da linha de solicitação.
requestUri /exemplo/ URI da solicitação derivado da linha da solicitação.
serverProtocol HTTP/1.1 Protocolo HTTP derivado da linha de solicitação.
bodyBytesSent 45 Tamanho total da resposta (em bytes) enviada para o cliente.
gatewayId ocid1.apigateway.oc1.iad.<unique_ID> OCID do serviço API Gateway para a implantação de API que atende à solicitação.
httpUserAgent Apache-HttpClient/4.5.9 (Java/1.8.0_252) Agente do usuário HTTP da solicitação.
message GET /exemplo/ HTTP/1.1 Linha de solicitação recebida do cliente.
opcRequestId FF7F0B8A32246FC7526AE45A2FA8D5CE/

A408784281BF81B0EE23596CE57CA93C/

C06F7DDDFC7C505FAA0566D8F2FE0BB2

Valor do cabeçalho HTTP opc-request-id ou um ID de solicitação gerado internamente se nenhum for especificado na solicitação.
remoteAddr 138.1.55.172 Endereço IP do cliente solicitante.
httpReferrer https://www.example.com O URL da referência, se presente.
requestDuration 0.016 Tempo total gasto (em segundos, com precisão de milissegundo), a partir do momento em que o gateway começa a receber a solicitação do cliente, até que ele conclua o envio de uma resposta ao cliente.
status 404 Código de status da resposta do gateway.

Log de Acesso de Amostra

{
    "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 Execução de Implantação de API

Os logs de execução de implantação de API registram informações sobre processamento no gateway de API para uma rota individual, a fim de ajudar na solução de problemas e no monitoramento. Cada entrada do log de execução contém informações (hora em que a solicitação foi recebida, nível para denotar a severidade da mensagem de log, um código de mensagem e assim por diante). Para obter a lista completa de campos, consulte Conteúdo de um Log de Execução.

Conteúdo de um Log de Execução

Por padrão, as informações de Nível de Log estão ativadas. Este valor corresponde a dados formatados em JSON com os seguintes campos:

Campo Exemplo Descrição
code request.loopDetected Código curto para o evento de registro em log encontrado durante a execução da solicitação. Para obter a lista completa de códigos de mensagem, consulte a tabela "Códigos de Log" Códigos de Log.
gatewayId ocid1.apigateway.oc1.iad.<unique_ID> OCID do gateway de API para a implantação de API que atende à solicitação.
functionId ocid1.fnfunc.oc1.iad.<unique_ID> OCID da função que o gateway de API chamou. Esse campo só está presente para backends de função.
level WARN Nível de log para a entrada do log de execução, seja INFO, WARN ou ERROR.
message A request loop has been detected - requests for this gateway are being directed back to this gateway. Mensagem de execução emitida durante o processamento da solicitação.
opcRequestId FF7F0B8A32246FC7526AE45A2FA8D5CE/

A408784281BF81B0EE23596CE57CA93C/

C06F7DDDFC7C505FAA0566D8F2FE0BB2

Valor do cabeçalho HTTP opc-request-id ou um ID de solicitação gerado internamente se nenhum for especificado na solicitação.
functionCode FunctionInvokeSyslogUnavailable Um código fornecido pelo OCI Functions para definir exclusivamente o erro da função. Esse campo só está presente para backends de função.
functionMessage Syslog endpoint unavailable Uma mensagem fornecida pelo OCI Functions para descrever o erro da função. Esse campo só está presente para backends de função.
functionStatusCode 502 O código de status HTTP retornado pelo OCI Functions. Esse campo só está presente para backends de função.
configuredLimit 5 Número de solicitações a serem permitidas por configuredUnit. O limite de taxa ou a cota.
configuredUnit MINUTO Período para permitir o número de solicitações especificadas por configuredLimit. Para limites de taxa, "SECOND". Para cota, "MINUTE", "DAY", "HOUR", "WEEK" ou "MONTH".
entitlementName Entitlement1 Nome do direito que a solicitação está usando para acessar a implantação de API.
limitingKey <timestamp>/ocid1.apigatewayusageplan.oc1.iad.<unique_ID>/<nome do elemento>/ocid1.apigatewaysubscriber.oc1.iad.<unique_ID> Para calcular o uso para fins de limite de taxa e cota, as solicitações com a mesma chave são contadas juntas.
limitingResourceId ocid1.apigatewayusageplan.oc1.iad.<unique_ID> OCID do plano de uso usado para acessar a implantação de API.
limitingResourceName Ouro-Uso-Plano Nome do plano de uso usado para acessar a implantação de API.

Códigos de Log

Código de Log Descrição Recurso Relacionado
httpBackend.timeout Timeout da solicitação para o backend HTTP. Backend HTTP
httpBackend.dnsResolutionFailed Falha ao resolver o URL de backend HTTP.
httpBackend.sslHandshakeFailed Falha de handshake SSL com o backend HTTP.
httpBackend.successfulRequest Solicitação bem-sucedida para o backend HTTP.
httpBackend.responseReceived Resposta recebida do backend HTTP.
httpBackend.requestSent Solicitação enviada para o backend HTTP.
functionBackend.successfulRequest Chamada bem-sucedida de função no OCI Functions. Backend do OCI Functions
functionBackend.notFoundOrNotAuthorized Falha ao chamar a função no OCI Functions em decorrência de 404 do serviço OCI Functions.
functionBackend.rateLimited Taxa limitada ao chamar a função no OCI Functions.
functionBackend.serviceUnavailable Serviço do OCI Functions indisponível.
functionBackend.badGateway Recebido "Bad Gateway" ao chamar a função no OCI Functions.
functionBackend.timeout Chamada de função no OCI Functionstimed out.
functionBackend.internalServiceError Erro de serviço interno ao chamar a função no OCI Functions.
specification.badVariableReference Não foi possível resolver a variável de contexto. Especificação incorreta no runtime
specification.invalidAuthenticationPolicy Política de autenticação inválida.
specification.badTransformationPolicy Política de transformação inválida.
specification.badHeaderTransformationPolicy Política de Transformação de Cabeçalho inválaida.
specification.badQueryParameterTransformationPolicy Política de Transformação do Parâmetro de Consulta inválida.
request.internalServiceError Erro de serviço interno. Processamento da solicitação
request.loopDetected Foi detectada uma condição de loop de solicitação, pela qual as solicitações do gateway estão sendo redirecionadas para ele mesmo, criando um ciclo.
request.possibleLoopDetected Foi detectada uma possível condição de loop de solicitação, pela qual as solicitações do gateway estão sendo redirecionadas para ele mesmo, criando um ciclo.
request.headersTruncated Os cabeçalhos das solicitações foram truncados.
request.queryParametersTruncated Os parâmetros de consulta da solicitação foram truncados.
authorization.unauthorizedRequest Falha na autorização para a solicitação. Solicitar Autorização
authorization.scopeCheckFailed Falha ao verificar o escopo da solicitação.
customAuthentication.successfulFunctionInvocation Oracle Functions chamado com sucesso. Autenticação Personalizada
customAuthentication.failedFunctionInvocation Falha ao chamar o Oracle Functions.
customAuthentication.successfulAuthentication Autenticação Personalizada bem-sucedida.
customAuthentication.authenticationFailed Falha de Autenticação Personalizada.
customAuthentication.unexpectedResponse Resposta inesperada do Oracle Functions.
jwtAuthentication.successfulAuthentication Autenticação JWT bem-sucedida. Autenticação JWT
jwtAuthentication.authenticationFailed Falha na Autenticação JWT.
jwtAuthentication.badJsonWebKeySet O JSON Web Key Set não é válido.
jwtAuthentication.loadingJsonWebKeySet Carregando o JSON Web Key Set.
headerTransformation.badHeaderValue Valor inválido para o cabeçalho da solicitação. Transformação de Cabeçalho
headerTransformation.protectedHeaderTransformed A política tentou transformar um cabeçalho protegido.
headerTransformation.protectedElementTransformed A política tentou transformar um elemento protegido.
headerTransformation.missingSetValues Valor ausente para a política de transformação de conjunto.
queryParameterTransformation.badParameterValue Valor inválido para o parâmetro de consulta da solicitação. Transformação do Parâmetro de Consulta
queryParameterTransformation.protectedElementTransformed A política tentou transformar um elemento protegido.
queryParameterTransformation.missingSetValues Valor ausente para a política de transformação de conjunto.
requestValidation.validationError Falha na solicitação de uma política de validação. Validação da Solicitação
usagePlans.requestPermitido Foi permitida a solicitação de um assinante de plano de uso. Planos de Uso
usePlans.requestRejeitado A solicitação de um assinante do plano de uso foi rejeitada.
usePlans.requestBreachedButAllowed A solicitação foi permitida, embora o número máximo de solicitações especificado por um direito ao plano de uso tenha sido excedido.
usePlans.eligibleNotEntitled A implantação de API não é o destino de um direito em nenhum plano de uso, embora a especificação de implantação de API inclua uma política de solicitação de plano de uso que especifique um token do cliente.
dynamicRouting.backendMatched A solicitação correspondeu a uma regra de back-end e foi roteada para o back-end associado. Roteamento Back-End Dinâmico
dynamicRouting.backendRejected A solicitação falhou porque a solicitação não correspondeu a uma regra de backend e nenhuma regra padrão foi definida.
dynamicRouting.defaultBackendMatched A solicitação não correspondeu a uma regra de backend e, portanto, foi roteada para o backend associado à regra padrão.
dynamicAuthentication.defaultAuthenticationServerMatched O valor da variável de contexto selecionada não corresponde a nenhuma das regras do servidor de autenticação, mas um servidor de autenticação padrão foi especificado para que fosse usado para autenticação. Seleção do Servidor de Autenticação Dinâmica
dynamicAuthentication.authenticationServerMatched O valor da variável de contexto selecionada correspondeu a uma das regras do servidor de autenticação.
dynamicAuthentication.noAuthenticationServerMatched O valor da variável de contexto selecionada não corresponde a nenhuma das regras do servidor de autenticação e nenhum servidor de autenticação padrão foi especificado.
dynamicAuthentication.jwtTokenNotFound A variável de contexto selecionada era request.auth[claimName], mas nenhum token JWT foi enviado com a solicitação.
dynamicAuthentication.jwtTokenInvalid A variável de contexto selecionada era request.auth[claimName], mas um token JWT inválido foi enviado com a solicitação.
authentication.validationFailurePolicyInvalid A política de falha de validação não é um tipo definido. Autenticação baseada em solicitação

Logs de Execução de Amostra

  • Tipo: Solicitação
  • Cenário: Loop de Solicitação Detectado
  • Descrição: Foi detectada uma condição de loop de solicitação, pela qual as solicitações do gateway estão sendo redirecionadas para ele mesmo, criando um ciclo.
  • Exemplo:
    {
        "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",
     }