Linux 에서 Nginx 로그 분석

2429 단어 access_lognginx
Access logs
nginx 의 기본 로그 형식 을 예 로 들 면:
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"

각 필드 의 의 미 는 다음 과 같다.
  • $remote_addr 청구 자 IP
  • $remote_user HTTP 권한 수여 사용자, Http - based 인증 방식 을 사용 하지 않 으 면 비어 있 음
  • [$time_local] 서버 타임 스탬프
  • "$request" HTTP 요청 형식 (예: GET, POST 등) + HTTP 요청 경로 (인자 포함 하지 않 음) + HTTP 프로 토 콜 버 전
  • $status 서버 가 되 돌아 오 는 상태 코드 (예 를 들 어 200, 404, 5xx 등)
  • $body_bytes_sent 서버 응답 메시지 크기, 단위 byte
  • "$http_referer" referer 필드 값
  • "$http_user_agent" 사용자 에이전트 필드
  • 자주 사용 하 는 로그 분석 명령 을 열거 합 니 다.
    상태 코드 에 따라 요청 횟수 정렬
    cat access.log | cut -d '"' -f3 | cut -d ' ' -f2 | sort | uniq -c | sort -r
    

    출력 예시:
    210433 200
      38587 302
      17571 304
       4544 502
       2616 499
       1144 500
        706 404
        355 504
        355 301
        252 000
          9 403
          6 206
          2 408
          2 400
    

    또는 awk 사용:
    awk '{print $9}' access.log | sort | uniq -c | sort -r
    

    404 요청 704 번 이 있 습 니 다. 이 요청 의 URL 을 어떻게 찾 습 니까?
    awk '($9 ~ /404/)' access.log | awk '{print $7}' | sort | uniq -c | sort -r
    

    출력 열:
    21 /members/katrinakp/activity/2338/
    19 /blogger-to-wordpress/robots.txt
    14 /rtpanel/robots.txt
    

    다음은 이 요청 한 IP 주 소 를 찾 으 면 명령 을 사용 하 는 것 을 고려 합 니 다.
    awk -F\" '($2 ~ "/wp-admin/install.php"){print $1}' access.log | awk '{print $1}' | sort | uniq -c | sort -r
    

    출력 예시:
    14 50.133.11.248
    12 97.106.26.244
    11 108.247.254.37
    10 173.22.165.123
    

    php 접미사 404 요청 (일반적으로 탐지)
    awk '($9 ~ /404/)' access.log | awk -F\" '($2 ~ "^GET .*\.php")' | awk '{print $7}' | sort | uniq -c | sort -r | head -n 20
    

    URL 의 요청 수 에 따라 정렬
    awk -F\" '{print $2}' access.log | awk '{print $2}' | sort | uniq -c | sort -r
    

    url 포함 XYZ:
    awk -F\" '($2 ~ "ref"){print $2}' access.log | awk '{print $2}' | sort | uniq -c | sort -r
    

    좋은 웹페이지 즐겨찾기