티스토리 뷰

728x90
반응형

 포스팅은 WebtoB의 로그레벨 변경 및 TraceLog 그리고 accesslog 분석에 대한 가이드입니다.


 

1. 로그레벨 및 로그포맷 변경 방법 및 응용 예제

먼저 일반적인 WEBTOB 로그포멧 변경 방법 및 설정 예시 그리고 요청자의 IP 확인 방법에 대해 알아보겠습니다.

 

*LOGGING절의 포맷 형식은 아래와 같습니다.

[$WEBTOBDIR/config/manual.m]로 확인됩니다.


포맷 의미
%a 원격지 IP 주소
%A 로컬 IP 주소
%B HTTP 헤더를 제외하고 전송된 바이트
%b HTTP 헤더를 제외하고 전송된 바이트. CLF 포맷에서는 , 전송된 것이 없을 경우 0 으로 표시하기 보다는 ‘-‘ 로 표시한다.
%{FOOBAR}e 서버에 의해 지정된 환경변수
%f  파일 이름
%h  원격지 호스트
%H  요청한 프로토콜
%{Foobar}i Foobar 의 내용: 클라이언트에서 서버로 요청된 헤더라인으로 예를 들자면, Referer 헤더일 경우 %{Referer}i 로 사용되어 진다.
%l  원격지 사용자이름 (이것이 사용되어 지기 위해서는 IdentityCheck 가 반드시 enable 되어져 있어야 한다)
%m  요청방식
%{Foobar}o  서버에서 응답되어 지는 HTTP 헤더. 예를들면 :
%{Content-Type}o, %{Last-Modified}o
%p  요청을 처리하는 서버의 참조적인 포트
%q  쿼리 문자열 (쿼리가 있을 경우 “?” 뒤로 쿼리문이 포함되며 그렇지 않을 경우 공백으로 처리된다)
%r  HTTP 메소드를 포함한 요청의 첫 라인
%s  HTTP 상태코드. 만약 클라이언트의 요청이 내부적인 리다이렉트를 발생시켰을 경우 %s 는 초기 요청의 상태코드를 %>s 는 최종상태 코드를 포함하게 된다. 일반적으로, %s 의 사용 보다는 %>s 가 유용하다.
%t  요청한 시간과 날짜 (standard english format)
%{format}t strftime() function 을 이용한 포맷형식에 따른 시간 [Day/Month/Year:Hours:Minutes:Seconds Time Zone]
%T  요청을 처리하는데 걸린 시간 (초)
%u  인증이 요청된 원격 사용자 이름
%U  요청된 URL
%v  요청을 처리하는 서버의 참조적인 서버 이름
%V  UseCanonicalName 설정에 따른 서버 이름


 

TmaxSoft 재직 시절 본인이 사용했던 로깅절을 첨부해 드립니다.

[$WEBTOBDIR/config/http.m]


*LOGGING
log1        Format   = "%h %l %u %t \"%r\" %>s %b %{X-Forwarded-For}i %{Referer}i"
            FileName = "/backup/webtob/log/access_%Y%%M%%D%.log", Option="sync"
                Option = "sync"

log2        Format   = "ERROR",     FileName = "/backup/webtob/log/error_%Y%%M%%D%.log"
log3        Format   = "DEFAULT",   FileName = "/backup/webtob/log/access_ssl_%Y%%M%%D%.log", Option="sync"


위 log1번의 설정을 보면 %{X-Forwarded-For}i라는 로그 포멧이 있습니다. 해당 설정에 대해 간단히 알아보면 다음과 같습니다.

 

*LOGGING.Format에서 "%{HTTP_HEADER_FIELD}i"는 client request중 해당되는 HTTP header field를 그대로 로그에 남기는 directive입니다. X-Forwarded-For 를 사용하면 실제 클라이언트 IP확인이 가능합니다. Referer -> URI를 획득했던 이전 URI를 Web Server에 알려주는 역할을 합니다.

 

2. TRACE LOG 생성 및 레벨 변경
다음으로 TraceLog 생성 및 레벨 변경 방법에 대해 알아보겠습니다.

