Logs de acesso do seu Application Load Balancer - Elastic Load Balancing

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Logs de acesso do seu Application Load Balancer

O Elastic Load Balancing fornece logs de acesso que capturam informações detalhadas sobre as solicitações enviadas ao seu balanceador de carga. Cada log contém informações como a hora em que a solicitação foi recebida, o endereço IP do cliente, latências, caminhos de solicitação e respostas do servidor. Você pode usar esses logs de acesso para analisar padrões de tráfego e solucionar problemas.

O registro de logs de acesso é um recurso opcional do Elastic Load Balancing e é desabilitado por padrão. Depois de habilitar o registro de acessos para seu load balancer, o Elastic Load Balancing capturará os logs e os armazenará no bucket do Amazon S3 que você especificar como arquivos compactados. Você pode desativar o registro de acesso a qualquer momento.

Não há cobrança adicional pelos logs de acesso. Você é cobrado de acordo com os custos de armazenamento do Amazon S3, mas não será cobrado pela largura de banda usada pelo Elastic Load Balancing para enviar arquivos de log para o Amazon S3. Para obter mais informações sobre os custos de armazenamento, consulteDefinição de preço do Amazon S3.

Arquivos do log de acesso

O Elastic Load Balancing publica um arquivo de log para cada nó do load balancer a cada 5 minutos. A entrega de logs, no final das contas, é consistente. O load balancer pode distribuir vários logs para o mesmo período. Isso normalmente acontece se o site tiver alto tráfego.

Os nomes dos arquivos dos logs de acesso usa o seguinte formato:

bucket[/prefix]/AWSLogs/aws-account-id/elasticloadbalancing/region/yyyy/mm/dd/aws-account-id_elasticloadbalancing_region_app.load-balancer-id_end-time_ip-address_random-string.log.gz
bucket

O nome do bucket do S3.

prefixo

O prefixo (hierarquia lógica) no bucket. Se você não especificar um prefixo, os logs serão colocados no nível raiz do bucket.

aws-account-id

O ID da conta da AWS do proprietário.

região

A Região para seu load balancer e o bucket do S3.

aaaa/mm/dd

A data em que o log foi entregue.

load-balancer-id

O ID de recursos do load balancer. Se o ID de recursos contiver barras (/), elas são substituídos por pontos (.).

end-time

A data e a hora em que o intervalo de registro terminou. Por exemplo, um horário de término de 20140215T2340Z contém entradas para solicitações feitas entre 23:35 e 23:40 no horário UTC ou Zulu.

ip-address

O endereço IP do nó do load balancer que processou a solicitação. Para um load balancer interno, esse é um endereço IP privado.

random-string

Uma string aleatória gerada pelo sistema.

A seguir está um exemplo de nome de arquivo de log:

s3://my-bucket/prefix/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2016/05/01/123456789012_elasticloadbalancing_us-east-2_net.app.my-loadbalancer.1234567890abcdef_20140215T2340Z_172.160.001.192_20sg8hgm.log.gz

Você pode armazenar os arquivos de log no bucket pelo tempo que desejar, mas também pode definir regras do ciclo de vida do Amazon S3 para arquivar ou excluir os arquivos de log automaticamente. Para obter mais informações, consulte Gerenciamento do ciclo de vida de objetos no Manual do usuário do Amazon Simple Storage Service.

Entradas do log de acesso

O Elastic Load Balancing registra as solicitações enviadas ao load balancer, inclusive as que nunca chegaram aos destinos. Por exemplo, se um cliente enviar uma solicitação mal formada ou não houver destinos íntegros para responder a solicitação, a solicitação mesmo assim será registrada. O Elastic Load Balancing não registra solicitações de verificação de integridade.

Cada entrada do log contém os detalhes de uma única solicitação (ou conexão no caso de WebSockets) feitas para o load balancer. Para o WebSockets, uma entrada é gravada somente depois de a conexão ser fechada. Se a conexão atualizada não puder ser estabelecida, a entrada será a mesma de uma solicitação HTTP ou HTTPS.

Importante

O Elastic Load Balancing registra as solicitações na base do melhor esforço. Recomendamos que você use logs de acesso para compreender a natureza das solicitações, não como uma contabilidade completa de todas as solicitações.

Sintaxe

A tabela a seguir descreve os campos de uma entrada no log de acesso, em ordem. Todos os campos são delimitados por espaços. Quando novos campos são introduzidos, eles são adicionados no final da entrada de log. Você deve ignorar quaisquer campos no final da entrada de log que não era esperada.

Campo Descrição

type

