Расчет количества и процента для определенного URL-адреса из Varnishlog

Расчет количества и процента для определенного URL-адреса из Varnishlog

Мне было интересно, как я буду рассчитывать текущий процент для определенных URL-адресов... Например, при запуске Varnishlog вы получаете вывод в реальном времени для информации о входящих http-запросах.

Ниже приведен отрывок, в котором часть информации вырезана.

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

Что меня интересует, так это RxURL. В частности, у меня есть запросы, начинающиеся с:

  • /кот?
  • /шаблон?

Как бы вы выполнили команду, которая умеет считать:

  • общее количество запросов
  • количество запросов, начинающихся с /cat
  • количество запросов, начинающихся с /temp

и вывести эти числа в конце?

В настоящее время я выполняю varnishlog | grep "Hash" > requests.txt,

А затем использую электронную таблицу Excel для очистки, произвожу подсчеты и вычисляю проценты.

Однако мне было интересно, можно ли использовать AWK или скрипт, чтобы сделать это непосредственно на сервере.

Обновлять

varnishtop -i txurlеще более удобен, поскольку отображает URL-адреса напрямую.

решение1

Вы можете использовать Varnishncsa[1] для создания журнала в стиле Apache (и даже лучше, отфильтрованного, если хотите) и воспользоваться некоторыми проверенными скриптами[2][3].

Получение нужных вам подсчетов в режиме реального времени (например, для следующих 100 запросов) тривиально:

  • 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]Есть ли у вас полезные скрипты awk и grep для анализа логов Apache?

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

Связанный контент