TCP DUMP를 남기지 않고, WEBTOB가 들어온 요청을 정상 처리하는지 파악여부로 HTL, HTH 로그레벨을 변경해서 확인 할 때 사용합니다.

 

2-1. 동적 변경 방법 (4.1.3.0 버전 이후 지원, 4.1.3 이전의 debug binary 메시지가 출력 됩니다.)

1) 로그 변경 방법 # INFO 가 DEFAULT 입니다.


$$2 infrasvr (wsadm) [2012/05/30:14:41:55]: ll .hth -l TRACE

$$2 infrasvr (wsadm) [2012/05/30:14:41:55]: ll .htl -l TRACE



- 로그 레벨이 TRACE 인 경우 메시지는 syslog 파일에 저장 되지 않고, 환경변수

WEBTOB_TRACE 에 설정된 파일 (TRACE 파일) 에 저장된다. WEBTOB_TRACE 이 설정되어 있지 않으면$(WEBTOBDIR)/log/trace/processname-pid-date.trace에 저장된다.

WEBTOB_TRACE %N%, %P%, %D% 와 같은 format string 을 사용할 수 있다.


# %N% = process 이름

# %P% = PID

# %D% = date

# 예) WEBTOB_TRACE = %N%.trace 로 설정되면, HTH 메시지는 HTH.trace, CGIS 메시지는 CGIS.trace 에 저장된다


 

- 세부 옵션 설명입니다.


dcR=client 가 보낸 데이타 출력

dcW=client 로 전송된 데이타 출력

dsR=server 가 보낸 데이타 출력

dsW=server 로 전송된 데이타 출력

Default 값은 "" (empty string).


 

- 로그레벨이 INFO인 경우라도 세부 option이 설정 되어있는 경우 TRACE 로그 생성됩니다. (Hth 세부 option 설정 방법)


$$35 suntest (wsadm) [2013/01/13:17:47:56]: ll .HTH -o dcR,dcW

Log level is successfully updated. logger=.hth, level=INFO, options=dcR,dcW

$$36 suntest (wsadm) [2013/01/13:17:48:11]: ll .HTH -o dsR,dsW

Log level is successfully updated. logger=.hth, level=INFO, options=dcR,dcW,dsR,dsW

$$37 suntest (wsadm) [2013/01/13:17:59:17]: ll .HTH -o -dcR,dcW


 

- Hth 세부 option 설정 방법입니다.


$$35 suntest (wsadm) [2013/01/13:17:47:56]: ll .HTH -o dcR,dcW

Log level is successfully updated. logger=.hth, level=INFO, options=dcR,dcW

$$37 suntest (wsadm) [2013/01/13:17:59:17]: ll .HTH -o -dcR

Log level is successfully updated. logger=.hth, level=INFO, options=dcW

 

suntest:/user/nrson/webtob4132/config>ps -ef |grep hth |grep nrson

nrson 14049 1 0 17:37:55 pts/5 0:00 hth -l 0x2 -I webtob1_14046 -b 14046

suntest:/user/nrson/webtob4132/log/trace>ls -arlt

총 324

drwxrwxrwx 2 nrson ia 512 1월 13일 17:38 .

drwxrwxr-x 3 nrson ia 512 1월 13일 17:38 ..

-rw-rw-rw- 1 nrson ia 149451 1월 13일 18:02 HTH-14049-20130113.trace


 

- 자 결과를 요약해 보면 다음과 같습니다.

  동적 설정 하는 방법


   wsadmin 실행
   ll -h 
      Usage: ll loggername -l level | -o options
            loggername : name of the logger (e.g. .hth)
            level : TRACE|DEBUG|INFO|WARN|FATAL
            options : dcR,dcW,dsR,dsW
  2-1 hth의 디버그 설정 방법
     예) wsadmin> ll .hth -l TRACE  

ll .hth -l TRACE
ll .hth -o dcR,dcW,dsR,dsW
ll .hth -o -dcR,dcW
ll .hth -o -dsR,dsW

원복 : ll .hth -l INFO



2-2. 설정으로 변경 방법 (4.1.3.0 이전 버전 지원, DEBUG FILE 필요)