O tipo de solicitação ou conexão. Os valores possíveis são as seguintes (ignorar todos os outros valores):

  • http — HTTP

  • https— HTTP por TLS

  • h2— HTTP/2 sobre TLS

  • grpcs— gRPC por TLS

  • ws – WebSockets

  • wss— WebSockets por TLS

time

A hora em que o load balancer gerou uma resposta para o cliente, no formato ISO 8601. Para WebSockets, esse é o momento em que a conexão é fechada.

elb

O ID de recursos do load balancer. Se você estiver analisando entradas no log de acesso, observe que as IDs dos recursos podem conter barras (/).

client:port

O endereço IP e porta do cliente solicitante.

target:port

O endereço IP e porta do destino que processou essa solicitação.

Se o cliente não enviar uma solicitação completa, o load balancer não poderá despachar a solicitação a um destino e esse valor será definido como -.

Se o destino for uma função Lambda, esse valor é definido como -.

Se a solicitação for bloqueada por AWS WAF, este valor será definido como - e o valor do elb_status_code será definido como 403.

request_processing_time

O tempo total (em segundos, com precisão de milissegundos) decorrido desde o momento em que o load balancer recebeu a solicitação até o momento em que ele enviou a solicitação a um destino.

Esse valor será configurado como -1 se o load balancer não conseguir despachar a solicitação a um destino. Isso pode acontecer se o destino fechar a conexão antes de o tempo limite de inatividade ou se o cliente enviar uma solicitação malformada.

Esse valor também pode ser configurado como –1 se o destino registrado não responder antes do tempo limite de inatividade.

target_processing_time

O tempo total (em segundos, com precisão de milissegundos) decorrido desde o momento em que o load balancer enviou a solicitação a um destino até que o destino começar a enviar os cabeçalhos de resposta.

Esse valor será configurado como -1 se o load balancer não conseguir despachar a solicitação a um destino. Isso pode acontecer se o destino fechar a conexão antes de o tempo limite de inatividade ou se o cliente enviar uma solicitação malformada.

Esse valor também pode ser configurado como –1 se o destino registrado não responder antes do tempo limite de inatividade.

response_processing_time

O tempo total decorrido (em segundos, com precisão de milissegundos) desde o momento em que o load balancer recebeu o cabeçalho de resposta do destino até que ele começou a enviar a resposta ao cliente. Isso inclui o tempo de fila no load balancer e o tempo de aquisição de conexão do load balancer ao cliente.

Esse valor será configurado como -1 se o load balancer não conseguir enviar a solicitação a um destino. Isso pode acontecer se o destino fechar a conexão antes de o tempo limite de inatividade ou se o cliente enviar uma solicitação malformada.

elb_status_code

O código de status de resposta do load balancer.

target_status_code

O código de status da resposta do destino. Esse valor só será registrado se tiver sido estabelecida uma conexão ao destino e o destino tiver enviado uma resposta. Caso contrário, ele será definido como -.

received_bytes

O tamanho da solicitação, em bytes, recebida do cliente (solicitante). Para solicitações HTTP, isso inclui os cabeçalhos. Para WebSockets, este é o número total de bytes recebidos do cliente na conexão.

sent_bytes

O tamanho da resposta, em bytes, enviada ao cliente (solicitante). Para solicitações HTTP, isso inclui os cabeçalhos. Para WebSockets, este é o número total de bytes enviados ao cliente na conexão.

"solicitação"

A linha de solicitação do cliente entre aspas duplas e registrada no seguinte formato: Método HTTP + protocol: //port/uri + versão HTTP. O load balancer preserva o URL enviado pelo cliente, da forma como se encontra, ao gravar o URI da solicitação. Ele não define o tipo de conteúdo para o arquivo do log de acesso. Ao processar esse campo, considere como o cliente enviou o URL.

"user_agent"

Uma string usuário-agente que identifica o cliente que originou a solicitação entre aspas duplas. A string consiste em um ou mais identificadores de produto, produto[/versão]. Se a string tiver mais de 8 KB, ela ficará truncada.

ssl_cipher

[Listener HTTPS] A cifra do SSL. Esse valor é definido como -, se o listener não for um listener HTTPS.

ssl_protocol

[Listener HTTPS] O protocolo SSL. Esse valor é definido como -, se o listener não for um listener HTTPS.

target_group_arn

O Nome de recurso da Amazon (ARN) do grupo de destino.

"trace_id"

O conteúdo do cabeçalho X-Amzn-Trace-Id em aspas duplas.

"domain_name"

[Listener HTTPS] O domínio SNI fornecido pelo cliente durante o handshake do TLS em aspas duplas. Esse valor será definido como - se o cliente não oferecer suporte a SNI ou o domínio não corresponder a um certificado e o certificado padrão for apresentado ao cliente.

