Nginx 로그 분석을 위한 리눅스 명령어 모음

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

태그: nginx 로그분석 리눅스명령어 awk netstat

6월 9일 16:01에 게시됨