WebtoB 메뉴얼 상에는 다음과 같이 명시되어 있습니다.

$WEBTOBDIR/config/manual.m


*LOGLEVEL 절
Syslog 메시지출력을 제어하는 로그레벨을 설정하는 절이다.

로그 레벨이 TRACE 인경우 메시지는 syslog 파일에 저장되지않고, 환경변수 WEBTOB_TRACE 에 설정된 파일 (TRACE 파일) 에 저장된다.
WEBTOB_TRACE 이 설정되어 있지않으면 $(WEBTOBDIR)/log/trace/processname-pid-date.trace 에 저장된다. 

WEBTOB_TRACE 는 %N%, %P%, %D% 와 같은 format string 을 사용할수있다.
%N% = process 이름
%P% = PID
%D% = date
예) WEBTOB_TRACE = %N%.trace 로 설정되면, HTH 메시지는 HTH.trace, CGIS 메시지는 CGIS.trace 에 저장된다.


LOGLEVEL

Logger 이름을 설정한다.  Logger 는 WebtoB 하나의 구성요소에 해당된다.  이름은 hierarchy 로 되어있으며, 현재 정의된 이름들은 다음과 같다.
.               : Root 을 의미한다.  모든 구성요소를 포함한다.
.hth            : HTH
.htl            : HTL
.wsm            : WSM
.server         : 모든 서버들을 포함한다. 
.server.htmls   : HTMLS
.server.cgis    : CGIS 
.server.phps    : PHPS
.server.ssis    : SSIS
.server.filters : FILTERS
.hth

로그 레벨을 설정한다.

메시지의 레벨일 설정된 값이상이면 출력된다.
정의된 레벨은 "TRACE", "DEBUG", "INFO", "WARN", "FATAL" 이다.
TRACE 가 가장 낮은 레벨이며 WebtoB 4.1.3 이전의 debug binary 메시지를 출력한다.
Default 값은 INFO 이다.
               Level = "INFO"

.hth 는 추가적으로 서버와 client 가 주고 받는 메시지를 출력할 수 있다.
다음 내가지의 option 을 comma 로 구별해서 설정하면 된다.
dcR=client 가 보낸 데이타 출력
dcW=client 로 전송된 데이타 출력
dsR=server 가 보낸 데이타 출력
dsW=server 로 전송된 데이타 출력
Default 값은 "" (empty string).
Options="dcR,dcW,dsR,dsW"

서버와 client 메시지들은 syslog 파일이 아닌 TRACE 파일에 저장한다.


 

$WEBTOBDIR/config/http.m


...

...

*NODE

HTHOPT = "-o D:/log/webtob/hthlog/hth.out -e D:/log/webtob/hthlog/hth.err"

...

...


 

주의해야 할 점은 Trace 로그는 분당 어마어마한 양의 Text가 출력됩니다. 반드시 Trace 로그 변경 후 운영 권고 인 INFO로 변경해 두어야 하며, FD 증가 추이를 모니터링 해야 할 것입니다.

 

# 참조

Tracelog 백업 가이드

a. 윈도우

- 백업용도의 빈 파일 생성 (a.trace)
- 배치 파일 생성 (webtob_trace_backup.bat)
설정 내용


@echo
SET tracedir=C:\TmaxSoft\WebtoB\log\trace
SET tracefile=HTH-7448-20150916
set date=%date:-=%
set time1=%time: =0%
set time2=%time1:~0,2%%time1:~3,2%
copy  %tracedir%\%tracefile%.trace %tracedir%\%tracefile%_%date%_%time2%.trace
alzipcon -a %tracedir%\%tracefile%_%date%_%time2%.trace %tracedir%\%tracefile%_%date%_%time2%.zip
del %tracedir%\%tracefile%_%date%_%time2%.trace
copy  %tracedir%\a.trace %tracedir%\%tracefile%.trace


* alzipcon은 알집을 이용한 압축이므로 유의 바랍니다.
- 윈도우 예약된 작업 등록 (webtob_trace_backup.bat) 시작 -> 제어판 -:> 예약된 작업 -> 새로 만들기

 

b. 유닉스

