AWStats 경우는 스트리밍/메일/FTP 다양하게 로그 분석이 가능합니다. 스트리밍은 사용할 일이 없어 제외하고 메일 및 FTP를 추가로 로그 분석해보도록 하겠습니다. 방식은 같습니다. 다만 아파치나 IIS처럼 디폴트가 설정이 없기 때문에 LogFormat을 직접 설정해야 하는 부분이 있습니다.
들어가기 전
※ 이미 만들어져 있는 AWStats.#.conf 파일 열기(스크린샷 참고)
[root@localhost ~]# vim /etc/awstats/awstats.#.conf
[정리(번역기)]
※ 숫자 4번 아래부터 "사용자 고유의 로그 형식" = 로그가 FTP, 메일 또는 기타 형식인 경우 다음 키를 사용하여 로그 형식 문자열을 정의해야 합니다. [FTP, 메일 또는 다른 유형의 웹 로그 형식 예제는 FAQ 참조) 하면 됩니다.
※ quote 차이는 " ~ " (양쪽 따옴표) 포함(인용부)의 강조 의미로 받아들이면 됩니다.
# %host / Client hostname or IP address (or Sender host for mail log)
→ 클라이언트 호스트 이름 또는 IP 주소 (메일 로그에서는 발송자 호스트로 표시)
# %host_r / Receiver hostname or IP address (for mail log)
→ 수신자 호스트 이름 또는 IP주소 (메일 로그 전용)
# %lognamequot / Authenticated login/user with format: "john"
→ 인증된 로그인 / 사용자 형식 : "john"
# %logname / Authenticated login/user with format: john
→ 인증된 로그인 / 사용자 형식 : john
※ 뒤 QUOT 차이는 " ~ " (양쪽 따옴표) 인용부의 강조 의미로 받아들이면 될 듯합니다.
# %time1 / Date and time with format: dd/mon/yyyy:hh:mm:ss +0000 or dd/mon/yyyy:hh:mm:ss
→ 날짜 및 시간 형식 [예시] : [26/10/2020:13:59:59 +0000] 또는 [26/10/2020:13:59:59]
# %time2 / Date and time with format: [yyyy-mm-dd hh:mm:ss]
→ 날짜 및 시간 형식 [예시] : [2020-10-26 13:59:59]
# %time3 / Date and time with format: Mon dd hh:mm:ss or Mon dd hh:mm:ss yyyy
→ 날짜 및 시간 형식 [예시] : [Mon 26 13:59:59] 또는 [Mon 26 13:59:59 2020]
# %time4 / Date and time with unix timestamp format: dddddddddd
→ 유닉스 타임스탬프 형식의 날짜 및 시간 [예시] : [1234567890]
※일반 시간으로 표시하기 위해서는 변환해야 함
# %time5 / Date and time with format iso: yyyy-mm-ddThh:mm:ss, with optional timezone specification (ignored)
→ 국제표준시간 ISO 형식의 날짜 및 시간 [예시] : [2020-10-26 13:59:59], 선택적 시간대 지정 (무시됨)
# %time6 / Date and time with format: dd/mm/yyyy, hh:mm:ss
→ 날짜 및 시간 형식 [예시] : [26/10/2020, 13:59:59]
# %methodurl / Method and URL with format: "GET /index.html HTTP/x.x"
→ 메소드 및 URL 형식 [예시] : "GET /index.html HTTP/1.1"
# %methodurlnoprot / Method and URL with format: "GET /index.html"
→ 메소드 및 URL 형식 [예시] : "GET /index.html"
# %method / Method with format: GET
→ 메소드 및 URL 형식 [예시] : GET
# %url / URL only with format: /index.html
→ URL 형식 [예시] : /index.html
# %query / Query string (used by URLWithQuery option)
→ 쿼리 문자열 (URLWithQuery 옵션에서 사용)
# %code / Return code status (with format for web log: 999)
→ code 리턴 코드 상태 (웹 로그 형식 : 999)
# %bytesd / Size of document in bytes
→ 문서 크기 (바이트 단위)
# %refererquot / Referer page with format: "http://from.com/from.htm"
→ 참조 페이지 형식 [예시] : "http://from.com/from.htm"
# %referer / Referer page with format: http://from.com/from.htm"
→ 참조 페이지 형식 [예시] : http://from.com/from.htm
# %uabracket / User agent with format: [Mozilla/4.0 (compatible, ...)]
→ 사용자 에이전트 형식 [예시] : [Mozilla/4.0 (compatible, ...)]
# %uaquot / User agent with format: "Mozilla/4.0 (compatible, ...)"
→ 사용자 에이전트 형식 [예시] : "Mozilla/4.0 (compatible, ...)"
# %ua / User agent with format: Mozilla/4.0_(compatible...)
→ 사용자 에이전트 형식 [예시] : Mozilla/4.0_(compatible...)
# %gzipin / mod_gzip compression input bytes: In:XXX
→ 압축 입력 바이트 [예시] : In:XXX
# %gzipout / mod_gzip compression output bytes & ratio: Out:YYY:ZZpct.
→ 압축 출력 바이트 및 비율 [예시] : Out:YYY:ZZpct.
# %gzipratio / mod_gzip compression ratio: ZZpct.
→ 압축 비율 : ZZpct.
# %deflateratio / mod_deflate compression ratio with format: (ZZ)
→ 압축 비율 형식 : (ZZ)
# %email / EMail sender (for mail log)
→ EMail 이메일 발신자 (메일 로그 전용)
# %email_r / EMail receiver (for mail log)
→ EMail 이메일 수신자 (메일 로그 전용)
# %virtualname / Web sever virtual hostname.
Use this tag when same log contains data of several virtual web servers.
AWStats will discard records not in SiteDomain nor HostAliases.
→ 웹 서버 가상 호스트 이름. 동일한 로그에 여러 가상 웹 서버의 데이터가 포함된 경우에 태그를 사용합니다. AWStats는 SiteDomain 또는 HostAliases에 없는 레코드를 삭제합니다.
# %cluster / If log file is provided from several computers (merged by logresolvemerge.pl),
use this to define cluster id field.
→ 로그 파일이 여러 컴퓨터에서 제공되는 경우 (logresolvemerge..pl에 의해 병합됨), 이를 사용하여 클러스터 ID 필드를 정의합니다.
# %extraX / Another field that you plan to use for building
a personalized report with ExtraSection feature (See later).
→ ExtraSection 기능을 사용하여 개인화된 보고서를 작성하는 데 사용할 또 다른 필드입니다 (나중에 참조).
※ 로그 형식에 위 목록에 포함되지 않은 일부 필드가 있는 경우 다음 Key를 이용.
# %other / Means another not used field
→ 사용되지 않는 다른 필드를 의미합니다.
# %otherquot / Means another not used double quoted field
→ 사용되지 않은 다른 큰 따옴표 필드를 의미합니다.
※ 로그 형식에 데이터 필드 앞에 오는 literal strings 이 있는 경우 다음 Key를 이용.
# status=%code / Means your log files have HTTP status logged as
"status=200" Literal strings that follow data field must be separated from said data fields by space.
→ 로그 파일에 "status = 200"으로 기록된 HTTP 상태가 있음을 의미합니다. 데이터 필드를 따르는 리터럴 문자열은 해당 데이터 필드와 공백으로 구분해야 합니다.
AWStats FTP 설정
[root@localhost ~]# cd /etc/awstats/ (경로 이동)
※ 이미 설정으로 만들어진 파일을 복사하여 이름만 변경합니다.
[root@localhost ~]# cp awstats.foxydog11.com.conf awstats.ftp.conf (파일 복사 및 이름 변경)
[root@localhost ~]# vim awstats.ftp.conf (파일 수정)
52 LogFile="/var/log/xferlog" [FTP 로그 (디폴트) 경로 잡아주기]
※ 예시 참고
57 # W - For a web log file [웹 로그]
58 # S - For a streaming log file [스트리밍 로그]
59 # M - For a mail log file [메일 로그]
60 # F - For an ftp log file [FTP 로그]
64 LogType=F [FTP로 변경]
※ FTP의 경우는 로그 형식을 직접 맞춰줘야 합니다. (xferlog 확인해보면)
Fri Oct 23 15:06:28 2020 1 ::ffff:124.111.208.234 0 /BMP1.bmp b _ i r test ftp 0 * i
로그가 쌓이며 아래와 같은 로그 형식으로 변경해줘야 AWStats에서 인식합니다.
123 LogFormat = "%other %time3 %other %other %host %bytesd %url %other %other %method %other %host %code %other %other %other" [(#)주석 해제 후 다음과 같은 Key 설정]
128 #LogFormat=1 [(#)주석 처리]
159 SiteDomain="FTP" [본인 서버 IP 또는 호스트 이름 변경]
174 HostAliases="FTP 127.0.0.1 localhost" [본인 서버 IP 또는 호스트 이름 변경]
[root@mail awstats]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=ftp -update (설정 업데이트)
Create/Update database for config "/etc/awstats/awstats.ftp.conf" by AWStats version 7.8 (build 20200416)
From data in log file "/var/log/xferlog"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 43)
Jumped lines in file: 43
Found 43 already parsed records.
Parsed lines in file: 0
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 0 old records,
Found 0 new qualified records.
웹 URL 확인 : http://localhost/awstats/awstats.pl?config=ftp [스크린샷 참고]
※ 테스트 서버는 로그 수집이 적어 공식 사이트에서 제공하는 테스트 페이지를 직접 확인하시면 됩니다.
공식 사이트 FTP 데모 페이지 : https://awstats.sourceforge.io/awstats.ftp.html
( 다만 데모 페이지는 상당히 예전 버전이라 약간의 인터페이스 차이가 발생할 수 있습니다. )
AWStats 메일 설정
[root@localhost ~]# cd /etc/awstats/ (경로 이동)
※ 이미 설정으로 만들어진 파일을 복사하여 이름만 변경합니다.
[root@localhost ~]# cp awstats.foxydog11.com.conf awstats.mail.conf (파일 복사 및 이름 변경)
[root@localhost ~]# vim awstats.mail.conf (파일 수정)
※ 메일의 경우는 메일 컨버터 파일을 이용해야 AWStats 통계가 제대로 나옵니다.
※ AWStats 툴 경로 확인(/usr/local/awstats/tools)
52 LogFile="perl /usr/local/awstats/tools/maillogconvert.pl standard < /var/log/mail.log |"
[메일(Postfix) 로그 잡아주기]
※ 예시 참고
57 # W - For a web log file [웹 로그]
58 # S - For a streaming log file [스트리밍 로그]
59 # M - For a mail log file [메일 로그]
60 # F - For an ftp log file [FTP 로그]
64 LogType=M [해당 설정]
※ MAIL의 경우는 로그 형식을 직접 맞춰줘야 합니다. (maillog 확인해보면)
Oct 13 03:36:10 mail postfix/smtpd[18172]: NOQUEUE: reject: RCPT from unknown[IP]: 454 4.7.1 <메일주소>..
로그가 쌓이며 아래와 같은 로그 형식으로 변경해줘야 AWStats에서 인식합니다.
123 LogFormat = "%time2 %email %email_r %host %host_r %method %url %code %bytesd"
[(#)주석 해제 후 다음과 같은 Key 설정]
128 #LogFormat=1 [(#)주석 처리]
158 SiteDomain="mail" [본인 서버 IP 또는 호스트 이름 변경]
173 HostAliases="mail 127.0.0.1 localhost" [본인 서버 IP 또는 호스트 이름 변경]
[root@mail awstats]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mail -update (설정 업데이트)
Create/Update database for config "/etc/awstats/awstats.mail.conf" by AWStats version 7.8 (build 20200416)
From data in log file "perl /usr/local/awstats/tools/maillogconvert.pl standard < /var/log/maillog-20201018 |"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 4
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 0 old records,
Found 4 new qualified records.
웹 URL 확인 : http://localhost/awstats/awstats.pl?config=mail [스크린샷 참고]
※ 테스트 서버는 로그 수집이 적어 공식 사이트에서 제공하는 테스트 페이지를 직접 확인하시면 됩니다.
공식사이트 FTP 데모 페이지 : https://awstats.sourceforge.io/awstats.mail.html
( 다만 데모페이지는 상당히 예전 버전이라 약간의 인터페이스 차이가 발생 할 수 있습니다. )
마치며
AWStats는 이 정도만 해도 반이상은 먹고 들어갈 수 있습니다. 윈도우도 가능하나 개인적으로 라인선스를 따로 가지고 있지 않아 설치는 가능하다고 해도 라이선스 적용하지 않는 이상 추가 서비스를 이용하지 못하기 때문에 미루고 있는 상황입니다. 기회가 된다면 따로 포스팅하도록 하겠습니다.
'◈『Open(Source) Solution』 > 로그분석(Monitoring)' 카테고리의 다른 글
CentOS 8 - AWStats GeoIP 적용 (2) | 2020.10.22 |
---|---|
CentOS 8 - AWStats (로그 분석) 설치 및 웹로그 분석하기 (0) | 2020.10.19 |