Precisa encontrar um tempo de resposta que leve de 1 a 3 segundos nos logs do Apache

1

Eu preciso encontrar o tempo de resposta da API em um arquivo de log do Apache. É como um tempo de resposta que demora entre 1 a 2 segundos ou 2 a 3 segundos. $6 é o tempo de resposta e os valores vêm em microssegundos.

Estou tentando com o seguinte comando, mas a saída é sempre a mesma:

grep 17/Sep/2016:10 /access.log| awk '{print ($6 > 1000000 && 2000000 > $6)}' | wc -l

    
por roshan 18.09.2016 / 07:33

1 resposta

0

Esta pergunta seria mais clara se algumas linhas de access.log fossem adicionadas como uma amostra. De qualquer forma, o comando awk imprime uma linha, independentemente do valor de $6 , então quando você conta as linhas com wc -l , você obtém um resultado que é determinado somente pelo grep.

Se você quiser contar as linhas em que $6 está entre dois valores diferentes, você pode escrever

grep 17/Sep/2016:10 /access.log | awk '$6 > 1000000 && 2000000 > $6' | wc -l

No entanto, esse pipeline é um pouco ineficiente. Quase sempre seria preferível combiná-lo em um único comando awk como este:

awk '/17\/Sep\/2016:10/ && $6 > 1000000 && 2000000 > $6 {c++} END{print c}' access.log

Para incluir os limites que se pode fazer:

grep 18/Sep/2016:11 /access.log | awk ' $6>=1000000 && $6<=2000000' | wc -l

ou equivalentemente

awk '/18\/Sep\/2016:11/ && $6>=1000000 && $6<=2000000 {c++} END{print c}' access.log
    
por 18.09.2016 / 08:23

Tags