![Apache 로그에서 awk 또는 sed를 사용하여 초당 평균 요청을 계산하는 방법](https://linux55.com/image/28918/Apache%20%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C%20awk%20%EB%98%90%EB%8A%94%20sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%B4%88%EB%8B%B9%20%ED%8F%89%EA%B7%A0%20%EC%9A%94%EC%B2%AD%EC%9D%84%20%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
Apache 로그에서 특정 기간 동안의 초당 평균 요청 수를 계산하려고 합니다.
내가 관심 있는 기간으로 결과를 좁혀 초당 요청 수를 계산할 수 있게 되었는데, 평균을 계산할 수는 없습니다. 이것이 내가 지금까지 가지고 있는 것입니다:
paste "/var/log/apache2/access.log" "/var/log/apache2/access.log.1" | awk ' $4>"[10/Feb/2013:16:48:00" && $4<"[10/Feb/2013:17:15:00" {gsub(/\[/,"");print $4} ' | sort | uniq -c
누구든지 나를 올바른 방향으로 안내할 수 있습니까? 나는 sed나 awk를 언급했지만 다른 것을 사용해 보고 싶습니다.
건배
답변1
이제 초당 요청을 얻는 방법을 알았으므로 "평균"이 무엇을 나타내는지, 즉 60초, 5분, 15분 또는 기타 기간 동안의 평균 요청 수를 결정해야 합니다. 60초를 초과한다고 가정하면 매초마다 메트릭 로그에 기존 스크립트를 추가할 수 있습니다. 그런 다음 다른 스크립트가 매초마다 루프에서 다음을 수행하도록 합니다.
# tail -n 60 | awk '{total = total + $1}END{print total}' / 60 | bc -l
60초 동안 초당 평균 요청 수가 표시됩니다. 5분 안에 완료하려면:
# tail -n 300 | awk '{total = total + $1}END{print total}' / 300 | bc -l
더 자세한 설명이 필요하시면 언제든지 댓글을 남겨주세요.