- 쉘 파일 생성 (webtob_trace_backup.sh)


mkdir -p /log_data/webtob4/node/hth/$(date +"%y%m%d-%H%M")
cp HTH-11969-20151231.trace /log_data/webtob4/node/hth/$(date +"%y%m%d-%H%M")
cat /dev/null > HTH-11969-20151231.trace
2.2. crontab 등록 (webtob_trace_backup.sh)
30 * * * * /log_data/webtob4/script/webtob_trace_backup.sh 


 

3. Access Log 분석
마지막으로 WebtoB 로그 분석에 대해 알아보겠습니다. Webtob 로그 포맷 변경은 위를 참고하시기 바랍니다.

첨부한 WebtoB 로그 분석기를 통해 다음과 같은 유용한 정보를 분석할 수 있습니다.

 

기능은 다음과 같습니다.


Summary : 로그 분석 시간 범위, 총 히트수, 총 Client IP 수를 표시한다.
요청 페이지별 통계 : 요청 페이지별 요청횟수, 요청비율, 평균 처리시간, 최장 처리시간, 최장 처리시각, 오류횟수, 오류코드등을 보여준다.

일별통계 : 일자별 총 요청횟수, 평균 처리시간, 총 소요시간, 일자별 차트를 보여준다.

시간별 통계 : 시간대별 총 요청횟수, 평균 처리시간, 총 소요시간, 시간대별 차트를 보여준다.

HTTP 응답코드별 통계 : 응답코드별 요청횟수, 비율, 응답코드별 차트를 보여준다.

Client IP별 통계 : Client IP별 요청횟수, 비율를 보여준다.



사용방법은 다음과 같습니다.
1. access.zip을 적당한 곳에 압축 해제한다.
2. 압축 해제한 디렉토리에서 실행 스크립트를 실행한다.
   accessgui.bat  : Windows에서 GUI 모드로 수행한다.
   access.bat     : Windows에서 command 모드로 수행한다.
   access.sh      : UNIX에서 command 모드로 수행한다.

 

각 필드 설명은 다음과 같습니다.


사이트명(필수) : 보고서의 타이틀에 들어갈 내용입니다.
로그파일명(1개 이상 필수) : [추가] 버튼을 클릭하여 JEUS servlet engine accesslog 파일 선택. 다중선택이 가능합니다.
분석범위(시작) : 로그파일 내에서 특정 시간범위의 로그만으로 대상을 좁힐 경우 사용. 여기서 지정한 시간 이후의 로그만 분석 대상에 포함됩니다.
분석범위(종료) : 로그파일 내에서 특정 시간범위의 로그만으로 대상을 좁힐 경우 사용. 여기서 지정한 시간 이전의 로그만 분석 대상에 포함됩니다.
정렬 : 보고서의 “페이지 통계” 출력에서 정렬 방식 선택합니다.
Client IP 갯수 : Client IP 통계 출력에서 출력할 상위 IP 개수입니다. 지정하지 않으면 100개가 기본값으로 지정됩니다.
결과 출력형식 : 보고서 출력형식. HTML/EXCEL/TEXT 3가지 있습니다. TEXT/EXCEL은 그래프가 출력되지 않습니다.
결과 출력경로(필수) : 보고서 출력 파일 경로를 지정합니다.


 
필수항목은 사이트명, 로그파일명, 결과 출력경로 입니다.
각 항목을 적절하게 입력한 후 [로그분석] 버튼을 클릭하면 로그분석이 수행됩니다.
분석이 끝난 후에는 분석 결과가 자동으로 보여집니다.(700MB 로그 분석시 2분 30초 정도 소요됩니다.)

 

AccessLog는 사용자의 패턴 분석, 공격에 대한 패턴 분석, Referer, Response Time, 호출 빈도 등 다양한 정보를 담고 있으며, 이를 활용하여 보다 다양한 튜닝 포인트를 찾을 수 있습니다. 분석기를 활용하여 유용하기 사용하기를 부탁드립니다.

고맙습니다.

 

# 참조 WebtoB Access Log 분석기

logstat_32.zip

logstat_64.zip


728x90
반응형