"chosen_cert_arn"

[Listener HTTPS] O ARN do certificado apresentado ao cliente em aspas duplas. Esse valor é configurado como session-reused se a sessão for reutilizada. Esse valor é definido como -, se o listener não for um listener HTTPS.

matched_rule_priority

O valor de prioridade da regra que corresponde à solicitação. Se uma regra corresponde, este é um valor de 1 a 50.000. Se nenhuma regra corresponde e a ação padrão for executada, o valor é 0. Se ocorrer um erro durante a avaliação de regras, ele é definido como -1. Para qualquer outro erro, ele é definido como -.

request_creation_time

A hora em que o load balancer recebeu a solicitação do cliente, no formato ISO 8601.

"actions_executed"

As ações executadas ao processar a solicitação em aspas duplas. Esse valor é uma lista separada por vírgulas que pode incluir os valores descritos em Ações executadas. Se nenhuma ação foi executada, como para uma solicitação malformada, esse valor será definido como -.

"redirect_url"

O URL do destino do redirecionamento para o cabeçalho de localização da resposta HTTP, entre aspas duplas. Se nenhuma ação de redirecionamento foi realizada, o valor é definido como -.

"error_reason"

O código de motivo, entre aspas duplas. Se a solicitação falhou, esse é um dos códigos de erro descritas em Códigos de motivo do erro. Se as ações realizadas não incluírem uma ação de autenticação ou o destino não for uma função do Lambda, esse valor será definido como -.

"target:port_list"

Uma lista delimitada por espaços de endereços IP e portas para os destinos que processaram esta solicitação, entre aspas duplas. Atualmente, essa lista pode conter um item e corresponde ao campo target:port.

Se o cliente não enviar uma solicitação completa, o load balancer não poderá despachar a solicitação a um destino e esse valor será definido como -.

Se o destino for uma função Lambda, esse valor é definido como -.

Se a solicitação for bloqueada por AWS WAF, este valor será definido como - e o valor do elb_status_code será definido como 403.

"target_status_code_list"

Uma lista delimitada por espaços de códigos de status das respostas dos destinos, entre aspas duplas. Atualmente, essa lista pode conter um item e corresponde ao campo target_status_code.

Esse valor só será registrado se tiver sido estabelecida uma conexão ao destino e o destino tiver enviado uma resposta. Caso contrário, ele será definido como -.

“Classificação”

A classificação para mitigação de desync entre aspas duplas. Se a solicitação não estiver em conformidade com a RFC 7230, os valores possíveis serão Aceitáveis, Ambíguos e Severos.

Se a solicitação estiver em conformidade com o RFC 7230, esse valor será definido como -.

“classification_reason”

O código de motivo, entre aspas duplas. Se a solicitação não estiver em conformidade com a RFC 7230, esse é um dos códigos de classificação descritas emMotivos de classificação. Se a solicitação estiver em conformidade com o RFC 7230, esse valor será definido como -.

Ações executadas

O load balancer armazena as ações executadas no campo actions_executed do log de acesso.

  • authenticate— O load balancer validou a sessão, autenticou o usuário e adicionou as informações do usuário aos cabeçalhos da solicitação, conforme especificado pela configuração da regra.

  • fixed-response— O load balancer emitiu uma resposta fixa, conforme especificado pela configuração da regra.

  • forward— O load balancer encaminhou a solicitação para um destino, conforme especificado pela configuração da regra.

  • redirect— O load balancer redirecionou a solicitação para outro URL, conforme especificado pela configuração da regra.

  • waf— o load balancer encaminhou a solicitação paraAWS WAFPara determinar se a solicitação deve ser encaminhada para o destino. Se esta é a ação final, o AWS WAF determinou que o pedido deve ser rejeitado.

  • waf-failed— o load balancer tentou encaminhar a solicitação paraAWS WAF, mas esse processo falhou.

Motivos de classificação

Se uma solicitação não estiver em conformidade com a RFC 7230, o load balancer armazenará um dos códigos a seguir no campo classification_reason do log de acesso. Para obter mais informações, consulte Modo de mitigação da dessincronização.

Código Descrição Classificação

AmbiguousUri

O URI de solicitação contém caracteres de controle.

Ambíguo

BadContentLength

O cabeçalho Content-Length (Comprimento de conteúdo) contém um valor que não pode ser analisado ou não é um número válido.

Grave

BadHeader

Um cabeçalho contém um caractere nulo ou retorno de carro.

Grave

BadTransferEncoding

O cabeçalho Transfer-Encoding (Codificação de transferência) contém um valor inválido.

Grave

