# Apache Log 분석


# 로그 샘플 : 컬럼(열) 구분 단위 > 공백
- 명칭(컬럼 번호) : 컬럼 번호는 Apache 로그 생성 패턴에 따라 다를 수 있음

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   IP(1)       -(2) -(3) [년월일시분초(4) +0900](5) "POST(6) /*(7) HTTP(8) 200(9) 사이즈(10)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
216.152.252.91(1) -(2) -(3) [01/Apr/2013:00:03:15(4) +0900](5) "GET(6) /863(7) HTTP/1.1"(8) 200(9) 35747(10) "http:///" "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.01"
173.199.120.19 - - [01/Apr/2013:00:04:05 +0900] "GET /tag/661 HTTP/1.1" 200 39781 "-" "Mozilla/5.0 (compatible; AhrefsBot/4.0; +http://ahrefs.com/robot/)"
96.47.224.50 - - [01/Apr/2013:00:50:14 +0900] "GET /category/8%3Fpage%3D4 HTTP/1.1" 200 131473 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5"
96.47.224.50 - - [01/Apr/2013:00:50:16 +0900] "POST /comment/add/860 HTTP/1.1" 200 149 "http:///category/8%3Fpage%3D4" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5"

 # 로그파일 시간 범위 출력
1) 로그시간($4)이 [01/Apr/2013:14:10 보다 크고 01/Apr/2013:15:10 보다 작은 시간동안의, 전체 값 출력
[master@local logs]$ awk '$4>"[01/Apr/2013:14:10" && $4<"[01/Apr/2013:15:10"' access.20130401 | more
115.178.65.59 - - [01/Apr/2013:14:10:19 +0900] "GET /839 HTTP/1.1" 200 34884 "http://server.com" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.22 (KHTML, like Gecko) Ch
rome/25.0.1364.172 Safari/537.22"
66.249.74.207 - - [01/Apr/2013:14:10:21 +0900] "GET /839 HTTP/1.1" 200 34801 "-" "Mediapartners-Go
ogle"
93.182.134.162 - - [01/Apr/2013:14:11:00 +0900] "GET /593 HTTP/1.1" 200 31533 "http://server.com/" "Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1"
219.253.136.194 - - [01/Apr/2013:14:11:03 +0900] "GET /844 HTTP/1.1" 200 31889 "http://search.nave
r.com/search.naver?where=nexearch&query=CHR%2810%29&sm=top_hty&fbm=1&ie=utf8" "Mozilla/4.0 (compat
ible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR
3.5.30729; .NET4.0C; .NET4.0E)"

2) 로그시간($4)이 [01/Apr/2013:14:10 보다 크고 01/Apr/2013:15:10 보다 작은 시간동안의,
    [IP 중복 건수, IP] 내림차순 출력
[master@local logs]$ awk '$4>"[01/Apr/2013:14:10" && $4<"[01/Apr/2013:15:10"' access.20130401 | awk '{ print $1 }' | uniq | sort | uniq -c | sort -r | more
     21 66.249.74.207
     11 66.249.74.62
      9 93.182.134.162
      8 93.182.137.9
      7 93.182.133.29
      7 93.182.130.59
      7 173.199.120.19
      6 93.182.130.8
      6 93.182.130.42
      5 93.182.130.23
      5 211.57.153.106
      5 1.212.28.228
      4 93.182.130.62
      4 216.152.252.99
      4 211.254.253.60
      3 96.47.225.66
      3 66.249.80.146

3) 로그시간($4)이 [01/Apr/2013:14:10 보다 크고 01/Apr/2013:15:10 보다 작은 시간동안의,
    특정 아이피의 POST 접근 시도 횟수 출력

[master@local logs]$ awk '$4>"[01/Apr/2013:00:00" && $4<"[01/Apr/2013:15:10"' access.20130401 | awk '{if($1 == "216.152.252.99" && $6 == "\"POST"){ print "POST_"$1}}' | uniq -c
  COUNT |  아이피
-------------------------------------------------
     18 POST_216.152.252.99

4) 로그시간($4)이 [01/Apr/2013:14:10 보다 크고 01/Apr/2013:15:10 보다 작은 시간동안의,
    특정 아이피의 DOS 접근 시도 횟수 출력

[master@local logs]$ awk '$4>"[01/Apr/2013:00:00" && $4<"[01/Apr/2013:15:10"' access.20130401 | awk '{if($1 == "93.182.130.59"){ print "DOS_"$4, $10}}' | egrep '[0-9]$' | uniq -c | sort -r  | sed 's/\[//'
 COUNT | 년월일시분초   |   페이지사이즈
-------------------------------------------------
      2 DOS_01/Apr/2013:04:24:30 31616
      1 DOS_01/Apr/2013:14:28:32 31616
      1 DOS_01/Apr/2013:14:27:11 31616
      1 DOS_01/Apr/2013:14:27:05 31616

# Apache error 로그 분석 : 공백을 컬럼(열) 단위로
> 년월일, 요일 동일대만 가능(하루 내의 시간 범위)
awk '$from>"[Sat Aug 17 11:34:22 2013" && $to<"[Sat Aug 24 14:06:05 2013"' from='$1 " " $2 " " $3 " " $4 " " $5' to='$1 " " $2 " " $3 " " $4 " " $5' error_log | more


참고 : http://impactcore.blogspot.kr/2012/08/parse-apache-logs-by-date-range.html

# awk 파일 구분자 변경 저장
cat listTest.txt
Sun1[,]Sun2[,]Sun3[,]Sun4[,]Sun5
Sun1[,]Sun2[,]Sun3[,]Sun4[,]Sun5
Sun1[,]Sun2[,]Sun3[,]Sun4[,]Sun5
Sun1[,]Sun2[,]Sun3[,]Sun4[,]Sun5

> 파일의 내용을 구분자( [,] )로 분리 해서 구분자( :: )로 변경 출력
awk -F "\\\[[,]]" '{print $1"::"$2"::"$3"::"$4"::"$5}' listTest.txt
Sun1::Sun2::Sun3::Sun4::Sun5
Sun1::Sun2::Sun3::Sun4::Sun5
Sun1::Sun2::Sun3::Sun4::Sun5
Sun1::Sun2::Sun3::Sun4::Sun5

> 파일의 3($3)번째 필드값 추출
awk -F"\\\[[,]]" '{print $3}' listTest.txt
Sun3
Sun3
Sun3
Sun3

awk -F"\\\[[,]]" '{print $3}' listTest.txt
Sun3
Sun3
Sun3
Sun3

awk -F \\\\[[,]\\\\] '{print $3}' listTest.txt
Sun3
Sun3
Sun3
Sun3

※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
08 24, 2013 19:56 08 24, 2013 19:56


Trackback URL : http://develop.sunshiny.co.kr/trackback/949

Leave a comment

« Previous : 1 : ... 85 : 86 : 87 : 88 : 89 : 90 : 91 : 92 : 93 : ... 648 : Next »

Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. prefab steel buildings prefab steel buildings %M
  2. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   09 2019   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2683568 HIT
TODAY 402 HIT
YESTERDAY 438 HIT