Logs de conexão para o Application Load Balancer - Elastic Load Balancing

Logs de conexão para o Application Load Balancer

O Elastic Load Balancing fornece logs de conexão que capturam informações detalhadas sobre as solicitações enviadas ao balanceador de carga. Cada log contém informações como o endereço IP e a porta do cliente, a porta do receptor, a cifra e o protocolo TLS usados, a latência do handshake do TLS, o status da conexão e os detalhes do certificado do cliente. Você pode usar esses logs de conexão para analisar padrões de solicitação e solucionar problemas.

Os logs de conexão são um recurso opcional do Elastic Load Balancing que está desabilitado por padrão. Após habilitar os logs de conexão para o balanceador de carga, o Elastic Load Balancing capturará os logs e os armazenará como arquivos compactados no bucket do Amazon S3 que você especificar. Você pode desabilitar os logs de conexão a qualquer momento.

Você receberá cobranças pelos custos de armazenamento do Amazon S3, mas não haverá cobranças 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, consulte Preços do Amazon S3.

Arquivos de log de conexão

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 conexão usam o seguinte formato:

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

O nome do bucket do S3.

prefixo

(Opcional) O prefixo (hierarquia lógica) no bucket. O prefixo especificado não pode incluir a string AWSLogs. Para mais informações, consulte Organizar objetos usando prefixos.

AWSLogs

Adicionamos a parte do nome do arquivo que começa com AWSLogs após o nome do bucket e o prefixo opcional que você especificar.

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, a hora final de 20140215T2340Z contém entradas para solicitações feitas entre 23h35 e 23h40 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.

Veja um exemplo de um nome de arquivo de log com um prefixo:

s3://amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2022/05/01/conn_log_123456789012_elasticloadbalancing_us-east-2_app.my-loadbalancer.1234567890abcdef_20220215T2340Z_172.160.001.192_20sg8hgm.log.gz

Veja um exemplo de um nome de arquivo de log sem um prefixo:

s3://amzn-s3-demo-logging-bucket/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2022/05/01/conn_log_123456789012_elasticloadbalancing_us-east-2_app.my-loadbalancer.1234567890abcdef_20220215T2340Z_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 o Gerenciamento do ciclo de vida do objeto no Guia do usuário do Amazon S3.

Entradas de log de conexão

Cada tentativa de conexão tem uma entrada em um arquivo de log de conexão. A forma como as solicitações do cliente são enviadas é determinada pela conexão ser persistente ou não persistente. As conexões não persistentes têm uma única solicitação, que cria uma única entrada no log de acesso e no log de conexão. As conexões persistentes têm várias solicitações, o que cria várias entradas no log de acesso e uma única entrada no log de conexão.

Sintaxe

A tabela a seguir descreve os campos de uma entrada no log de conexão, em ordem. Todos os campos são delimitados por espaços. Quando adicionamos um novo campo, o adicionamos ao final da entrada de log. Enquanto preparamos o lançamento de um novo campo, você pode ver um “-” adicional no final antes que o campo seja lançado. Certifique-se de configurar a análise de log para que pare após o último campo documentado e para que atualize a análise de log após o lançamento de um novo campo.

Campo (posição) Descrição

timestamp (1)

O horário, em formato ISO 8601, em que o balanceador de carga estabeleceu com êxito ou não conseguiu estabelecer uma conexão.

client_ip (2)

O endereço IP do cliente solicitante.

client_port (3)

A porta do cliente solicitante.

listener_port (4)

A porta do receptor do balanceador de carga que está recebendo a solicitação do cliente.

tls_protocol (5)

[Receptor HTTPS] O protocolo SSL/TLS usado durante handshakes. Esse campo está definido como - em solicitações que não sejam SSL/TLS.

tls_cipher (6)

[Receptor HTTPS] O protocolo SSL/TLS usado durante handshakes. Esse campo está definido como - em solicitações que não sejam SSL/TLS.

tls_handshake_latency (7)

[Receptor HTTPS] O tempo total em segundos, com precisão de milissegundos, decorreu ao estabelecer um handshake. Este campo está definido como - quando:

  • A solicitação recebida não é uma solicitação SSL/TLS.

  • O handshake não foi estabelecido com êxito.

leaf_client_cert_subject (8)

