Расчет количества и процента для конкретного 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?