Berechnen der Anzahl und des Prozentsatzes für eine bestimmte URL aus Varnishlog

Berechnen der Anzahl und des Prozentsatzes für eine bestimmte URL aus Varnishlog

Ich war neugierig, wie ich einen laufenden Prozentsatz für bestimmte URLs berechnen würde … Wenn beispielsweise Varnishlog ausgeführt wird, erhalten Sie eine Echtzeitausgabe mit Informationen zu eingehenden HTTP-Anfragen.

Nachfolgend ein Auszug mit teilweise ausgeschnittenen Informationen.

  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 ...

Was mich interessiert, ist RxURL. Genauer gesagt habe ich Anfragen, die mit folgendem beginnen:

  • /Katze?
  • /Vorlage?

Wie würden Sie vorgehen, um einen Befehl auszuführen, der zählen kann:

  • Gesamtzahl der Anfragen
  • Anzahl der Anfragen, die mit /cat beginnen
  • Anzahl der Anfragen, die mit /temp beginnen

und diese Zahlen am Ende ausgeben?

Derzeit führe ich aus varnishlog | grep "Hash" > requests.txt,

Und dann verwende ich eine Excel-Tabelle zum Aufräumen, zum Zählen und Berechnen des Prozentsatzes.

Ich war jedoch neugierig, ob AWK oder ein Skript verwendet werden könnte, um dies direkt auf dem Server zu tun.

Aktualisieren

varnishtop -i txurlist sogar noch besser geeignet, da es die URLs direkt anzeigt.

Antwort1

Sie können Varnishncsa[1] verwenden, um ein „Apache-ähnliches“ Protokoll zu erstellen (und noch besser, ein gefiltertes, wenn Sie wollen) und von einigen praxiserprobten Skripten profitieren[2][3].

Das Abrufen der gewünschten Zählwerte in Echtzeit (beispielsweise für die nächsten 100 Anfragen) ist 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]Haben Sie nützliche Awk- und Grep-Skripte zum Parsen von Apache-Protokollen?

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

verwandte Informationen