linux에서 log 통계 내는 명령어
Linux 서버에서 서버를 운영하다 보면, 시간대별 유입 건수, 특정 ip의 접속 건수, http 에러가 몇 건인지 파악하기 위해 access 로그를 이용하여 접속 통계가 필요한 경우가 있다.
ip별 접속 건수 확인
cat 파일_이름 | awk '{print $1}' | sort | uniq -c | sort -n
awk '{print $1}'은 각 라인에서 첫번째 값(IP)을 의미 한다.
uniq -c는 해당 라인이 몇번 나오는지를 카운트 한다.
만약 line 수가 많아 일정 횟수 이상만 확인하고 싶다면, `| awk '$1 >= 500' 조건을 추가해 준다.
시간대별 접속 건수 확인
cat 파일_이름 | awk '{print $4}' | awk -F ":" '{print $2}' | uniq -c
awk '{print $4}'는 각 라인의 4번째 필드인 시간을 추출한 뒤,
추출한 필드를 다시 ":"를 구분자로 2번째 필드(시간)을 추출하여 그 카운트를 센다.
HTTP 결과 코드별 접속 건수 구하기
cat 파일_이름 | awk '{print $9}' | sort | uniq -c
awk '{print $9}' 9번째 필드인 http 결과 코드를 추출하여 정렬 후, 그 카운트를 센다.
완성 예제 스크립트 파일
_date=`date "+%Y-%m-%d"`
tgt=localhost_access_log.$_date.txt
echo -e "\nTARGET FILE : $tgt\n"
echo -e ":: COUNT OF ACCESS IP ::"
cat $tgt | awk '{print $1}' | sort | uniq -c | sort -n | awk '$1 >= 500'
echo -e "\n:: COUNT OF ACCESSER BY HOUR ::"
cat $tgt | awk '{print $4}' | awk -F ":" '{print $2}' | uniq -c
echo -e "\n:: COUNT OF HTTP STATUS CODE ::"
cat $tgt | awk '{print $9}' | sort | uniq -c
echo -e "\n\n"
이를 3일치를 뽑으면 다음과 같다.
SET=$(seq 0 3)
function dateLogPrinter() {
local _date=$1
echo -e "\n----- DATE : $_date -----"
echo -e ":: COUNT OF ACCESS IP ::"
cat localhost_access_log.$_date.txt | awk '{print $1}' | sort | uniq -c | sort -n | awk '$1 >= 500'
echo -e "\n:: COUNT OF ACCESSER BY HOUR ::"
cat localhost_access_log.$_date.txt | awk '{print $4}' | awk -F ":" '{print $2}' | uniq -c
echo -e "\n:: COUNT OF HTTP STATUS CODE ::"
cat localhost_access_log.$_date.txt | awk '{print $9}' | sort | uniq -c
echo -e "\n\n"
}
for i in $SET
do
dateLogPrinter `date -d "-$i days" "+%Y-%m-%d"`
done
기타
특정 기간 지난 로그 파일 찾아 지우기.
find -name '*.out' -mtime +200 | xargs rm
out으로 끝나는 파일중 200일이 지난 파일을 찾아 지운다.
압축된 로그파일 출력하기
cat
을 zcat
으로 바꿔서 위와 같은 명령을 수행하면 됨.
참고
728x90
반응형
'OS > Linux' 카테고리의 다른 글
[Linux] 서버 동시 접속자 수 확인 명령어 (0) | 2021.03.31 |
---|---|
[Linux] 파일 압축 및 해제 (0) | 2021.03.20 |
[Linux etc tip] 대상 서버의 포트가 열려있는지 확인하는 방법 (0) | 2021.01.05 |
[Linux] 웹 서버 (0) | 2020.12.13 |
[Linux] 원격 관리 (0) | 2020.12.13 |