BadUri

O URI de solicitação contém um caractere nulo ou retorno de carro.

Grave

BadMethod

O método de solicitação está malformado.

Grave

BadVersion

A versão da solicitação está malformada.

Grave

BothTeClPresent

A solicitação contém um cabeçalho Transfer-Coding (Codificação de transferência) e um cabeçalho Content-Length (Comprimento de conteúdo).

Ambíguo

DuplicateContentLength

Há vários cabeçalhos Content-Length (Comprimento de conteúdo) com o mesmo valor.

Ambíguo

EmptyHeader

Um cabeçalho está vazio ou há uma linha com apenas espaços.

Ambíguo

GetHeadZeroContentLength

Há um cabeçalho Content-Length (Comprimento de conteúdo) com um valor de 0 para uma solicitação GET ou HEAD.

Aceitável

MultipleContentLength

Há vários cabeçalhos Content-Length (Comprimento de conteúdo) com valores diferentes.

Grave

MultipleTransferEncodingChunked

Há vários cabeçalhos Transfer-Coding (Codificação de transferência): cabeçalhos em bloco.

Grave

NonCompliantHeader

Um cabeçalho contém um caractere não ASCII ou de controle.

Aceitável

NonCompliantVersion

A versão de solicitação contém um valor incorreto.

Aceitável

SpaceInUri

O URI de solicitação contém um espaço que não é codificado por URL.

Aceitável

SuspiciousHeader

Há um cabeçalho que pode ser normalizado para Transfer-Enconding (Codificação de transferência) ou Content-Length (Comprimento de conteúdo) usando técnicas comuns de normalização de texto.

Ambíguo

UndefinedContentLengthSemantics

Não há cabeçalho Content-Length definido para uma solicitação GET ou HEAD.

Ambíguo

UndefinedTransferEncodingSemantics

Não há cabeçalho Transfer-Encoding definido para solicitação GET ou HEAD.

Ambíguo

Códigos de motivo do erro

Se o load balancer não puder concluir uma ação de autenticação, ele armazenará um dos seguintes códigos de motivo no campo error_reason do log de acesso. O load balancer também incrementa o correspondente CloudWatch Métrica do. Para obter mais informações, consulte Autenticar usuários usando um Application Load Balancer.

Código Descrição Métrica

AuthInvalidCookie

O cookie de autenticação não é válido.

ELBAuthFailure

AuthInvalidGrantError

O código de concessão de autorização do endpoint de token não é válido.

ELBAuthFailure

AuthInvalidIdToken

O token de ID não é válido.

ELBAuthFailure

AuthInvalidStateParam

O parâmetro de estado não é válido.

ELBAuthFailure

AuthInvalidTokenResponse

A resposta do endpoint de token não é válida.

ELBAuthFailure

AuthInvalidUserinfoResponse

A resposta do endpoint de informações do usuário não é válida.

ELBAuthFailure

AuthMissingCodeParam

A resposta de autenticação do endpoint de autorização não possui um parâmetro de consulta denominado "code".

ELBAuthFailure

AuthMissingHostHeader

A resposta de autenticação do endpoint de autorização não possui um campo de cabeçalho de host.

ELBAuthError

AuthMissingStateParam

A resposta de autenticação do endpoint de autorização não possui um parâmetro de consulta denominado "state".

ELBAuthFailure

AuthTokenEpRequestFailed

Há uma resposta de erro (não 2XX) do endpoint de token.

ELBAuthError

AuthTokenEpRequestTimeout

O load balancer não consegue se comunicar com o endpoint de token.

ELBAuthError

AuthUnhandledException

O load balancer encontrou uma exceção não gerenciada.

ELBAuthError

AuthUserinfoEpRequestFailed

Há uma resposta de erro (não 2XX) do endpoint de informações do usuário do IdP.

ELBAuthError

AuthUserinfoEpRequestTimeout

O load balancer não consegue se comunicar com o endpoint de informações do usuário do IdP.

ELBAuthError

AuthUserinfoResponseSizeExceeded

O tamanho das solicitações retornadas pelo IdP excedeu 11K bytes.

ELBAuthUserClaimsSizeExceeded

Se houver falha em uma solicitação para um grupo de destino ponderado, o load balancer armazenará um dos códigos de erro a seguir no campo error_reason do log de acesso.

Código Descrição

AWSALBTGCookieInvalid

O AWSALBTG O cookie, que é usado com grupos de destino ponderados, não é válido. Por exemplo, o load balancer retorna esse erro quando os valores de cookie são codificados por URL.

WeightedTargetGroupsUnhandledException

O load balancer encontrou uma exceção não gerenciada.

