O envio de logs integra gateways nativos da cloud do MSE ao Alibaba Cloud Simple Log Service (SLS). Essa integração permite analisar logs de acesso do gateway para compreender o comportamento dos clientes, mapear a distribuição geográfica dos usuários e solucionar problemas. Este tópico descreve como ativar o envio de logs para um gateway nativo da cloud do MSE.
Pré-requisitos
Crie uma instância de gateway nativo da cloud do MSE. Para mais informações, consulte Create a cloud-native gateway.
Ative o Simple Log Service. Caso contrário, faça login no console do Simple Log Service com sua conta Alibaba Cloud para ativá-lo. Para mais informações, consulte What is Simple Log Service?.
O recurso de envio de logs é gratuito, mas as cobranças padrão do Simple Log Service (SLS) se aplicam conforme o uso. Para mais detalhes sobre o faturamento do SLS, consulte pay-as-you-go.
Ative o envio de logs
Faça login no console do MSE. Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways. Na página Gateways, clique em ID do gateway.
-
No painel de navegação à esquerda, clique em Parameter Settings. Na seção Observability Parameters, clique em ícone de edição
ao lado de Log Shipping. Na caixa de diálogo Log Shipping Settings, ative a chave Enable Log Shipping (Ship Gateway Access Logs to Log Service).NotaAo ativar o envio de logs, o Simple Log Service cria um projeto SLS padrão. Você também pode selecionar um projeto SLS existente.
Após ativar o Tracing Analysis, visualize dados de monitoramento do gateway no console do Tracing Analysis. Para mais informações, consulte Enable Tracing Analysis for a gateway.
Com o envio de logs ativado, clique em link ao lado de Project na seção Observability Parameters. Essa ação redireciona você para o Logstore do gateway. Para mais informações, consulte Quick start for log query and analysis.
Solução de problemas: sem conteúdo nos logs de plug-in
Se o envio de logs estiver ativado, mas nenhum conteúdo aparecer ao consultar logs de plug-in, siga esta ordem de solução de problemas:
Amplie o intervalo de tempo da consulta: Garanta que a janela de tempo cubra o momento em que as requisições ocorreram. O envio de logs do Simple Log Service (SLS) tem latência de segundos a minutos. Portanto, expanda a janela de tempo conforme necessário.
Verifique se as requisições invocam o plug-in: Procure os registros correspondentes nos logs de acesso do gateway. Se não houver tais registros, as requisições nunca chegaram ao plug-in. Verifique a configuração de rota.
Analise a lógica de saída de log no código do plug-in: Confirme se as requisições de negócio realmente alcançam as instruções de saída de log. Mesmo com o envio de logs funcionando corretamente, se ramificações condicionais no código impedirem a execução dessas instruções, os logs do plug-in ficarão vazios.
Campos de envio de logs
|
Nome do campo |
Tipo |
Descrição |
|
__time__ |
long |
Momento em que a entrada de log foi gerada. |
|
cluster_id |
string |
ID da instância do gateway. |
|
consumer |
string |
Consumidor da requisição. Este campo é preenchido apenas quando a autenticação de consumidor está ativada. |
|
custom_log |
json |
Armazena campos de log definidos pelo usuário. Pode ser usado com plug-ins personalizados. |
|
authority |
string |
Valor do cabeçalho Host na requisição. |
|
bytes_received |
long |
Tamanho do corpo da requisição em bytes, excluindo cabeçalhos. |
|
bytes_sent |
long |
Tamanho do corpo da resposta em bytes, excluindo cabeçalhos. |
|
downstream_local_address |
string |
Endereço do pod do gateway. |
|
downstream_remote_address |
string |
Endereço do cliente conectado ao gateway. |
|
downstream_transport_failure_reason |
string |
Motivo de uma falha de transporte downstream. |
|
duration |
long |
Tempo total de processamento da requisição em milissegundos, medido do primeiro byte recebido do cliente até o último byte enviado na resposta. |
|
method |
string |
Método HTTP. |
|
path |
string |
Caminho na requisição HTTP. |
|
protocol |
string |
Versão do protocolo HTTP. |
|
request_id |
string |
O gateway gera um ID para cada requisição e o inclui no cabeçalho |
|
requested_server_name |
string |
Nome do servidor usado para a conexão SSL. |
|
request_duration |
long |
Tempo em milissegundos desde o recebimento do primeiro byte até o último byte da requisição downstream pelo gateway. |
|
response_code |
long |
Código de status da resposta HTTP. |
|
response_code_details |
string |
Detalhes adicionais sobre o código de resposta. Por exemplo, |
|
response_flags |
string |
Motivo de uma falha na resposta. |
|
response_tx_duration |
long |
Tempo em milissegundos desde o recebimento do primeiro byte do service upstream até o envio do último byte para o cliente downstream pelo gateway. |
|
route_name |
string |
Nome da rota. |
|
start_time |
string |
Hora de início da requisição no formato UTC. |
|
trace_id |
string |
Trace ID. |
|
upstream_cluster |
string |
Cluster upstream. |
|
upstream_host |
string |
Endereço ip do service upstream. |
|
upstream_local_address |
string |
Endereço local usado para conectar ao service upstream. |
|
upstream_protocol |
string |
Protocolo usado para solicitar o service de backend. |
|
upstream_service_time |
long |
Tempo em milissegundos para o service upstream processar a requisição. Esta duração inclui a latência de rede e o tempo de processamento do próprio service. |
|
upstream_transport_failure_reason |
string |
Motivo de uma falha de conexão upstream. |
|
user_agent |
string |
Cabeçalho User-Agent na requisição HTTP. |
|
x_forwarded_for |
string |
Valor do cabeçalho HTTP |
|
ext_authz_status_code |
long |
Código de resposta do service de autorização personalizado. |
|
ext_authz_duration |
long |
Tempo de resposta do service de autorização personalizado. |
Adicionar campos personalizados aos logs de acesso
Para registrar um campo personalizado, como Referer, nos logs de acesso, utilize o recurso de ajuste de formato de log para configurar um formato personalizado.
Na página de detalhes do gateway, clique em Parameter Settings no painel de navegação à esquerda.
Na seção Observability Parameters, localize Log Format Adjustment dentro de Log Shipping.
Clique em Default Format (Click to Customize). Na caixa de diálogo exibida, clique em Add.
Defina Field Type como Request Header e insira o valor do campo, por exemplo,
Referer.Clique em OK para salve a configuração. O status mudará para Custom Format (Click to Edit).
Depois que a configuração entrar em vigor, as requisições que incluírem o cabeçalho Referer serão registradas, e o campo request_headers no log de acesso conterá o valor de Referer.
O ajuste de formato de log suporta os seguintes tipos de campo: cabeçalho de requisição, cabeçalho de resposta, metadados dinâmicos de requisição e metadados dinâmicos de resposta.
Response flags
O motivo de uma falha na requisição é determinado principalmente pelo valor de Response_Flag nos logs. A seguir, são descritos os diferentes valores de Response_Flag.
Neste contexto, downstream refere-se ao cliente, e upstream refere-se ao service de backend.
UH: Nenhum host upstream saudável está disponível no cluster.
UF: Falha na conexão upstream.
NR: Nenhuma rota configurada correspondeu à requisição. Quando isso ocorre (
response_flags=NReresponse_code_details=route_not_found), oresponse_codeé404, e tantoroute_namequantoupstream_clusteraparecem como-. A requisição é rejeitada na camada do gateway e nunca chega ao service de backend. Portanto, valores vazios paraupstream_clustere todos os camposupstream_*são comportamentos esperados e não indicam problema na configuração do cluster upstream. Para resolver, verifique se existe uma rota configurada para o caminho da requisição.URX: Requisição rejeitada porque o limite de tentativas upstream (HTTP) ou o número máximo de tentativas de conexão (TCP) foi atingido.
NC: Cluster upstream não encontrado.
DT: A requisição ou conexão excedeu
max_connection_durationoumax_downstream_connection_duration.DC: Conexão downstream encerrada.
LH: O service local falhou em uma verificação de integridade.
UT: Timeout na requisição upstream.
LR: Conexão redefinida localmente.
UR: Conexão upstream redefinida remotamente.
UC: Conexão upstream encerrada.
DI: Processamento da requisição atrasado pelo período especificado na injeção de falhas.
FI: Requisição abortada com um código de resposta especificado pela injeção de falhas.
RL: Requisição limitada localmente pelo filtro de limitação de taxa HTTP, excluindo respostas 429.
UAEX: Requisição rejeitada por um service de autorização externo.
RLSE: Requisição rejeitada devido a erro no service de limitação de taxa.
IH: Requisição rejeitada porque um cabeçalho com validação estrita continha um valor inválido.
SI: Timeout de ociosidade do stream atingido.
DPE: Erro de protocolo HTTP na requisição downstream.
UPE: Erro de protocolo HTTP na resposta upstream.
UMSDR: Requisição upstream atingiu sua duração máxima.
OM: Gerenciador de sobrecarga encerrou a requisição.
DF: Requisição encerrada devido a falha na resolução DNS.