내용 목차
본 장에서는 로그 분석 서비스에 대해 설명한다.
로그 분석 서비스는 JEUS 내에서 제공하는 로그에 대한 분석 서비스이다.
JEUS에서 제공하는 로그 서비스는 다음과 같이 4가지로 나누어진다.
에러 로그 필터 서비스
JEUS 내에 존재하는 모듈에서 남기는 에러 로그 메시지를 조회할 수 있다.
액세스 로그 분석 서비스
AccessFormatter에 의해 존재하는 데이터에 대해서 분석한 통계 정보를 조회할 수 있다.
로그 추적 서비스
런타임 동안에 현재 로거에 적용되고 있는 로그 메시지를 추적할 수 있다.
오프라인 로그 분석 서비스
오프라인 환경에서 JEUS가 제공하는 Logger Type(ERROR_LOGGER, ACCESS_LOGGER)을 준수하여 사용자가 등록한 Formatter와 LogRecord로 남겨진 로그 메시지에 대해서 각각의 에러 로그 필터 서비스와 액세스 로그 분석 서비스를 제공한다.
로그 분석 화면은 크게 로거 트리, 핸들러(or 오프라인), 분석 상태, 분석 규칙 설정(or 분석 결과 or 로그 추적) 등으로 나누어 진다.
런타임에 JEUS 내에 적용되고 있는 로거 목록을 조회하는 화면이다. 트리에 사용된 아이콘들에 대한 설명은 “Appendix A. 아이콘”을 참고한다.
로거 트리에서 특정 로거가 선택되면 해당 로거에 적용되고 있는 파일 핸들러에 대한 내용이 나타나는 화면이다. 파일 핸들러 리스트별로 분석과 Stack Trace 서비스를 할 수 있다.
분석 작업이 종료되었거나 분석 진행 중 혹은 분석 실패와 같은 상태 정보를 리스트 형태로 나타나는 화면이다.
핸들러에서 특정 파일 핸들러 정보의 [분석] 버튼을 클릭하면 분석 규칙 설정 화면이 조회된다. 실제 분석 작업을 하기 위한 분석 규칙을 정의할 수 있다.
오프라인 환경에서 로거 트리의 최상위 노드(Logger)를 선택한 경우에는 핸들러에 사용자가 직접 파일 핸들러 정보를 등록할 수 있는 화면이다.
분석 상태에서 특정 분석 작업을 선택한 경우 해당 분석 결과 내용이 조회되는 화면이다.
핸들러에서 특정 파일 핸들러의 [로그 추적] 버튼을 클릭하면 해당 패턴에 일치하는 로그 파일의 메시지 로그를 추적한 결과가 나타나는 화면이다.
JEUS에서는 JEUS 서비스 타입의 로그 분석을 할 수 있는 MBean이 존재한다. WebAdmin의 JEUS 노드 트리에서 JEUS 매니저 서비스 > 로그 분석 서비스를 선택하여 JEUS 로그 분석을 시작할 수 있다.
JEUS에서 제공하는 로그 분석 서비스는 다음과 같다.
에러 로그 필터 서비스
액세스 로그 분석 서비스
로그 메시지 로그 추적 서비스
서비스별로 이용 방법에 차이가 있으므로 각각의 서비스에 대해서는 해당 서비스를 설명할 때 자세히 설명한다.
다음은 로그 분석 서비스를 시작하는 과정에 대한 설명이다.
온라인 에러 로그 분석은 JEUS 내에서 출력하는 에러 로그 메시지를 필터링하는 서비스이다.
다음은 에러 로그를 분석하는 단계이다.
WebAdmin 화면의 JEUS 노드 트리에서 JEUS 매니저 서비스 > 로그 분석 서비스를 선택하면 로그 분석 팝업 화면이 나타난다.
로그 분석 팝업 화면의 로거 트리에서 ERROR_LOGGER 타입의 로거명을 선택한다. 오른쪽 화면에 선택된 로거에 적용되고 있는 파일 핸들러 리스트 정보가 조회된다. 현재의 핸들러 리스트가 적용되고 있는 로거에 대한 정보와 해당 로거에 등록된 파일 핸들러의 이름, 로그 파일 패턴, 로그 레벨 정보, Action 버튼 등이 나타난다.
분석할 파일 핸들러의 [분석] 버튼을 클릭한다. 분석 규칙 설정 화면에서 선택한 파일 핸들러에 적용되고 있는 로그 파일 패턴에 대한 일반적인 선택 사항을 입력한다. 각 항목에 대한 입력이 완료되면 [확인] 버튼을 클릭한다.
다음은 화면의 설정항목에 대한 설명이다.
항목 | 설명 |
---|---|
작업 이름 | 로그 분석시 유일한 단위 이름이다. |
시작 날짜 | 로그 파일의 분석 시작 날짜이다. |
종료 날짜 | 로그 파일의 분석 종료 날짜이다. |
패턴 식별자 | 해당 파일 핸들러에 적용되고 있는 메시지 Formatter에 대한 정규 표현을 선택적으로 정의할 수 있다. 로그 메시지 Format에서 패턴 식별자에서 정의된 정규 표현에 매칭되는 로그 메시지만 필터링해서 표시한다. ERROR_LOGGER 타입 패턴은 “4.2.6. 로그 포맷 패턴”을 참고한다. |
버퍼 사용 | 버퍼 사용에 대해 선택한다. 분석할 때 적용가능하다. |
버퍼 크기 | 버퍼 크기를 설정한다. 분석할 때 적용가능하다. |
애스터리스크(*)가 표시된 항목은 필수 입력 항목이므로 반드시 입력한다.
로그 분석이 시작되었다는 메시지가 표시되고, 로그 분석 결과를 확인할 수 있다.
JEUS 로그의 웹 컨테이너 내에서 출력하는 액세스 로그 메시지에 대한 필터 서비스와 대략적인 통계 정보 서비스이다.
다음은 액세스 로그를 분석하는 과정이다.
WebAdmin 화면의 JEUS 노드 트리에서 JEUS 매니저 서비스 > 로그 분석 서비스를 선택하면 로그 분석 팝업 화면이 나타난다.
로그 분석 팝업 화면의 로거 트리에서 ACCESS_LOGGER 타입의 로거명을 선택한다. 오른쪽 화면에 “4.2.1. 온라인 에러 로그 분석” ERROR_LOGGER 타입 분석의 경우와 동일한 정보가 조회된다.
분석할 파일 핸들러의 [분석] 버튼을 클릭한다. 분석 규칙 설정 화면에서 선택한 파일 핸들러에 적용되고 있는 로그 파일 패턴에 대한 일반적인 선택 사항을 입력한다.
다음은 화면의 항목에 대한 설명이다.
항목 | 설명 |
---|---|
작업 이름 | 로그를 분석할 때 유일한 단위 이름이다. |
시작 날짜 | 로그 파일의 분석 시작 날짜이다. |
종료 날짜 | 로그 파일의 분석 종료 날짜이다. |
패턴 식별자 | 해당 파일 핸들러에 적용되고 있는 메시지 Formatter에 대한 정규 표현을 선택적으로 정의할 수 있다. 로그 메시지 Format에서 패턴 식별자에 정의된 정규 표현에 매칭되는 로그 메시지만 필터링하여 표시한다. ACCESS_LOGGER 타입 패턴은 “4.2.6. 로그 포맷 패턴”을 참조한다. |
액세스 로그 패턴 ID중에 headerValues, cookieValue, requestAttributes, sessionAttributes 속성은 하나 이상의 로그 포맷 정의가 가능하기 때문에 Expression과 Statisitic Class 명을 순차적으로 설정해야 한다.
분석 클래스 항목에 나타나는 클래스명은 실제 해당 패턴에 대한 히트수와 히트율 값에 대한 기본 통계치를 구현한 클래스명이다. 기본값은 -Dloganalyzer.properties=webaccess.properties 경로에 설정된 webaccess.properties파일에 정의된 값이다.
remoteIP=jeus.loganalyzer.pattern.RemoteIP localIP=jeus.loganalyzer.pattern.LocalIP contentLength=jeus.loganalyzer.pattern.ContentLength protocol=jeus.loganalyzer.pattern.Protocol remoteUser=jeus.loganalyzer.pattern.RemoteUser serverName=jeus.loganalyzer.pattern.ServerName serverPort=jeus.loganalyzer.pattern.ServerPort method=jeus.loganalyzer.pattern.Method status=jeus.loganalyzer.pattern.Status queryString=jeus.loganalyzer.pattern.QueryString requestURL=jeus.loganalyzer.pattern.RequestURL sessionId=jeus.loganalyzer.pattern.SessionId processingTime=jeus.loganalyzer.pattern.ProcessingTime
분석 규칙 설정 항목들의 설정이 완료되면 [확인] 버튼을 클릭한다.
결과를 확인하는 과정은 “4.2.1. 온라인 에러 로그 분석”에 설명한 것과 동일하다.
오프라인 환경에서 사용자가 정의한 로그 포맷에 관하여 로그 분석 서비스를 제공한다.
다음은 오프라인 에러 로그 분석 서비스를 사용하는 방법에 대한 설명이다.
WebAdmin 화면의 JEUS 노드 트리에서 JEUS 매니저 서비스 > 로그 분석 서비스를 선택하면 로그 분석 팝업 화면이 나타난다.
로그 분석 팝업 화면의 로거 트리에서 최상위 root인 Logger 노드를 선택한다.
오프라인 로그 분석 화면에서 다음의 항목을 설정한 다음 [확인] 버튼을 클릭한다.
다음은 화면의 설정 항목에 대한 설명이다.
항목 | 설명 |
---|---|
파일 패턴 | 분석할 파일명 패턴을 정의한다. |
포맷터 클래스 이름 | 사용자가 등록한 패키지 이름을 포함한 Formatter 클래스 이름을 정의한다. 정의된 Formatter 클래스는 java.util.logging.Formatter를 상속하고, jeus.util.logging.JeusFormatter interface를 implements해야 한다. |
로그 레코드 클래스 이름 | JEUS 엔진에 대한 에러 로그 분석을 하고자 하는 경우에는 jeus.util.logging.ErrorLogRecord 클래스를 상속하고 웹 컨테이너의 액세스 로그 분석을 하고자 하는 경우에는 jeus.util.logging.JeusAccessRecord 클래스를 상속한 패키지 이름을 포함한 클래스 이름을 정의한다. |
이후 과정은 로그 레코드 클래스가 jeus.util.logging.ErrorLogRecord 클래스를 상속하는 경우에는 “4.2.1. 온라인 에러 로그 분석”, jeus.util.logging.JeusAccessRecord 클래스를 상속하는 경우에는 “4.2.2. 온라인 액세스 로그 분석”과 동일하므로 생략한다.
원하는 로그에 대한 분석이 완료되면 분석 결과를 조회한다.
분석 상태에서 상태가 분석 종료인 작업 중 결과를 확인하고 싶은 액세스 로그의 작업명을 선택한다.
분석 결과 화면에서 분석 결과를 확인하고 싶은 Report 항목을 선택한다.
통계 정보 | 설명 |
---|---|
CLIENT_STATISTICS | 클라이언트 IP별로 분석된 로그 파일의 히트수, 히트율, 요청수, 에러수, 페이지 성공률, 평균 수행시간 통계치 정보를 알려준다. |
REQUEST_STATISTICS | Request URL별로 분석된 로그 파일의 히트수, 히트율, 요청수, 에러수, 페이지 성공률, 평균 수행시간 통계치 정보를 알려준다. |
MONTH_STATISTICS | 월별로 분석된 로그 파일의 히트수, 히트율, 요청수, 에러수, 페이지 성공률, 평균 수행시간 통계치 정보를 알려준다. |
YEAR_STATISTICS | 년도별로 분석된 로그 파일의 히트수, 히트율, 요청수, 에러수, 페이지 성공률, 평균 수행시간 통계치 정보를 알려준다. |
TIME_STATISTICS | 시간별로 분석된 로그 파일의 히트수, 히트율, 요청수, 에러수, 페이지 성공률, 평균 수행시간 통계치 정보를 알려준다. |
WEEK_STATISTICS | 요일별로 분석된 로그 파일의 히트수, 히트율, 요청수, 에러수, 페이지 성공률, 평균 수행시간 통계치 정보를 알려준다. |
DAY_STATISTICS | 날짜별로 분석된 로그 파일의 히트수, 히트율, 요청수, 에러수, 페이지 성공률, 평균 수행시간 통계치 정보를 알려준다. |
PATTERN ID ATTRIBUTES | JEUS WebContainer에서 제공하는 혹은 사용자가 등록한 Pattern ID Attribute에 대한 히트수와 히트율 정보를 Pattern ID별로 표시한다. |
액세스 로그 파일을 분석한 경우 에러 로그 파일을 분석할 때 필터링한 분석 결과 외에도 기본적인 통계 정보를 일부 제공해준다.
로그 분석에서 로그 메시지를 분석할 때 해당 메시지에 대한 필터링 기능을 위해서 각각의 적용되고 있는 Formatter에 어떤 attribute 요소가 있는지 파악해야 한다. “4.2.1. 온라인 에러 로그 분석”, “4.2.2. 온라인 액세스 로그 분석”에서 살펴보았듯이 로그 규칙 설정에서 정의할 수 있는 패턴 식별자는 다음과 같이 크게 2부분으로 나누어진다.
에러 로그 포맷
JEUS 내에서 출력하는 에러 로그 메시지 Pattern ID Attribute이다.
[표 4.1] 에러 로그 포맷의 Pattern Attribute
Pattern Attribute | 설명 |
---|---|
level | 핸들러의 레벨이다. 레벨의 값으로는 logging API의 레벨인 SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST가 올 수 있다. (기본값: INFO) |
message | JEUS 내에서 정의된 로그 메시지이다. |
threadID | 해당 메시지를 출력하는 고유 스레드 ID 이다. |
appName | 웹 컨테이너에서 출력하는 메시지인 경우 해당 컨텍스트 그룹과 컨텍스트별로 구분하기 위한 이름이다. |
jvmId | 로그를 출력하는 JVM이 엔진 컨테이너인 경우에는 컨테이너 이름, 매니저인 경우에는 매니저 이름을 의미한다. |
messageNumber | 로그 메시지의 고유 number이다. |
sourceModuleName | 해당 로그 메시지를 출력한 JEUS 내의 모듈명이다. |
액세스 로그 포맷
웹 컨테이너의 액세스 로그 메시지 Pattern ID Attribute이다.
[표 4.2] 액세스 로그 포맷의 Pattern Attribute
Pattern Attribute | Pattern ID | 설명 |
---|---|---|
remoteIP | %a | Remote IP address |
localIP | %A | Local IP address |
contentLength | %b | Bytes sent, excluding HTTP headers, or '-' if zero |
protocol | %H | Request protocol |
remoteUser | %l | Remote logical username from identd (always returns '-') |
method | %m | Request method (GET, POST, etc.) |
serverPort | %p | local port on which this request was received, or '-' if none and it doesn't follows %U |
queryString | %q | Query string (prepended with a '?' if it exists) |
status | %s | HTTP status code of the response |
sessionId | %S | User Session ID |
millis | %t | Date and time, in Common Log Format |
remoteUser | %u | Remote user that was authenticated (if any), else '-' |
requestURL | %U | Requested URL path |
serverName | %v | Local server name |
processionTime | %D | Time taken to process the request, in millis |
headerValues | %{xxx}i | for incoming headers |
cookieValues | %{xxx}c | for a specific cookie |
requestAttributes | %{xxx}r | xxx is an attribute in the Servlet Request |
sessionAttributes | %{xxx}s | xxx is an attribute in the HttpSession |
dateFormat | %{xxx}t | xxx is JDK standard DateFormat String which replaces default log date and time. |
런타임 동안에 JEUS 엔진에서 출력되고 있는 로그 메시지들을 브라우저를 통해서 실시간으로 모니터링할 수 있는 서비스를 제공한다.
WebAdmin 화면의 JEUS 노드 트리에서 JEUS 매니저 서비스 > 로그 분석 서비스를 선택하면 로그 분석 팝업 화면이 나타난다.
로그 분석 팝업 화면의 로거 트리에서 런타임 동안에 확인하고자 하는 로그 메시지에 대한 로거명을 선택한다.
해당 로거에 등록된 파일 핸들러 중에서 실시간으로 로그 메시지를 통계하고자 하는 파일 핸들러의 [로그 추적] 버튼을 클릭한다. 해당 파일 핸들러에 적용되고 있는 로그 파일 패턴에 매칭되어 현재 로그 메시지가 출력되고 있는 로그 파일의 메시지가 현 시점을 시작으로 주기적으로 메시지가 로그 추적에 업데이트된다.
[그림 4.18] 로그 추적 서비스 - 파일 핸들러의 로그 추적 버튼 선택
다음은 로그추적 항목에 대한 설명이다.
항목 | 설명 |
---|---|
새로 고침 | 주기적으로 로그 추적에 로그 메시지가 업데이트 되는 주기이다. (단위: 초) |
버퍼 크기 | 새로 고침 주기별로 로그 메시지를 업데이트할 때 적용되는 버퍼 크기값이다. |