IP 분석 관련 명령어
웹 서버의 접근 패턴을 파악하기 위해 IP 기반 통계를 활용할 수 있다.
- 전체 요청 수 카운트 (페이지 뷰, PV)
awk '{print $7}' access.log | wc -l - 고유 방문자 수 산출 (UV)
cut -d' ' -f1 access.log | sort | uniq | wc -l - 특정 시간대(IPv4 주소 기준) 접속량 확인 (예: 오전 4~5시)
grep "05/Oct/2018:0[4-5]" access.log | cut -d' ' -f1 | sort | uniq -c | wc -l - 가장 많이 접속한 상위 100개 IP 목록
cut -d' ' -f1 access.log | sort | uniq -c | sort -k1,1nr | head -100 - 접속 횟수가 100회를 초과한 IP 필터링
awk '{print $1}' access.log | sort | uniq -c | awk '$1 > 100 {print}' | sort -nr - 특정 IP의 요청 페이지 조회 및 빈도 정렬
grep '192.168.1.1' access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -50
페이지별 접근 통계
어떤 콘텐츠가 가장 많은 트래픽을 발생시키는지 파악하는 데 유용하다.
- 가장 많이 요청된 상위 50개 경로
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -50 - PHP 파일 제외 상위 페이지 순위
awk '{print $7}' access.log | grep -v "\.php" | sort | uniq -c | sort -nr | head -50 - 요청 수 100건 이상인 페이지 추출
awk '{print $7}' access.log | sort | uniq -c | awk '$1 >= 100' - 최근 1000건 내에서 가장 인기 있는 페이지
tail -1000 access.log | awk '{print $7}' | sort | uniq -c | sort -nr
시간 단위 요청량 분석
서버 부하 발생 시점 또는 트래픽 피크 타이밍을 파악한다.
- 초당 요청 수 상위 100건 (정확도: 초)
awk '{print substr($4,15,8)}' access.log | sort | uniq -c | sort -nr | head -100 - 분 단위 요청 수 집계 (상위 100)
awk '{print substr($4,15,5)}' access.log | sort | uniq -c | sort -nr | head -100 - 시간 단위 요청 수 집계
awk '{print substr($4,15,2)}' access.log | sort | uniq -c | sort -nr | head -100
성능 지연 분석
응답 시간($request_time)이 로그에 포함된 경우 성능 이슈를 진단할 수 있다.
- 응답 지연 3초 이상인 요청 경로 상위 20개
awk '($NF > 3) {print $7}' access.log | sort | uniq -c | sort -nr | head -20 - PHP 스크립트 중 응답이 1초 이상 소요된 항목 집계 (상위 100)
awk '($NF > 1 && $7 ~ /\.php$/) {print $7}' access.log | sort | uniq -c | sort -nr | head -100
TCP 연결 상태 점검
실시간 네트워크 연결 상태를 확인하여 과부하 여부를 판단한다.
- 현재 ESTABLISHED 상태의 HTTP 연결 수
netstat -an | grep :80 | grep ESTABLISHED | wc -l - 80번 포트 접근량이 많은 클라이언트 IP 추적
tcpdump -i any -nn dst port 80 -c 1000 2>/dev/null | awk '{print $3}' | cut -d'.' -f1-4 | sort | uniq -c | sort -nr | head -20