Logs de acesso do Network 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 Network Load Balancer

O Elastic Load Balancing fornece registros de acesso que capturam informações detalhadas sobre as conexões TLS estabelecidas com seu Network Load Balancer. Você pode usar esses logs de acesso para analisar padrões de tráfego e solucionar problemas.

Importante

Os registros de acesso são criados somente quando o Network Load Balancer tem um ouvinte TLS e contêm informações somente sobre conexões TLS.

O registro de logs de acesso é um recurso opcional do Elastic Load Balancing e é desabilitado por padrão. Depois de habilitar o registro de logs de acesso para o balanceador de carga, o Elastic Load Balancing captura os logs como arquivos compactados e os armazena no bucket do Amazon S3 que você especificar. Você pode desativar o registro de acesso a qualquer momento.

É possível habilitar a criptografia no lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) ou usando o Key Management Service com chaves gerenciadas pelo cliente (SSE-KMS CMK) para o bucket do S3. Cada arquivo de log de acesso é automaticamente criptografado antes de ser armazenado no seu bucket do S3 e descriptografado quando você o acessar. Você não precisa tomar nenhuma ação, pois não há diferença na forma como você acessa arquivos de log criptografados ou não criptografados. Cada arquivo de log é criptografado com uma chave exclusiva, que por sua vez é criptografada com uma chave KMS que é rotacionada regularmente. Para obter mais informações, consulte Especificação da criptografia do Amazon S3 (SSE-S3) e Especificação da criptografia do lado do servidor com (SSE-KMS) no Guia do usuário do Amazon AWS KMS S3.

Não há cobrança adicional pelos logs de acesso. Os custos de armazenamento do Amazon S3 são cobrados de você, mas não é cobrada a 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, consulte Definiçã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 balanceador de carga 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_net.load-balancer-id_end-time_random-string.log.gz
bucket

O nome do bucket do S3.

prefix

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 Conta da AWS ID 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 20181220T2340Z contém entradas para solicitações feitas entre 23:35 e 23:40.

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/2020/05/01/123456789012_elasticloadbalancing_us-east-2_net.my-loadbalancer.1234567890abcdef_20200501T0000Z_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 Gerenciar o ciclo de vida de armazenamento no Guia do usuário do Amazon S3.

Entradas do log de acesso

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. Ao processar os arquivos de log, você deverá ignorar quaisquer campos no final da entrada de log que não sejam esperados.

Campo Descrição

tipo

O tipo de listener. O valor suportado é tls.

versão

A versão da entrada de log. A versão atual é 2.0.

horário

A hora registrada ao final da conexão TLS, no formato ISO 8601.

elb

O ID de recursos do load balancer.

listener

O ID do recurso do listener TLS para a conexão.

client:port

O endereço IP e a porta do cliente.

destination:port

O endereço IP e a porta do destino. Se o cliente se conectar diretamente ao load balancer, o destino será o listener. Se o cliente se conectar usando um serviço de VPC endpoint, o destino será o VPC endpoint.

connection_time

O tempo total para a conexão ser concluída, do início ao encerramento, em milissegundos.

tls_handshake_time

O tempo total para o handshake TLS ser concluído depois que a conexão TCP for estabelecida, incluindo atrasos no lado do cliente, em milissegundos. Esse tempo está incluído no campo connection_time.

received_bytes

A contagem de bytes recebidos pelo load balancer do cliente, após a descriptografia.

sent_bytes

A contagem de bytes enviados pelo load balancer para o cliente, antes da criptografia.

incoming_tls_alert

O valor inteiro de alertas TLS recebidos pelo load balancer do cliente, se estiver presente. Caso contrário, o valor será definido como -.

chosen_cert_arn

O ARN do certificado fornecido ao cliente. Se nenhuma mensagem Hello válida do cliente for enviada, esse valor será definido como -.

chosen_cert_serial

Reservado para uso futuro. Esse valor é sempre definido como -.

tls_cipher

O pacote de criptografia negociado com o cliente, no formato OpenSSL. Se a negociação de TLS não for concluída, esse valor será definido como -.

tls_protocol_version

O protocolo TLS negociado com o cliente, no formato de string. Os valores possíveis são tlsv10, tlsv11, tlsv12 e tlsv13. Se a negociação de TLS não for concluída, esse valor será definido como -.

tls_named_group

Reservado para uso futuro. Esse valor é sempre definido como -.

domain_name

O valor da extensão do cliente server_name na mensagem Hello. Esse valor é codificado em URL. Se nenhuma mensagem Hello válida do cliente for enviada ou a extensão não estiver presente, esse valor será definido como -.

alpn_fe_protocol

O protocolo de aplicativo negociado com o cliente, no formato de string. Os valores possíveis são h2, http/1.1 e http/1.0. Se nenhuma política ALPN estiver configurada no listener TLS, nenhum protocolo correspondente será encontrado, ou se nenhuma lista de protocolos válidos for enviada, esse valor será definido como -.

alpn_be_protocol

