Consulta de logs com o CloudWatch Logs Insights
O CloudWatch Logs Insights permite pesquisar e analisar os dados de log de acesso ao servidor de modo interativo. As consultas são executadas no grupo de logs em que seus logs são entregues e retornam os resultados em segundos.
nota
Para consultar logs entregues a um bucket de uso geral do Amazon S3, consulte Consultar logs de acesso para solicitações usando o Amazon Athena. Para consultar o espelhamento de Tabelas do S3 com SQL, consulte Consulta de logs de acesso nas Tabelas do S3.
Introdução
-
Abra o console do CloudWatch, em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, escolha Logs e Logs Insights.
-
Selecione seu grupo de logs de acesso ao servidor no seletor.
-
Escolha um intervalo de tempo para a consulta.
-
Insira uma consulta e selecione Executar consulta.
Análise de tráfego
As consultas a seguir ajudam você a entender o volume de solicitações e os padrões de tráfego.
exemplo Volume de solicitações ao longo do tempo
stats count(*) as requests by bin(5m) as interval | sort interval asc
exemplo Mistura de solicitações por tipo de operação
stats count(*) as cnt by operation | sort cnt desc
exemplo Tráfego por bucket
stats count(*) as requests, sum(bytes_sent_size) as bytes_out by bucket_arn | sort requests desc
Solução de erros
As consultas a seguir ajudam você a identificar e diagnosticar erros.
exemplo Detalhamento da taxa de erros
filter http_status >= 400 | stats count(*) as error_count by http_status, error_code, operation | sort error_count desc
exemplo Solicitações de 403 Acesso negado
filter http_status = 403 | stats count(*) as denied_count by key_name, remote_ip, requester | sort denied_count desc
exemplo Solicitações de 404 Não encontrado
filter http_status = 404 | stats count(*) as miss_count by key_name, error_code, remote_ip | sort miss_count desc
exemplo Eventos 503 Lentidão (controle de utilização)
filter http_status = 503 | stats count(*) as throttle_count by key_name, remote_ip | sort throttle_count desc
Padrões de acesso
As consultas a seguir ajudam você a entender quem está acessando seus dados e como.
exemplo Tráfego por IP de origem
stats count(*) as total_requests, sum(http_status >= 400) as errors, sum(bytes_sent_size) as bytes_transferred by remote_ip | sort total_requests desc
exemplo Operações por solicitante
stats count(*) as requests by requester, operation | sort requests desc
exemplo Chaves mais acessadas
filter operation like /REST\.(GET|PUT)\.OBJECT/ | stats count(*) as access_count, sum(bytes_sent_size) as bytes_out by key_name | sort access_count desc | limit 10
Análise de latência
As consultas a seguir ajudam você a identificar solicitações lentas e tendências de latência.
exemplo Latência por tipo de operação
filter operation like /REST\.(GET|PUT)\.OBJECT/ | stats avg(total_duration) as avg_ms, pct(total_duration, 50) as p50_ms, pct(total_duration, 95) as p95_ms, max(total_duration) as max_ms, count(*) as requests by operation
exemplo Teclas mais lentas por latência de p95
filter operation like /REST\.GET\.OBJECT/ | stats avg(total_duration) as avg_ms, pct(total_duration, 95) as p95_ms, count(*) as requests by key_name | sort p95_ms desc | limit 10
exemplo Latência ao longo do tempo
filter operation like /REST\.(GET|PUT)\.OBJECT/ | stats avg(total_duration) as avg_ms, pct(total_duration, 95) as p95_ms by bin(5m) as interval | sort interval asc
Atribuição de custos
As consultas a seguir ajudam você a entender a transferência de dados e identificar fatores de custo.
exemplo Transferência de dados por operação
filter operation like /REST\.(GET|PUT|DELETE)\.OBJECT/ | stats sum(bytes_sent_size) as total_bytes_out, sum(object_size) as total_object_bytes, count(*) as request_count by operation | sort total_bytes_out desc
exemplo Maiores objetos veiculados
filter operation like /REST\.GET\.OBJECT/ and bytes_sent_size > 0 | stats max(object_size) as max_size, avg(object_size) as avg_size, count(*) as reads by key_name | sort max_size desc | limit 10
Análise de segurança
As consultas a seguir ajudam você a detectar padrões de acesso suspeitos.
exemplo IPs com altas taxas de erros
stats count(*) as total, sum(http_status >= 400) as errors by remote_ip | filter errors > 10 | sort errors desc
exemplo Tentativas de acesso com falha por chave
filter http_status >= 400 | stats count(*) as attempts by remote_ip, key_name, operation, http_status | sort attempts desc | limit 20
exemplo Distribuição da versão TLS
stats count(*) as cnt by tls_version | sort cnt desc