서버를 운영하다보면 access.log나 error.log를 이용하여 IP별 호출건수나 ResponseHTTP 서버 응답 코드 등의 통계를 내야될 때가 있다. IP나 시간대별 등의 유입건수를 확인하거나 파악하기 위해서다.
아래 access.log를 예로 들어보겠다.
aceess.log 에는 총 10개의 로그가 찍혀있다. 이를 아래와 같이 통계내어 보자.
- IP address별 호출 건수 통계
cat access.log | awk '{print $1}'| awk -F "/" '{arr[$1]+=1} END {for (i in arr) {print i "\t" ":" arr[i]}}' | sort |
그림 1은 access.log에서 127.0.0.1이 총 6번 호출되었고, 127.0.0.2와 127.0.0.3이 각각 2번씩 호출된 것을 보여주고 있다.
명령어를 설명하자면, cat으로 access.log 파일을 열고, awk로 첫번째 필드인 IP address를 추출하여 해당 필드가 같은 데이터면 count를 1씩 증가시킨다. 그리고 그 결과를 for loop 돌면서 [필드 값(탭) : count 값] 형태로 출력하고 이를 첫번째 필드 기준으로 정렬하는 명령이다.
- HTTP 서버 응답 코드(Response Code)별 통계
cat access.log | awk '{print $9}'| awk -F "/" '{arr[$1]+=1} END {for (i in arr) {print i "\t" ":" arr[i]}}' | sort |
이번에는 access.log에서 9번째 필드인 서버 응답 코드 통계를 추출하고 있다.
응답코드가 200인 것이 총 6개, 404와 500은 각각 2개인 것을 확인할 수 있다.
그 외
- 역순으로 보기
cat -> tac 으로 변경
ex) 'IP address별 호출 건수 통계' 를 역순으로 보고자 할 때
tac access.log | awk '{print $1}'| awk -F "/" '{arr[$1]+=1} END {for (i in arr) {print i "\t" ":" arr[i]}}' | sort
- 압축된 파일 통계 보기
cat -> zcat 으로 변경
ex) zcat access.log.gz | awk '{print $1}'| awk -F "/" '{arr[$1]+=1} END {for (i in arr) {print i "\t" ":" arr[i]}}' | sort
- 압축된 파일 특정 문자 포함 명령어 보기
ex) zcat access.log.gz | grep "member"
- 오래된 로그(log) 파일 찾아서 지우기
ex) find -name '*.log' -mtime +30 |xargs rm
.log 파일을 찾아서 mtime(수정시간)이 30일 이상 된 것을 지움(xargs rm)
- DNS 확인 명령어
nslookup tistory.com
'OS > Linux' 카테고리의 다른 글
ln (link) 명령어 (0) | 2017.09.24 |
---|---|
계정에 sudo 권한 부여하기 (0) | 2017.09.17 |
리눅스 파일권한 설정 (0) | 2017.09.17 |
리눅스 사용자 추가 및 변경 (CentOS 사용자 변경) (0) | 2017.09.17 |
CentOS 7 싱글모드로 부팅해서 패스워드 변경하기 (0) | 2017.09.17 |