Calcular el recuento y el porcentaje para una URL específica de Varnishlog

Calcular el recuento y el porcentaje para una URL específica de Varnishlog

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 txurles 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?

[3]http://www.the-art-of-web.com/system/logs/#.Uin5AEBdXsh

información relacionada