O protocolo de aplicativo negociado com o destino, no formato de string. Os valores possíveis são h2, http/1.1 e http/1.0. Se nenhuma política ALPN estiver configurada no listener TLS, nenhum protocolo correspondente será encontrado, ou se nenhuma lista de protocolos válidos for enviada, esse valor será definido como -.

alpn_client_preference_list

O valor da extensão application_layer_protocol_negotiation na mensagem Hello do cliente. Esse valor é codificado em URL. Cada protocolo está entre aspas duplas, e os protocolos são separados por uma vírgula. Se nenhuma política ALPN estiver configurada no listener TLS, nenhuma mensagem Hello válida do cliente será enviada, ou se a extensão não estiver presente, esse valor será definido como -. A string será truncada se for maior do que 256 bytes.

tls_connection_creation_time

A hora registrada no início da conexão TLS, no formato ISO 8601.

Exemplo de entradas de log

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

Veja a seguir um exemplo de um listener TLS sem uma política ALPN.

tls 2.0 2018-12-20T02:59:40 net/my-network-loadbalancer/c6e77e28c25b2234 g3d4b5e8bb8464cd 72.21.218.154:51341 172.100.100.185:443 5 2 98 246 - arn:aws:acm:us-east-2:671290407336:certificate/2a108f19-aded-46b0-8493-c63eb1ef4a99 - ECDHE-RSA-AES128-SHA tlsv12 - my-network-loadbalancer-c6e77e28c25b2234.elb.us-east-2.amazonaws.com - - - 2018-12-20T02:59:30

Veja a seguir um exemplo de um listener TLS com uma política ALPN.

tls 2.0 2020-04-01T08:51:42 net/my-network-loadbalancer/c6e77e28c25b2234 g3d4b5e8bb8464cd 72.21.218.154:51341 172.100.100.185:443 5 2 98 246 - arn:aws:acm:us-east-2:671290407336:certificate/2a108f19-aded-46b0-8493-c63eb1ef4a99 - ECDHE-RSA-AES128-SHA tlsv12 - my-network-loadbalancer-c6e77e28c25b2234.elb.us-east-2.amazonaws.com h2 h2 "h2","http/1.1" 2020-04-01T08:51:20

Requisitos do bucket

Quando você habilitar o log de acesso, deverá especificar um bucket do S3 para os logs de acesso. O bucket pode pertencer a uma conta diferente daquela que controla o load balancer. O bucket deve atender aos seguintes requisitos:

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

  • O prefixo especificado não deve incluir AWSLogs. Adicionamos a parte do nome do arquivo que começa com AWSLogs após o nome do bucket e o prefixo que você especificar.

  • O bucket deve ter uma política de bucket que conceda 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. Veja abaixo um exemplo de política .

    { "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::my-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["012345678912"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:012345678912:*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-bucket/AWSLogs/account-ID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["012345678912"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:012345678912:*"] } } } ] }

Na política anterior, em aws:SourceAccount, especifique a lista de números de conta para os quais os logs estão sendo entregues a esse bucket. Para aws:SourceArn, especifique a lista de ARNs do recurso que gera os logs, no formulário arn:aws:logs:source-region:source-account-id:*.

Criptografia

Você pode habilitar a criptografia do lado do servidor para o bucket do log de acesso do Amazon S3 de uma das seguintes formas:

  • Chaves gerenciadas pelo Amazon S3 (SSE-S3)

  • AWS KMS chaves armazenadas em AWS Key Management Service (SSE-KMS) †

† Com os registros de acesso do Network Load Balancer, você não pode usar chaves AWS gerenciadas, você deve usar chaves gerenciadas pelo cliente.

Para obter mais informações, consulte Especificação da criptografia do Amazon S3 (SSE-S3) e Especificação da criptografia do lado do servidor com (SSE-KMS) no Guia do usuário do Amazon AWS KMS S3.

A política de chave deve permitir que o serviço criptografe e descriptografe os logs. Veja abaixo um exemplo de política .

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] }

Habilitar registro em log de acesso

Ao habilitar os registros em log de acesso para o balanceador de carga, você deve especificar o bucket do S3 em que o balanceador de carga armazenará os logs. Certifique-se de que você possui esse bucket e que configurou a política de bucket necessária para este bucket. Para ter mais informações, consulte Requisitos do bucket.

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 o nome do balanceador de carga para abrir sua página de detalhes.

  4. Na guia Atributos, escolha Editar.

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

    1. Em Monitoramento, ative os Logs de acesso.

    2. Escolha Procurar no S3 e selecione um bucket para ser usado. Como alternativa, insira a localização do bucket do S3, incluindo qualquer prefixo.

    3. Escolha Salvar alterações.

Para habilitar o registro de acesso usando o AWS CLI

Use o comando modify-load-balancer-attributes.

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 log de acesso, seus logs permanecerão no seu bucket do S3 até que você os exclua. Para obter mais informações, consulte Trabalhar com buckets no Guia 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 o nome do balanceador de carga para abrir sua página de detalhes.

  4. Na guia Atributos, escolha Editar.

  5. Em Monitoramento, desative os Logs de acesso.

  6. Escolha Salvar alterações.

Para desativar o registro de acesso usando o 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. Talvez você não consiga 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: