Мне было интересно, как я буду рассчитывать текущий процент для определенных 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?