티스토리 뷰
본 포스팅은 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 분석기
'④ 미들웨어 > ⓦ WebtoB' 카테고리의 다른 글
[WebtoB] GotoEXT 설정 옵션 및 Regular Expression에 대한 활용 (0) | 2018.08.11 |
---|---|
[WebtoB] PHP 설치 및 연동 가이드 (0) | 2018.08.09 |
[WebtoB] Fast CGI 설정 및 예제 (0) | 2018.08.06 |
[WebtoB] URLRewrite 설정 가이드 (1) | 2018.07.11 |
[WebtoB] Caching Test (0) | 2018.07.06 |
- Total
- Today
- Yesterday
- 쿠버네티스
- OpenStack
- JEUS6
- wildfly
- SA
- aws
- MSA
- Architecture
- k8s
- 오픈스택
- apache
- webtob
- node.js
- JEUS7
- Da
- openstack tenant
- Docker
- 마이크로서비스
- openstack token issue
- JBoss
- TA
- git
- nodejs
- API Gateway
- aa
- 마이크로서비스 아키텍처
- 아키텍처
- SWA
- kubernetes
- jeus
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |