Eu estava curioso para saber como calcular uma porcentagem de execução para URLs específicos... Por exemplo, quando o vernizlog é executado, você obtém uma saída em tempo real para informações sobre solicitações HTTP recebidas.
Abaixo um trecho com algumas informações recortadas.
46 ReqStart c
46 RxRequest c GET
46 RxURL c /cat?getParam
46 RxProtocol c HTTP/1.1
46 RxHeader c User-Agent: **************
46 RxHeader c Accept-Encoding: gzip
46 RxHeader c Host: myServer.org
46 RxHeader c Connection: Keep-Alive
46 RxHeader c Cookie: ********
46 RxHeader c Cookie2: ************
46 VCL_call c recv lookup
46 VCL_call c hash
46 Hash c /cat?getParam
46 Hash c myServer.org
46 VCL_return c hash
46 VCL_call c miss fetch
46 Backend c 90 default default
...
46 ObjHeader c Server: Apache-Coyote/1.1
46 ObjHeader c Content-Type: text/xml
46 ObjHeader c Content-Encoding: gzip
46 ObjHeader c Vary: Accept-Encoding
46 ObjHeader c Date: Thu, 05 Sep 2013 12:56:04 GMT
46 Gzip c u F - 1596 8098 80 80 12697
46 VCL_call c deliver deliver
46 TxProtocol c HTTP/1.1
46 TxStatus c 200
46 TxResponse c OK
...
46 ReqEnd c ...
O que me interessa é RxURL
. Especificamente, tenho solicitações que começam com:
- /gato?
- /modelo?
Como você executaria um comando que pode contar:
- número total de solicitações
- número de solicitações começando com /cat
- número de solicitações começando com /temp
e gerar esses números no final?
Atualmente, estou executando varnishlog | grep "Hash" > requests.txt
,
E então utilizar uma planilha Excel para limpar, fazer minhas contagens e calcular a porcentagem.
Eu estava curioso para saber se o AWK ou um script poderia ser utilizado para fazer isso diretamente no servidor.
Atualizar
varnishtop -i txurl
é ainda mais adequado porque exibe os URLS diretamente.
Responder1
Você pode usar Varnishncsa[1] para produzir um log "semelhante ao Apache" (e melhor ainda, um filtrado, se desejar) e aproveitar algumas vantagens de alguns scripts testados em batalha[2][3]
Obter as contagens desejadas em tempo real (para as próximas 100 solicitações, por exemplo) é trivial:
varnishncsa | head -n 100 | awk '{print $7}' | wc -l
varnishncsa | head -n 100 | awk '{print $7}' | grep /cat | wc -l
varnishncsa | head -n 100 | awk '{print $7}' | grep /temp | wc -l
[1]https://www.varnish-cache.org/docs/trunk/reference/varnishncsa.html
[2]Você tem algum script awk e grep útil para analisar logs do Apache?