성공한 쿼리의 비율을 계산하는 방법

성공한 쿼리의 비율을 계산하는 방법

아파치 로그에 성공한 쿼리의 비율을 계산하려고 합니다. 두 가지 명령이 있습니다.

cat access_log|cut -d' ' -f10|grep "2.."|wc -l

그리고

cat access_log|cut -d' ' -f10|wc -l

성공적인 쿼리 수와 총 쿼리 수를 반환합니다. 가능하다면 bash를 사용하여 성공적인 요청의 비율을 계산하고 싶습니다. 1줄 스크립트여야 합니다. 추가적인 정보 없이 -50이나 12와 같은 % 숫자만 출력된다고 가정합니다.

bc를 사용해 보았지만 지식 부족으로 실패했습니다. 누구든지 나를 도와줄 수 있나요?

답변1

이 시도:

echo $(( 100 * $( cut -d' ' -f10 access_log|grep "2.."|wc -l) / $(cut -d' ' -f10 access_log|wc -l) ))

Bash는 정수만 처리할 수 있습니다.

답변2

awk로그 파일을 한 번만 사용 하고 반복하십시오.

awk '{if ((199 < $9) && ($9 < 300)) {SUMOK++} else {OTHER++}} END { printf "%d\n", ((SUMOK/NR)*100)}' access_log

답변3

이것을 시도해 볼 수 있습니다. $9를 상태 코드의 올바른 필드 번호로 바꾸십시오.

awk '{if ($9 == 200)  no_of_200+=1 } END{ perc=(no_of_200/NR)*100; print perc}' access.log

답변4

sed -ne'\|^\([^ ]*  *\)\{9\}2..|=;$=;$s|.*|2ksmzlm/p|'|dc

...일하다...

예를 들어:

printf %s\\n 1 2 3 4 5 6 7 8 9 10 |
sed -ne'/1/=;$=;$s|.*|2ksmzlm/p|p'|dc

.20

... sed입력 라인의 20%와 일치하는 패턴을 표시합니다.1

관련 정보