[Receptor HTTPS] O nome do assunto do certificado folha do cliente. Este campo está definido como - quando:

  • A solicitação recebida não é uma solicitação SSL/TLS.

  • O receptor do balanceador de carga não está configurado com o mTLS habilitado.

  • O servidor não consegue carregar ou analisar o certificado folha do cliente.

leaf_client_cert_validity (9)

[Receptor HTTPS] A validade, com not-before e not-after no formato ISO 8601, do certificado folha do cliente. Este campo está definido como - quando:

  • A solicitação recebida não é uma solicitação SSL/TLS.

  • O receptor do balanceador de carga não está configurado com o mTLS habilitado.

  • O servidor não consegue carregar ou analisar o certificado folha do cliente.

leaf_client_cert_serial_number (10)

[Receptor HTTPS] O número de série do certificado folha do cliente. Este campo está definido como - quando:

  • A solicitação recebida não é uma solicitação SSL/TLS.

  • O receptor do balanceador de carga não está configurado com o mTLS habilitado.

  • O servidor não consegue carregar ou analisar o certificado folha do cliente.

tls_verify_status (11)

[Receptor HTTPS] O status da solicitação de conexão. Esse valor é Success se a conexão for estabelecida com exito. Em uma conexão malsucedida, o valor é Failed:$error_code.

conn_trace_id (12)

O ID de rastreabilidade da conexão é um ID opaco exclusivo usado para identificar cada conexão. Depois que uma conexão for estabelecida com um cliente, as solicitações subsequentes desse cliente contêm esse ID em suas respectivas entradas de log de acesso. Esse ID atua como uma chave estrangeira para criar um link entre os logs de conexão e acesso.

Códigos de motivo de erro

Se o balanceador de carga não conseguir estabelecer uma conexão, ele armazenará um dos seguintes códigos de motivo no log de conexão.

Código Descrição

ClientCertMaxChainDepthExceeded

A profundidade máxima da cadeia de certificados do cliente foi excedida

ClientCertMaxSizeExceeded

O tamanho máximo do certificado do cliente foi excedido

ClientCertCrlHit

O certificado do cliente foi revogado pela CA

ClientCertCrlProcessingError

Erro de processamento da CRL

ClientCertUntrusted

O certificado do cliente não é confiável

ClientCertNotYetValid

O certificado do cliente ainda não é válido

ClientCertExpired

O certificado do cliente está expirado

ClientCertTypeUnsupported

O tipo de certificado do cliente não é compatível

ClientCertInvalid

O certificado do cliente é inválido

ClientCertPurposeInvalid

A finalidade do certificado do cliente é inválida

ClientCertRejected

O certificado do cliente foi rejeitado pela validação do servidor personalizado

UnmappedConnectionError

Erro de conexão de runtime não mapeado

Exemplo de entradas de log

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

Confira a seguir um exemplo de entrada de log para uma conexão bem-sucedida com um receptor HTTPS com o modo de verificação de TLS mútuo habilitado na porta 443.

2023-10-04T17:05:15.514108Z 203.0.113.1 36280 443 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 4.036 "CN=amazondomains.com,O=endEntity,L=Seattle,ST=Washington,C=US" NotBefore=2023-09-21T22:43:21Z;NotAfter=2026-06-17T22:43:21Z FEF257372D5C14D4 Success TID_3180a73013c8ca4bac2f731159d4b0fe

Confira a seguir um exemplo de entrada de log para uma conexão malsucedida com um receptor HTTPS com o modo de verificação de TLS mútuo habilitado na porta 443.

2023-10-04T17:05:15.514108Z 203.0.113.1 36280 443 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 - "CN=amazondomains.com,O=endEntity,L=Seattle,ST=Washington,C=US" NotBefore=2023-09-21T22:43:21Z;NotAfter=2026-06-17T22:43:21Z FEF257372D5C14D4 Failed:ClientCertUntrusted TID_1c71a68d70587445ad5127ff8b2687d7

Processamento dos arquivos de log de conexão

Os arquivos de log de conexão 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 processamento linha por linha. Assim, pode ter de usar ferramentas analíticas que forneçam soluções de processamento paralelo. Por exemplo, você pode usar as seguintes ferramentas analíticas para analisar e processar logs de conexão:

  • O Amazon Athena é um serviço de consultas interativas que facilita a análise de dados no Amazon S3 usando SQL padrão.

  • Loggly

  • Splunk

  • Sumo logic