Se uma solicitação para uma função Lambda falhar, o load balancer armazena um dos seguintes códigos de motivo no campo error_reason do log de acesso. O load balancer também incrementa o correspondente CloudWatch Métrica do. Para obter mais informações, consulte a ação Invoke (Invocar) do Lambda.

Código Descrição Métrica

LambdaAccessDenied

O load balancer não tinha permissão para invocar a função Lambda.

LambdaUserError

LambdaBadRequest

Houve falha na invocação do Lambda porque os cabeçalhos ou o corpo da solicitação do cliente não continham somente caracteres UTF-8.

LambdaUserError

LambdaConnectionError

O load balancer não pode se conectar ao Lambda.

LambdaInternalError

LambdaConnectionTimeout

A tentativa de conexão com o Lambda expirou.

LambdaInternalError

LambdaEC2AccessDeniedException

O Amazon EC2 negou acesso ao Lambda durante a inicialização da função.

LambdaUserError

LambdaEC2ThrottledException

O Amazon EC2 limitou o Lambda durante a inicialização da função.

LambdaUserError

LambdaEC2UnexpectedException

O Amazon EC2 encontrou uma exceção inesperada durante a inicialização da função.

LambdaUserError

LambdaENILimitReachedException

O Lambda não pôde criar uma interface de rede na VPC especificada na configuração da função Lambda porque o limite para interfaces de rede foi excedido.

LambdaUserError

LambdaInvalidResponse

A resposta da função Lambda está malformada ou não possui campos obrigatórios.

LambdaUserError

LambdaInvalidRuntimeException

Não há suporte para a versão especificada do Lambda do.

LambdaUserError

LambdaInvalidSecurityGroupIDException

O ID do grupo de segurança especificado na configuração da função Lambda não é válido.

LambdaUserError

LambdaInvalidSubnetIDException

O ID de sub-rede especificado na configuração da função Lambda não é válido.

LambdaUserError

LambdaInvalidZipFileException

O Lambda não pôde descompactar o arquivo zip da função especificada.

LambdaUserError

LambdaKMSAccessDeniedException

O Lambda não pôde descriptografar variáveis de ambiente porque o acesso à chave KMS foi negado. Verifique as permissões do KMS da função Lambda.

LambdaUserError

LambdaKMSDisabledException

O Lambda não pôde descriptografar variáveis de ambiente porque a chave do KMS especificada está desabilitada. Verifique as configurações da chave do KMS da função Lambda.

LambdaUserError

LambdaKMSInvalidStateException

O Lambda não pôde descriptografar variáveis de ambiente porque o estado da chave do KMS não é válido. Verifique as configurações da chave do KMS da função Lambda.

LambdaUserError

LambdaKMSNotFoundException

O Lambda não pôde descriptografar variáveis de ambiente porque a chave do KMS não foi encontrada. Verifique as configurações da chave do KMS da função Lambda.

LambdaUserError

LambdaRequestTooLarge

O tamanho do corpo da solicitação excedeu 1 MB.

LambdaUserError

LambdaResourceNotFound

Não foi possível encontrar a função Lambda.

LambdaUserError

LambdaResponseTooLarge

O tamanho da resposta excedeu 1 MB.

LambdaUserError

LambdaServiceException

O Lambda encontrou um erro interno.

LambdaInternalError

LambdaSubnetIPAddressLimitReachedException

O Lambda não pôde configurar o acesso a VPC para a função Lambda porque uma ou mais sub-redes não possuem endereços IP disponíveis.

LambdaUserError

LambdaThrottling

A função Lambda foi limitada porque houve muitas solicitações.

LambdaUserError

LambdaUnhandled

A função Lambda encontrou uma exceção não gerenciada.

LambdaUserError

LambdaUnhandledException

O load balancer encontrou uma exceção não gerenciada.

LambdaInternalError

LambdaWebsocketNotSupported

Os WebSockets não são compatíveis com o Lambda.

LambdaUserError

Se o load balancer encontrar um erro ao encaminhar solicitações para o AWS WAF, ele armazenará um dos códigos de erro a seguir no campo error_reason do log de acesso.

Código Descrição

WAFConnectionError

O load balancer não pode se conectar ao AWS WAF.

WAFConnectionTimeout

A conexão com o AWS WAF atingiu o tempo limite.

WAFResponseReadTimeout

Uma solicitação para o AWS WAF atingiu o tempo limite.

WAFServiceError

O AWS WAF retornou um erro 5XX.

WAFUnhandledException

O load balancer encontrou uma exceção não gerenciada.

Exemplos

A seguir estão exemplo de entradas de log. Observe que o texto aparece em várias linhas apenas para facilitar a leitura.

