Tenía curiosidad sobre cómo calcularía un porcentaje de ejecución para URL específicas... Por ejemplo, cuando se ejecuta polishlog se obtiene una salida en tiempo real con información de las solicitudes http entrantes.
A continuación un extracto con información recortada.
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 ...
Lo que me interesa es RxURL
. Específicamente, tengo solicitudes que comienzan con:
- /¿gato?
- /¿plantilla?
¿Cómo harías para ejecutar un comando que pueda contar?
- número total de solicitudes
- número de solicitudes que comienzan con /cat
- número de solicitudes que comienzan con /temp
¿Y generar estos números al final?
Actualmente estoy ejecutando varnishlog | grep "Hash" > requests.txt
,
Y luego utilizar una hoja de cálculo de Excel para limpiar, hacer mis recuentos y calcular el porcentaje.
Sin embargo, tenía curiosidad por saber si se podría utilizar AWK o un script para hacer esto directamente en el servidor.
Actualizar
varnishtop -i txurl
es aún más adecuado ya que muestra las URL directamente.
Respuesta1
Puede utilizar Varnishncsa[1] para producir un registro "similar a Apache" (y aún mejor, uno filtrado si lo desea) y aprovechar algunos scripts probados en batalla[2][3]
Obtener los recuentos que desea en tiempo real (para las siguientes 100 solicitudes, por ejemplo) es 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]¿Tiene algún script awk y grep útil para analizar los registros de Apache?