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