Você pode tentar isso, espero que funcione, se você nos der um exemplo de arquivo de log, eu posso verificar se ele funciona
awk '{cnt[$7]+=substr($12,1+match($12,"/")); i[$7]+=1}END{for (x in cnt){print x,cnt[x]/i[x]}}' access_log
Estou procurando páginas que são lentas em um grande site personalizado de PHP CMS.
Não quero cavar no código mal documentado existente e descobri que os logs de acesso do apache podem exibir o tempo gasto para atender à solicitação, em segundos e milissegundos.
Conf:
CustomLog /var/log/httpd/timed_access_log timed
LogFormat "%h %l %u %t \"%r\" %>s %b - %T/%D" timed
Saída:
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /menu/topscript/ HTTP/1.1" 200 183 - 0/12418
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /search/script/ HTTP/1.1" 200 266 - 0/13173
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /subscribe/script/ HTTP/1.1" 200 279 - 0/12882
Existe uma maneira fácil de encontrar as principais solicitações lentas?
Interessado em programas de análise como awstats ou um script awk (que eu nunca consegui entender).
Relacionados: AWStats e tempo gasto para atender à solicitação
Minha solução final, baseada na resposta do raio:
awk '{cnt[$7]+=substr($12,1+match($12,"/")); i[$7]+=1}END{for (x in cnt){if (i[x] > 5) print x,i[x],cnt[x]/i[x]}}' timed_access_log | sort -k3nr | head -20
Conta apenas os que têm pelo menos 5 solicitações, classifica-os ao diminuir o tempo médio e devolve os 20 primeiros.
Tags apache-2.2 log-files analysis