Entrada HTTP de exemplo

A seguir está uma entrada no log de exemplo para um listener do HTTP (porta 80 para porta 80):

http 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 192.168.131.39:2817 10.0.0.1:80 0.000 0.001 0.000 200 200 34 366 "GET http://www.example.com:80/ HTTP/1.1" "curl/7.46.0" - - arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 "Root=1-58337262-36d228ad5d99923122bbe354" "-" "-" 0 2018-07-02T22:22:48.364000Z "forward" "-" "-" "10.0.0.1:80" "200" "-" "-"

Exemplo de entrada HTTPS

A seguir está uma entrada no log de exemplo para um listener HTTPS (porta 443 para porta 80):

https 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 192.168.131.39:2817 10.0.0.1:80 0.086 0.048 0.037 200 200 0 57 "GET https://www.example.com:443/ HTTP/1.1" "curl/7.46.0" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 "Root=1-58337281-1d84f3d73c47ec4e58577259" "www.example.com" "arn:aws:acm:us-east-2:123456789012:certificate/12345678-1234-1234-1234-123456789012" 1 2018-07-02T22:22:48.364000Z "authenticate,forward" "-" "-" "10.0.0.1:80" "200" "-" "-"

Entrada HTTP/2 de exemplo

A seguir está um exemplo de entrada de log para um fluxo de HTTP/2.

h2 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 10.0.1.252:48160 10.0.0.66:9000 0.000 0.002 0.000 200 200 5 257 "GET https://10.0.2.105:773/ HTTP/2.0" "curl/7.46.0" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 "Root=1-58337327-72bd00b0343d75b906739c42" "-" "-" 1 2018-07-02T22:22:48.364000Z "redirect" "https://example.com:80/" "-" "10.0.0.66:9000" "200" "-" "-"

Exemplo WebSockets Entry (Entrada)

Este é um exemplo de entrada de log para um WebSockets Conexão.

ws 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 10.0.0.140:40914 10.0.1.192:8010 0.001 0.003 0.000 101 101 218 587 "GET http://10.0.0.30:80/ HTTP/1.1" "-" - - arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 "Root=1-58337364-23a8c76965a2ef7629b185e3" "-" "-" 1 2018-07-02T22:22:48.364000Z "forward" "-" "-" "10.0.1.192:8010" "101" "-" "-"

Exemplo protegido WebSockets Entry (Entrada)

A seguir está um exemplo de entrada de log para uma conexão protegida no WebSockets.

wss 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 10.0.0.140:44244 10.0.0.171:8010 0.000 0.001 0.000 101 101 218 786 "GET https://10.0.0.30:443/ HTTP/1.1" "-" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 "Root=1-58337364-23a8c76965a2ef7629b185e3" "-" "-" 1 2018-07-02T22:22:48.364000Z "forward" "-" "-" "10.0.0.171:8010" "101" "-" "-"

Exemplo de entradas para as funções Lambda

A seguir, há um exemplo de entrada de log para uma solicitação de função Lambda que foi bem-sucedida:

http 2018-11-30T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 192.168.131.39:2817 - 0.000 0.001 0.000 200 200 34 366 "GET http://www.example.com:80/ HTTP/1.1" "curl/7.46.0" - - arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 "Root=1-58337364-23a8c76965a2ef7629b185e3" "-" "-" 0 2018-11-30T22:22:48.364000Z "forward" "-" "-" "-" "-" "-" "-"

A seguir, há um exemplo de entrada de log para uma solicitação de função Lambda que não foi bem-sucedida:

http 2018-11-30T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 192.168.131.39:2817 - 0.000 0.001 0.000 502 - 34 366 "GET http://www.example.com:80/ HTTP/1.1" "curl/7.46.0" - - arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 "Root=1-58337364-23a8c76965a2ef7629b185e3" "-" "-" 0 2018-11-30T22:22:48.364000Z "forward" "-" "LambdaInvalidResponse" "-" "-" "-" "-"

Permissões do bucket

Quando você habilitar o log de acesso, deverá especificar um bucket do S3 para os logs de acesso. O bucket deve atender aos seguintes requisitos:

Requisitos

  • O bucket deve estar localizado na mesma região que o load balancer.

  • O bucket deve ter uma política de bucket que conceda ao Elastic Load Balancing permissão para gravar os logs de acesso em seu bucket. As políticas de bucket são um conjunto de instruções JSON gravadas na linguagem de políticas de acesso para definir permissões de acesso para o seu bucket. Cada instrução inclui informações sobre uma única permissão e contém uma série de elementos.

