특정 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