Você pode habilitar a criptografia no lado do servidor para seu bucket de log de acesso do Amazon S3 usando Chaves de Criptografia Gerenciadas do Amazon S3 (SSE-S3).

Para obter mais informações, consulteProteção de dados usando criptografia no lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3)e noGuia do usuário do Amazon Simple Storage Service.

Opções

Use uma das opções a seguir para preparar um bucket do S3 para o registro de acesso em log.

  • Para criar um bucket e habilitar o registro de acesso em log usando o console do Elastic Load Balancing, passe paraHabilitar registro em log de acessoE selecione a opção para que o console crie o bucket e a política de bucket para você.

  • Para usar um bucket existente e adicionar a política de bucket necessária usando o console do Amazon S3, use o procedimento a seguir, mas ignore as etapas marcadas como “[Ignorar para usar bucket existente]”.

  • Para criar um bucket e adicionar a política de bucket necessária usando o console do Amazon S3 (por exemplo, se você estiver usando aAWS CLIou uma API para habilitar o registro de acesso), use o procedimento a seguir.

Para preparar um bucket do Amazon S3 para registro em log de acesso

  1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. [Ignorar para usar bucket existente] Selecione Create Bucket (Criar bucket).

  3. [Ignorar para usar bucket existente] Na página Criar bucket (Criar bucket) faça o seguinte:

    1. Para Bucket name (Nome do bucket), insira um nome para o bucket. Esse nome deve ser exclusivo entre todos os nomes de buckets existentes no Amazon S3. Em algumas regiões, talvez haja restrições adicionais quanto a nomes de buckets. Para obter mais informações, consulte Restrições e limitações de bucket no Manual do usuário do Amazon Simple Storage Service.

    2. Em Region (Região), selecione a Região em que você criou seu load balancer.

    3. Escolha Create (Criar).

  4. Selecione o bucket. Escolha Permissions (Permissões) e escolha Bucket Policy (Política de bucket).

  5. Se você estiver criando uma nova política de bucket, copie todo o documento de política para o editor de políticas e substitua os espaços reservados pelas informações correspondentes. Se você estiver editando uma política de bucket existente, copie apenas a nova instrução do documento de política (o texto entre [ e ] do elemento Statement).

    [Zonas de disponibilidade e Local Zones] Use a política a seguir. Atualize os espaços reservados para o nome e o prefixo do seu bucket, o ID doAWSconta para Elastic Load Balancing (com base na Região do seu balanceador de carga) e o ID doAWSconta.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::elb-account-id:root" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket-name/prefix/AWSLogs/your-aws-account-id/*" }, { "Effect": "Allow", "Principal": { "Service": "logdelivery.elb.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::bucket-name" } ] }

    A tabela a seguir contém os IDs de conta a serem usados no lugar do elb-account-id na política de bucket.

    Região Nome da região ID da conta do Elastic Load Balancing
    us-east-1 Leste dos EUA (Norte da Virgínia) 127311923021
    us-east-2 Leste dos EUA (Ohio) 033677994240
    us-west-1 US West (N. California) 027434742980
    us-west-2 Oeste dos EUA (Oregon) 797873946194
    af-south-1 Africa (Cape Town) 098369216593
    ca-central-1 Canada (Central) 985666609251
    eu-central-1 Europa (Frankfurt) 054676820928
    eu-west-1 Europa (Irlanda) 156460612806
    eu-west-2 Europa (Londres) 652711504416
    eu-south-1 Europe (Milan) 635631232127
    eu-west-3 Europa (Paris) 009996457667
    eu-north-1 Europe (Stockholm) 897822967062
    ap-east-1 Asia Pacific (Hong Kong) 754344448648
    ap-northeast-1 Ásia-Pacífico (Tóquio) 582318560864
    ap-northeast-2 Ásia-Pacífico (Seul) 600734575887
    ap-northeast-3 Asia Pacific (Osaka) 383597477331
    ap-southeast-1 Ásia-Pacífico (Cingapura) 114774131450
    ap-southeast-2 Ásia-Pacífico (Sydney) 783225319266
    ap-southeast-3 Ásia-Pacífico (Jacarta) 589379963580
    ap-south-1 Asia Pacific (Mumbai) 718504428378
    me-south-1 Middle East (Bahrain) 076674570225
    sa-east-1 América do Sul (São Paulo) 507241528517
    us-gov-west-1* AWS GovCloud (US-West) 048591011584
    us-gov-east-1* AWS GovCloud (Leste dos EUA) 190560391635
    cn-north-1* China (Beijing) 638102146993
    cn-northwest-1* China (Ningxia) 037604701340

    * Essas Regiões requerem uma conta separada. Para obter mais informações, consulteAWS GovCloud (US-West)eChina (Beijing).

    [Outpost] Use a seguinte política. Atualize os espaços reservados para o nome e o prefixo do seu bucket e o ID doAWSconta.

    { "Effect": "Allow", "Principal": { "Service": "logdelivery.elb.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket-name/prefix/AWSLogs/your-aws-account-id/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }
  6. Escolha Save (Salvar).

Habilitar registro em log de acesso

Ao habilitar os registro de acesso em logs para o load balancer, você deve especificar o nome do bucket do S3 onde o load balancer armazenará os logs. O bucket deverá estar na mesma região que o load balancer e ter uma política de bucket que conceda ao Elastic Load Balancing permissão para gravar os logs de acesso no bucket. O bucket pode pertencer a uma conta diferente daquela que controla o load balancer.

Para habilitar o registro de logs de acesso usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Load Balancers.

  3. Selecione seu load balancer.

  4. Na guia Descrição, selecione Editar atributos.

  5. Na página Editar atributos do load balancer, faça o seguinte:

    1. Para Access logs (Logs de acesso), selecione Enable (Habilitar).

    2. para oLocalização do S3, insira o nome do seu bucket do S3, incluindo qualquer prefixo (por exemplo,my-loadbalancer-logs/my-app). Você pode especificar o nome de um bucket existente ou um nome para um novo bucket. Se você especificou um bucket existente, certifique-se de que possui esse bucket e de que configurou a política de bucket necessária.

    3. (Opcional) Se o bucket não existir, selecione Criar este local para mim. Você deve especificar um nome exclusivo entre todos os nomes de buckets existentes no Amazon S3 e seguir as convenções de nomeação do DNS. Para obter mais informações, consulte as Regras para nomear buckets no Manual do usuário do Amazon Simple Storage Service.

    4. Escolha Save (Salvar).

Para habilitar o log de acesso usando a AWS CLI

Use o comando modify-load-balancer-attributes.

Para verificar se o Elastic Load Balancing criou um arquivo de teste no seu bucket do S3

Depois de habilitar o registro de acessos para seu load balancer, o Elastic Load Balancing validará o bucket do S3 e criará um arquivo de teste para garantir que a política do bucket especifique as permissões necessárias. Você pode usar o console do Amazon S3 para verificar se o arquivo de teste foi criado. O arquivo de teste não é um arquivo de log de acesso real; ele não contém exemplos de registros.

  1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Em Todos os buckets, selecione o seu bucket do S3.

  3. Navegue até o bucket que você especificou para o registro de acesso em log e procure ELBAccessLogTestFile. Por exemplo, se você tiver usado o console para criar o bucket e a política de bucket, o caminho será o seguinte:

    my-bucket/prefix/AWSLogs/123456789012/ELBAccessLogTestFile

Gerenciar o bucket do S3 para os logs de acesso

Após habilitar o registro de acesso em logs, lembre-se de desabilitá-lo antes de excluir o bucket com os logs de acesso. Caso contrário, se houver um novo bucket com o mesmo nome, e a política de bucket necessária, mas criada em umAWSPor conta da que não seja a sua, o Elastic Load Balancing poderá gravar os logs de acesso do seu load balancer nesse novo bucket.

Desabilitar registro em log de acesso

Você pode desabilitar o registro de acesso em logs para seu load balancer a qualquer momento. Depois de desabilitar o registro de acesso, seus logs permanecerão no seu bucket do S3 até que você os exclua. Para obter mais informações, consulteTrabalhar com bucketsnoGuia do usuário do Amazon Simple Storage Service.

Para desabilitar o registro de logs de acesso usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Load Balancers.

  3. Selecione seu load balancer.

  4. Na guia Descrição, selecione Editar atributos.

  5. Em Access logs (Logs de acesso), desmarque Enable (Habilitar).

  6. Escolha Save (Salvar).

Para desabilitar o registro de logs de acesso usando a AWS CLI

Use o comando modify-load-balancer-attributes.

Processar arquivos de log de acesso

Os arquivos de log de acesso são compactados. Se você abrir os arquivos usando o console do Amazon S3, eles serão descompactados e as informações serão exibidas. Se você baixar os arquivos, deverá descompactá-los para visualizar as informações.

Se houver uma grande demanda no seu site, o load balancer poderá gerar arquivos de log com gigabytes de dados. Você pode não conseguir processar uma quantidade tão grande de dados usando o line-by-line Processamento. Assim, pode ter de usar ferramentas analíticas que forneçam soluções de processamento paralelo. Por exemplo, você pode usar as ferramentas analíticas a seguir para analisar e processar logs de acesso: