제니퍼 서버 운영 관리

제니퍼 서버 시작과 중지

제니퍼 서버를 시작하려면 JENNIFER_HOME/server/bin 디렉토리에 있는 startup.sh를 실행한다.

./startup.sh

단, 닷넷 에이전트만을 전용으로 모니터링을 할 경우에는 startup.net.bat를 사용하여 제니퍼 서버를 기동해야 한다.

제니퍼 서버를 기동하게 위해서는 JDK가 필요하다. 제니퍼 서버는 JDK1.5이후 버전의 사용을 권장한다. JDK 1.4.2를 사용하는 경우, 다음 작업을 수행한다.

표준 출력 로그는 JENNIFER_HOME/server/logs/catalina.out 파일에서 확인할 수 있다.

제니퍼 서버를 정지하려면 JENNIFER_HOME/server/bin 디렉토리에 있는 shutdown.sh 를 실행한다.

./shutdown.sh

제니퍼 서버 설정 파일

모니터링 수준과 방법, 네트워크 포트 번호 지정 등의 모든 설정은 제니퍼 서버 옵션을 통해서 이루어진다. JENNIFER_HOME/server/bin/jennifer.properties 파일이 제니퍼 서버 설정 파일이다.

설정 파일 형식

제니퍼 서버 옵션은 텍스트 형식의 설정 파일에 기록된다. 이 파일은 다음과 같은 특징을 갖는다.

설정 변경

설정 파일은 에디터를 통해서 직접 수정하거나, [구성 관리 | 구성 설정 ] 메뉴에서 수정한다. 단, 제니퍼 클리이언트에서는 관리자 그룹에 속한 사용자만이 옵션을 수정할 수 있다.

제니퍼 옵션 설정 화면

  1. 에이전트 선택 영역 - 제니퍼 서버 옵션 내용을 확인하거나 수정하려면 [서버]를 선택한다.

  2. 현재 설정 내용 - 왼쪽에 있는 현재 설정 내용에서 제니퍼 서버 옵션을 확인한다.

  3. 설정 내용 변경 - 오른쪽에 있는 설정 내용 변경 입력 폼에서 기존 옵션을 수정하거나 새로운 옵션을 추가한 후에, 하단에 있는 [수정] 버튼을 클릭한다.

제니퍼 서버 설정 파일은 제니퍼 서버의 config_refresh_check_interval 옵션으로 설정한 시간마다 변경 여부가 체크된다.

config_refresh_check_interval = 3000

제니퍼 서버 네트워크 구성

제니퍼 클라이언트 혹은 제니퍼 에이전트와 제니퍼 서버 사이에 일어나는 다양한 네트워크 통신을 처리하기 위한, 제니퍼 서버의 네트워크 구성에 대해서 설명한다. 주로 포트 번호 설정과 관련된 것으로, 기본 포트 번호를 다른 애플리케이션에서 이미 사용하고 있다면 이를 수정해야 한다. 또한 동일한 하드웨어에 복수의 제니퍼 서버를 설치한 경우에도 해당 포트 번호가 중복되지 않도록 설정해야 한다.

클라이언트를 위한 설정

제니퍼 서버와 제니퍼 클라이언트는 웹 기반 사용자 인터페이스 제공을 위해서 HTTP 프로토콜을 사용한다. 이 때 사용하는 기본 HTTP 포트 번호는 7900이다. 그리고 제니퍼 서버 정지를 위한 기본 포트 번호는 7999이다. 이 포트 번호를 변경하려면 JENNIFER_HOME/server/bin/catalina.sh(bat) 파일을 수정한다.

유닉스 혹은 리눅스의 경우에는 catalina.sh 파일의 다음 부분에서 포트 번호를 설정한다.

JAVA_HOME="$JAVA_HOME"

if [ -z "${STARTUP_PORT}" ]
then
     export STARTUP_PORT="7900"
fi

if [ -z "${SHUTDOWN_PORT}" ]
then
     export SHUTDOWN_PORT="7999"
fi

윈도우즈의 경우에는 catalina.bat 파일의 다음 부분에서 포트 번호를 설정한다.

set JAVA_HOME=%JAVA_HOME%

if "%STARTUP_PORT%" == "" SET STARTUP_PORT=7900
if "%SHUTDOWN_PORT%" == "" SET SHUTDOWN_PORT=7999

자바 애플릿은 차트 구성에 필요한 데이터를 제니퍼 서버로부터 TCP 통신을 통해서 획득한다. 이 때 사용되는 제니퍼 서버의 기본 TCP 포트 번호는 제니퍼 서버의 server_tcp_port 옵션으로 설정하고, 기본 포트 번호는 6701이다.

server_tcp_port = 6701

제니퍼 에이전트를 위한 설정

제니퍼 에이전트는 성능 데이터를 UDP 방식으로 제니퍼 서버에 전송한다. 제니퍼 서버는 제니퍼 에이전트가 보내는 성능 데이터를 3개의 UDP 포트로 분리해서 받아들인다. 각각의 포트가 받아들이는 성능 데이터는 상이하다.

제니퍼 에이전트는 제니퍼 서버의 server_udp_runtime_port 옵션으로 설정한 UDP 포트로 모든 트랜잭션의 시작과 종료와 관련한 데이터를 전송한다. 이 데이터는 크기는 매우 작으며 주로 X-View 차트를 표현하는데 사용된다. 기본 포트 번호는 6901이다.

server_udp_runtime_port = 6901

제니퍼 에이전트는 제니퍼 서버의 server_udp_listen_port 옵션으로 설정한 UDP 포트로 1초마다 반복적으로 서비스 요청률, 평균 응답 시간 등의 일반 성능 데이터를 전송한다. 기본 포트 번호는 6902이다.

server_udp_listen_port = 6902

제니퍼 에이전트는 제니퍼 서버의 server_udp_lwst_call_stack_port 옵션으로 설정한 UDP 포트로 X-View 트랜잭션 프로파일 데이터를 전송한다. 기본 포트 번호는 6703이다.

server_udp_lwst_call_stack_port = 6703

앞에서 설명한 UDP 포트 번호를 수정할 때는 제니퍼 서버 뿐만 아니라 제니퍼 에이전트의 동일한 옵션도 함께 수정해야 한다.

그리고 제니퍼 에이전트가 UDP 방식으로 보내는 성능 데이터를 제니퍼 서버가 받을 때 사용할 IP 바인딩 주소를 지정할 필요가 있다. 이는 자바 TCP 소켓 프로그래밍에서 new java.net.DatagramSocket(port, ip) 생성자의 두번째 파라미터 IP에 해당하는 값이다. 하드웨어에 둘 이상의 네트워크 카드가 있다면, 특정 네트워크 카드로 들어오는 요청만 바인딩하고자 할 때 설정한다. udp_server_host 속성을 "0.0.0.0"으로 지정하면 모든 네트워크 카드에서 들어오는 패킷을 받을 수 있다.

udp_server_host = 0.0.0.0

제니퍼 서버에서 제니퍼 에이전트로의 TCP 역방향 연결에 대한 타임 아웃 시간을 설정할 수 있다. 소켓 연결에 대한 타임 아웃 시간은 제니퍼 서버의 agent_tcp_connect_timeout 옵션으로 설정한다. 기본 값은 3000이고 단위는 밀리 세컨드이다.

agent_tcp_connect_timeout = 3000

소켓 연결 후 데이터를 읽는 작업과 관련한 타임 아웃 시간은 제니퍼 서버의 agent_tcp_io_timeout 옵션으로 설정한다. 기본 값은 5000이고 단위는 밀리 세컨드이다.

agent_tcp_io_timeout = 5000

만약 네트워크 연결이 지연되는 현상이 발생하면, 제니퍼 서버 로그 파일에 에러가 기록된다. 이때는 옵션 값을 바꾸기 전에 먼저 제니퍼 에이전트와 서버 사이의 네트워크 환경을 튜닝하는 것을 권고한다.

제니퍼 사용을 위한 방화벽 설정

제니퍼 서버와 제니퍼 에이전트 혹은 제니퍼 클라이언트 사이에 방화벽이 존재하면, 앞에서 설정한 포트 번호가 방화벽을 정상적으로 통과하도록 설정해야 한다.

UDP 네트워크에 대한 방화벽 테스트는 [네트워크 테스트]를 참조한다.

서버 로그 관리

제니퍼 서버의 로그 파일은 제니퍼 서버의 logfile 옵션으로 설정한다.

logfile = ../logs/jennifer.log

로그 파일을 일자별로 기록하려면 제니퍼 서버의 enable_logfile_daily_rotation 옵션을 true로 설정한다. 기본 값은 true이다.

enable_logfile_daily_rotation = true

기본 설정에 따르면 JENNIFER_HOME/server/logs/jennifer.YYYY-MM-DD.log 파일에 로그가 기록된다.

logfile 옵션을 변경하려면 제니퍼 서버를 재시작하여야 한다.

제니퍼 서버는 아파치 톰켓을 사용하고 톰켓 로그는 JENNIFER_HOME/server/logs 디렉토리에 일자별로 분리되어 기록된다.

톰켓 로그 파일

로그 파일

설명

admin.YYYY-MM-DD.log

톰켓이 내부적으로 사용하는 로그 파일로 중요 메시지가 기록되지는 않는다.

catalina.YYYY-MM-DD.log

콘솔에 출력되는 메시지가 기록된다.

host-manager.YYYY-MM-DD.log

톰켓이 내부적으로 사용하는 로그 파일로 중요 메시지가 기록되지는 않는다.

localhost.YYYY-MM-DD.log

에러 및 예외 메시지가 기록된다.

manager.YYYY-MM-DD.log

톰켓이 내부적으로 사용하는 로그 파일로 중요 메시지가 기록되지는 않는다.

톰켓 서버와 관련한 로그는 catalina.YYYY-MM-DD.log 파일과 localhost.YYYY-MM-DD.log 파일을 주로 참고한다.

동일한 하드웨어에서 복수의 제니퍼 서버 운영하기

동일한 하드웨어에서 복수의 제니퍼 서버를 운영하는 방법을 설명한다. 운영하려는 제니퍼 서버의 개수와 상관없이 하나의 제니퍼 서버만을 설치한다. 그리고 운영하려는 개수에 해당하는 시작/정지 스크립트를 작성한다. 시작/정지 스크립트에 제니퍼 서버가 사용하는 HTTP 포트 번호와 제니퍼 서버 정지 포트 번호, 그리고 제니퍼 서버 설정 파일 경로를 설정한다.

유닉스 혹은 리눅스의 경우에는 JENNIFER_HOME/server/bin/start_server_01.sh 파일을 다음과 같이 작성한다. 임의의 파일 이름을 사용할 수 있다.

export JAVA_HOME=/usr/java/jdk1.6.0_11

export STARTUP_PORT=7901
export SHUTDOWN_PORT=7991

export JAVA_OPTS=-Djennifer.config=/jennifer/data/conf/jennifer_01.properties

./startup.sh

그리고 JENNIFER_HOME/server/bin/shutdown_server_01.sh 파일을 다음과 같이 작성한다. 임의의 파일 이름을 사용할 수 있다.

export JAVA_HOME=/usr/java/jdk1.6.0_11

export STARTUP_PORT=7901
export SHUTDOWN_PORT=7991

export JAVA_OPTS=-Djennifer.config=/jennifer/data/conf/jennifer_01.properties

./shutdown.sh

윈도우즈의 경우에는 JENNIFER_HOME/server/bin/start_server_01.bat 파일을 다음과 같이 작성한다. 임의의 파일 이름을 사용할 수 있다.

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11

SET STARTUP_PORT=7901
SET SHUTDOWN_PORT=7991

set JAVA_OPTS=-Djennifer.config=C:/jennifer/data/conf/jennifer_01.properties

startup run

그리고 JENNIFER_HOME/server/bin/shutdown_server_01.bat 파일을 다음과 같이 작성한다. 임의의 파일 이름을 사용할 수 있다.

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11

SET STARTUP_PORT=7901
SET SHUTDOWN_PORT=7991

set JAVA_OPTS=-Djennifer.config=C:/jennifer/data/conf/jennifer_01.properties

shutdown run

각 제니퍼 서버별로 다르게 설정해야 하는 제니퍼 서버의 옵션은 다음과 같다.

자바 임시 디렉토리도 다르게 하려면 시작 스크립트에서 JAVA_OPTS 환경 변수로 java.io.tmpdir를 설정한다.

제니퍼 서버 디버깅

이벤트 로그 기록

사용자 및 권한 등과 관련한 주요 이벤트 로그를 관리자 데이터베이스 EVENT_LOG 테이블에 기록할 수 있다. 이벤트 로그를 기록하려면 제니퍼 서버의 enable_event_log 옵션을 true로 설정한다. 기본 값은 false이다.

enable_event_log = true

주요 이벤트 로그에 대한 설명은 다음과 같다.

주요 이벤트 로그

이벤트 로그 아이디

설명

JENNIFER_SERVER_START

제니퍼 서버의 시작 이벤트 로그

JENNIFER_SERVER_STOP

제니퍼 서버의 종료 이벤트 로그

ADD_USER

사용자 추가 이벤트 로그(사용자에게 할당된 그룹 정보 포함)

CHANGE_USER

사용자 변경 이벤트 로그(사용자에게 할당된 그룹 정보 포함)

REMOVE_USER

사용자 삭제 이벤트 로그

ADD_GROUP

그룹 추가 이벤트 로그(제니퍼 에이전트 목록 정보 포함)

CHANGE_GROUP

그룹 변경 이벤트 로그(제니퍼 에이전트 목록 정보 포함)

REMOVE_GROUP

그룹 삭제 이벤트 로그

ADD_ROLE

권한 추가 이벤트 로그(권한에 할당된 그룹 정보 포함)

CHANGE_ROLE

권한 변경 이벤트 로그(권한에 할당된 그룹 정보 포함)

REMOVE_ROLE

권한 삭제 이벤트 로그

CHANGE_PASSWORD

패스워드 변경 이벤트 로그

CHANGE_PASSWORD_BY_ADMIN

권리자 그룹에 속한 사용자에 의한 패스워드 변경 이벤트 로그

LOGIN_SUCCESS

로그인 성공 이벤트 로그

LOGIN_FAILURE

로그인 실패 이벤트 로그로 로그인 실패 사유도 함께 기록된다.

LOGOUT_SUCCESS

로그아웃 성공 이벤트 로그로 사용자에 의한 로그아웃과 세션 타임아웃에 의한 로그아웃을 구분한다.

LOGOUT_FAILURE

로그아웃 실패 이벤트 로그

INVALID_LOGIN_LOCK

사용자가 정해진 임계치 이상으로 패스워드를 틀리면 해당 사용자 계정을 사용할 수 없게 된다. 이 내용을 기록하는 이벤트 로그이다.

제니퍼 서버 SQL 로깅

제니퍼 서버 튜닝을 위해서 제니퍼 서버가 사용하고 있는 내부 SQL과 에러 여부를 임의의 로그 파일에 기록할 수 있다. 이를 위해서는 제니퍼 서버의 enable_server_trace 옵션을 true로 설정한다. 기본 값은 false이다.

enable_server_trace = true

그리고 로그를 기록할 파일을 제니퍼 서버의 server_trace_filename 옵션으로 설정한다. 기본 값은 servertrace.log이다.

server_trace_filename = servertrace.log

그리고 SQL 실행 시간이 제니퍼 서버의 server_jdbc_trace_overthan 옵션으로 설정한 시간 이상인 경우에만 SQL을 로그 파일에 기록한다. 기본 값은 10000이고 단위는 밀리 세컨드이다.

server_jdbc_trace_overthan = 10000

제니퍼 클라이언트 TCP 연결 로깅 제니퍼 서버를 사용하는 사용자가 많은 경우에 Client TCP Worker 숫자가 부족하여 예외가 발생할 수 있다. 이 때 제니퍼 서버의 number_of_tcp_pooled_workers 옵션으로 Client TCP Worker 숫자를 늘려주기 전에 실제 유효한 사용자가 정상적으로 TCP 연결을 사용하는지를 테스트하려면 제니퍼 서버의 debug_tcp 옵션을 true로 설정한다. 기본 값은 false이다. 이를 true로 설정하면 제니퍼 서버 로그 파일에 제니퍼 클라이언트 TCP 요청 내역이 기록된다.

debug_tcp = true

제니퍼 스케줄러

제니퍼 서버는 데이터 관리 혹은 임의의 작업을 수행하기 위한 스케줄러를 지원한다. 제니퍼에서는 이런 스케줄러를 TimeActor라고 한다. 제니퍼는 몇 가지 기본 스케줄러를 제공하며, 필요시 임의의 스케줄러를 작성하여 추가할 수 있다.

기본 스케줄러

제니퍼는 CleanerActor, SummaryActor, ReportActor, FileCleanerActor 등의 기본 제니퍼 스케줄러를 제공한다.

FileCleanerActor는 다음과 같이 설정한다.

time_actor_14 = com.javaservice.jennifer.server.timeactor.FileCleanerActor 02 30

첫번째 파라미터 02는 수행 시간을 의미하고, 두번째 파라미터 30은 기간을 의미한다. 따라서 기본적으로 매일 02시에 30일이 지난 로그 파일과 임시 파일을 삭제한다. 단, 확장자가 log와 png로 끝나는 파일만을 삭제한다.

나머지 스케줄러를 설정하는 방법은 해당 스케줄러와 관련된 부분에서 설명한다.

제니퍼 스케줄러 작성

임의의 스케줄러를 작성하는 방법은 다음과 같다.

스케줄러 클래스 작성

모든 스케줄러 클래스는 com.javaservice.jennifer.server.TimeActor 클래스를 상속해야 한다. TimeActor 클래스는 JENNIFER_HOME/server/common/lib/jenniferserver.jar 파일에 포함되어 있다. 따라서, 스케줄러 클래스를 작성하기 위해서는 jenniferserver.jar파일을 클래스 패스에 등록하여야 한다.

제니퍼 스케줄러 클래스는 process 메소드를 구현해야 한다.

package sample;

import com.javaservice.jennifer.server.TimeActor;

public class SampleActor extends TimeActor {
     public void process(String[] args) { }
}

process 메소드의 파라미터는 스케줄러를 제니퍼 서버에 등록할 때 설정한 파라미터 목록이다. 예를 들어, 다음과 같이 스케줄러를 등록하면, process 메소드의 파라미터는 {"03", "sample"}이 된다. 파라미터의 의미는 스케줄러마다 다르지만, 첫번째 파라미터로 해당 스케줄러가 수행될 시간을 지정하는 것을 권장한다.

time_actor_32 = sample.SampleActor 03 sample

스케줄러의 process 메소드는 1분마다 반복적으로 호출된다. 따라서 특정 시점에 해당 스케줄러가 임의의 작업을 수행해야 할지에 대한 판단을 제니퍼 서버가 아닌 스케줄러가 스스로 결정해야 한다.

다음은 TimeActor 클래스가 제공하는 주요 메소드 API에 대한 설명이다.

TimeActor 클래스 API

메소드

설명

public String getYYYYMMDD()

현재 시간을 yyyyMMdd 포멧으로 반환한다.

public static String toString(Calendar day)

파라미터 java.util.Calendar 객체의 시간을 yyyyMMdd 포멧으로 반환한다.

public String getYYYYMMDD(int type, int n)

현재를 기준으로 이전이나 이후의 일자를 yyyyMMdd 포멧으로반환한다. 첫번째 파라미터 type에는 Calendar.YEAR나 Calender.DATE나 Calender.HOUR 등을 지정할 수 있다. 두번째 파라미터 n에는 변동 크기를 지정한다. 음수 값은 과거를, 양수값은 미래를 의미한다. 예를 들어 getYYYYMMDD(Calender.MONTH, -1)은 한달 전의 날짜를 반환한다.

public String getHOUR()

현재 시간을 HH 포멧으로 반환한다

Connection getAdmConn() throws SQLException

제니퍼 관리자 데이터베이스에 대한 java.sql.Connection 객체를 반환한다.

public Connection getDataConn() throws SQLException

제니퍼 성능 데이터베이스에 대한 java.sql.Connection 객체를 반환한다.

public void log(String message)

제니퍼 서버 로그 파일에 로그 메시지를 기록한다.

스케줄러로 제니퍼 데이터베이스에 대한 작업을 수행한 후에는 반드시 사용한 JDBC 자원(java.sql.Connection, java.sql.Statement, java.sql.ResultSet)을 반환(close)한다. 그렇지 않으면 제니퍼 서버에서 장애가 발생할 수 있다.

스케줄러 클래스 패키지 및 배포

컴파일한 스케줄러 클래스를 임의의 JAR 파일로 패키지한 후에, 해당 파일을 JENNIFER_HOME/server/common/lib 디렉토리에 복사한다.

스케줄러 설정

새로운 스케줄러는 제니퍼 서버의 time_actor 옵션을 사용해서 등록한다.

time_actor_32 = sample.SampleActor 03 sample

스케줄러를 등록할 때 사용하는 제니퍼 서버의 옵션은 time_actor_로 시작하고, 다른 스케줄러와 구분하기 위한 2자의 고유한 숫자로 끝나야 한다.

새로운 스케줄러의 추가나 기존 스케줄러의 변경은 제니퍼 서버의 재시작이 필요하다.

사용자, 권한 그리고 메뉴

사용자와 그룹의 관계를 설명하고 권한을 그룹에 할당하는 방법을 설명한다. 그리고 메뉴를 관리하는 방법과 사용자 혹은 그룹 별로 메뉴를 다르게 설정하는 방법 등을 설명한다.

사용자 관리

사용자는 제니퍼 서버에 로그인할 수 있는 계정을 의미한다. 사용자 별로 접근 가능한 메뉴를 다르게 설정할 수 있으며 권한의 수준을 다르게 지정할 수 있다.

제니퍼 서버를 설치하면 admin 사용자가 만들어진다. 기본적으로 admin 사용자는 모든 메뉴에 접근할 수 있고 모든 권한을 가진다. 사용자를 추가하거나 그 정보를 변경하려면 [구성 관리 | 사용자 관리 | 사용자 관리] 메뉴를 사용한다.

사용자와 그룹

사용자에 따라서 메뉴 구성을 다르게 하거나 권한을 다르게 부여할 수 있다. 사용자가 많아지면 이와 관련한 설정 작업이 불편할 수 있다. 제니퍼 서버는 동일한 유형의 사용자를 그룹으로 묶고, 그 그룹에 대해서 메뉴 구성이나 권한을 설정할 수 있다. 즉, 그룹은 동일한 메뉴에 접근하고 동일한 권한을 가지고 있는 사용자의 집합을 의미한다.

admin 사용자와 admin 그룹

제니퍼 서버를 설치하면 admin 사용자와 admin 그룹이 기본적으로 만들어진다. admin 사용자와 admin 그룹은 임의로 삭제할 수 없다. 또한 admin 사용자는 자신이 속한 그룹(admin)을 변경할 수 없다.

사용자와 관련한 정보는 다음과 같다.

사용자 정보

항목

설명

아이디

로그인에 사용하는 계정 아이디로, 신규 생성 후에는 변경할 수 없다.

이름

사용자 이름

그룹

사용자가 속한 그룹으로 사용자는 하나의 그룹에만 속할 수 있다. 단 여러 사용자는 동일한 그룹에 속할 수 있다.

회사

사용자가 속한 회사

부서

사용자가 속한 부서

직책

사용자 직책

이메일

사용자 이메일 주소

전화번호

사용자 전화번호

핸드폰

사용자 이동통신 전화번호

초기 메뉴

로그인 후에 이동하는 첫번째 메뉴로 사용자 혹은 사용자가 속한 그룹이 해당 메뉴에 접근할 수 있어야 한다.

회사, 부서, 직책, 이메일, 전화번호, 핸드폰 등은 부가 정보로서 제니퍼 서버 사용에 영향을 주지 않는다.

그룹 관리

사용자 정보 편집 화면에서 그룹을 선택하는 드랍 다운 박스 옆에 있는 [그룹 관리] 링크를 통해서 그룹 정보를 관리한다.

그룹 관리 링크

그룹과 관련한 정보는 다음과 같다.

그룹 정보

항목

설명

아이디

그룹 아이디

이름

그룹 이름

설명

그룹에 대한 설명

에이전트 목록

그룹 별 에이전트 지정하기를 참조한다.

초기 메뉴

해당 그룹에 속한 사용자가 로그인 후에 이동하는 첫번째 메뉴로 그룹이 해당 메뉴에 접근할 수 있어야 한다.

사용자 정보에 설정한 초기 메뉴가 그룹 정보에 설정한 초기 메뉴에 우선한다.

설정하지 않은 경우에는 [대시보드 | 제니퍼 대시보드] 메뉴가 초기 메뉴가 된다.

그룹 별 에이전트 지정하기

사용자 별로는 모니터링하는 에이전트를 다르게 지정할 수 없지만, 그룹 별로는 모니터링하는 에이전트를 다르게 지정할 수 있다. 예를 들어, 제니퍼 서버를 통해서 W11, W12,W13 등의 에이전트를 모니터링하고 있는 상황에서, A 그룹에게는 W11, W12만을, B 그룹에게는 W12, W13만을 모니터링하게 할 수 있다.

그룹 정보 편집 화면에서 특정 그룹이 모니터링할 에이전트 이름을 콤마(,)를 구분자로 하여 에이전트 목록 필드에 입력한다. 전체를 의미하는 가상 에이전트 TOT를 입력하지 않으면 대시보드 등에서 전체와 관련한 정보를 확인할 수 없다.

에이전트 목록 설정 화면

사용자 숫자 제한하기

기본적으로 제니퍼 서버를 동시에 사용할 수 있는 사용자의 숫자를 제한하지 않는다. 동시 사용자 수를 제한하고자 하는 경우, 제니퍼 서버의 userlogin_count_limit 옵션을 통해서 사용자 숫자를 제한할 수 있다.

userlogin_count_limit = 10

제니퍼 서버와 제니퍼 클라이언트(애플릿)는 주기적으로 TCP 통신을 한다. 그런데 제니퍼 클라이언트와의 TCP 통신을 담당하는 제니퍼 서버의 소켓 수는 제한되어 있다. 이는 제니퍼 서버의 number_of_tcp_pooled_workers 옵션으로 설정하는데 기본 값은 80이다. 평균적으로 제니퍼 클라이언트 당 약 3개의 소켓을 사용하는데, 사용자가 증가하면 TCP 연결에 필요한 소켓을 할당받지 못해서 제니퍼 클라이언트가 정상적으로 동작하지 못할 수 있다. 따라서 이 경우에는 userlogin_count_limit 옵션을 통해서 사용자 숫자를 제한할 수 있다.

동일 계정으로 로그인하는 것을 방지하기

기본적으로 여러 사용자가 동일한 사용자 계정으로 제니퍼 서버를 동시에 사용할 수 있다. 예를 들어, 사용자 A가 admin 사용자 계정으로 제니퍼 서버를 사용하고 있는 상태에서, 사용자 B가 동일한 admin 사용자 계정으로 제니퍼 서버에 로그인해도 어떠한 제약이 없다.

다른 사용자가 동일한 사용자 계정으로 제니퍼 서버를 사용하는 것을 방지하기 위해서는, 제니퍼 서버의 prevent_duplicated_login 옵션을 true로 지정한다.

prevent_duplicated_login = true

중복 로그인 방지는 나중에 로그인한 사용자가 먼저 로그인한 사용자를 밀어내는 방식으로 동작한다. 예를 들어, 사용자 A가 admin 사용자 계정으로 제니퍼 서버를 사용하고 있는 상태에서, 사용자 B가 동일한 admin 사용자 계정으로 제니퍼 서버에 로그인을 시도하면, 제니퍼 서버는 사용자 B에게 이미 admin 계정으로 로그인한 사용자가 있음을 알려준다.

중복 로그인 확인 화면

이 때 사용자 B는 먼저 로그인한 사용자 A를 밀어내고 제니퍼 서버에 로그인할 수 있는 선택권을 갖는다. 사용자 B가 사용자 A를 밀어내면 사용자 A는 자동으로 로그아웃된다.

로그인한 사용자 확인

[구성 관리 | 사용자 관리 | 로그인 사용자] 메뉴에서 제니퍼 서버에 로그인해 있는 사용자를 확인할 수 있다. 로그인한 사용자 목록에서 글자 하단에 줄이 있는 열은 사용자 자기 자신을 나타낸다.

로그인한 사용자 목록

항목

설명

아이디

HTTP 세션 아이디

사용자 아이디

사용자 아이디

사용자 IP

사용자 IP

로그인 시간

제니퍼 서버에 로그인한 시간

마지막 접근 시간

마지막으로 제니퍼 서버에 접근한 시간

언어

사용자 언어

패스워드 변경 및 패스워드 분실 조치

모든 사용자는 [구성 관리 | 사용자 관리 | 패스워드 변경] 메뉴에서 본인의 패스워드를 변경할 수 있다.

admin 그룹에 속한 사용자는 [구성 관리 | 사용자 관리 | 사용자 관리] 메뉴에서 본인을 포함한 모든 사용자의 패스워드를 변경할 수 있다. 타 사용자 패스워드는 다음과 같이 변경한다.

타 사용자 패스워드 변경

권한 관리

사용자는 제니퍼 서버를 통해서 자바 애플리케이션에 대한 가비지 콜렉션을 수행하거나 제니퍼 서버 사용자와 그룹 정보를 편집할 수 있다. 이와 같이 사용자가 수행할 수 있는 주요 행위를 권한이라고 하며 사용자가 속한 그룹 별로 권한을 다르게 부여할 수 있다.

예를 들어, gc 권한은 자바 애플리케이션에 대한 가비지 컬렉션 수행 권한을 의미하는데 A 그룹에 gc 권한을 부여하고 B 그룹에는 gc 권한을 부여하지 않으면, A 그룹에 속한 사용자는 자바 애플리케이션에 대한 가비지 컬렉션을 수행할 수 있지만 B 그룹에 속한 사용자는 자바 애플리케이션에 대한 가비지 컬렉션을 수행할 수 없다.

[구성 관리 | 사용자 관리 | 권한 관리] 메뉴에서 권한 목록을 확인하고 특정 권한을 특정 그룹에 부여한다.

권한 목록

권한 아이디

설명

codedisassemble

자바 클래스 코드를 바이너리 포멧으로 볼 수 있는 권한

gc

자바 애플리케이션에 대해서 가비지 컬렉션을 수행할 수 있는 권한

groupedit

그룹을 편집할 수 있는 권한

killthread

자바 애플리케이션의 자바 쓰레드를 정지시킬 수 있는 권한

menuedit

메뉴를 편집할 수 있는 권한

pageedit

사용자 정의 대시보드를 구성할 수 있는 권한

reportbuild

보고서 템플릿을 작성할 수 있는 권한

sqlparam

SQL 파라미터를 볼 수 있는 권한

svcdump

자바 애플리케이션의 주요 정보를 덤프 파일에 기록할 수 있는 권한

useredit

사용자를 편집할 수 있는 권한

board

보드 영역 표시 여부와 관련한 권한

권한을 특정 그룹에 할당하려면 다음과 같이 한다.

권한 편집 화면

메뉴 관리

[구성 관리 | 메뉴 관리] 메뉴에서 메뉴를 관리한다. 제니퍼 서버는 3단계 메뉴로 구성된다

메뉴 목록 화면

  1. 메뉴 트리 노드 - 메뉴는 3단계 구조로 되어 있고 메뉴 트리 노드를 통해서 하위 메뉴를 열고 닫는다.

  2. 컨텍스트 메뉴 - 메뉴 아이디 / 이름 칼럼을 클릭하면 컨텍스트 메뉴 목록이 나타난다.

  3. 메뉴 수정 - 컨텍스트 메뉴 목록에서 [수정] 메뉴를 클릭하면 화면 오른 쪽에 메뉴를 수정할 수 있는 입력폼이 나타난다.

  4. 하위 메뉴 추가 - 컨텍스트 메뉴 목록에서 [하위 메뉴 추가] 메뉴를 클릭하면 화면 오른 쪽에 하위 메뉴를 입력할 수 있는 입력폼이 나타난다. 단 메뉴는 3 단계까지만 입력이 가능하기 때문에 3 단계 메뉴의 경우에는 이 메뉴는 비활성화되어 있다.

  5. 메뉴 삭제 - 컨텍스트 메뉴 목록에서 [삭제] 메뉴를 클릭하면 메뉴가 삭제된다.

  6. 1 단계 메뉴 추가 - 메뉴 목록 오른쪽 하단에 있는 [추가] 버튼을 클릭하여 1 단계 메뉴를 추가한다.

새로운 메뉴를 생성할 때 메뉴 아이디는 제니퍼 서버에 의해서 자동으로 만들어진다.

메뉴 기본 정보는 다음과 같다.

메뉴 정보

항목

설명

이름 코드

다국어 지원을 위한 메시지 키를 입력하는 필드이다.

상위 메뉴

해당 메뉴의 위치를 수정하려면 상위 메뉴 필드의 값을 수정한다.

기본 하위 메뉴

사용자가 상단 영역에서 특정 메뉴를 클릭했을 때 해당 메뉴의 URL 등이 지정되어 있지 않은 경우에 기본 하위 메뉴로 설정한 메뉴의 URL로 이동한다.

순서

상위 메뉴가 같은 동일 단계의 메뉴들 간의 순서를 결정하는데 사용하는 필드이다. 필드의 값이 작은 메뉴를 먼저 보여준다.

그룹

해당 메뉴에 접근할 수 있는 그룹을 지정한다. 특정 메뉴에 대해서 접근 권한이 없는 그룹에 속한 사용자가 로그인을 하면 상단 영역에 해당 메뉴가 나타나지 않는다.

메뉴는 몇 가지 유형으로 구분되며 해당 유형에 따라서 입력할 수 있는 내용이 달라진다.

사용자 혹은 그룹에 따른 메뉴 설정

메뉴 정보 편집 화면에서 특정 메뉴에 접근할 수 있는 그룹을 지정할 수 있다. 특정 사용자 혹은 그룹에 대해서 메뉴를 설정하는 것은 사용자 관리 혹은 그룹 관리에서 하는 것이 편리하다. 사용자에 대해서 메뉴를 설정하는 방법은 다음과 같다.

그룹에 대해서 메뉴를 설정하는 방법은 다음과 같다.

상위 메뉴와 하위 메뉴를 독립적으로 선택해야 한다. 상위 메뉴를 선택했을 때 자동으로 하위 메뉴가 선택되지 않는다. 그리고 상위 메뉴를 선택하지 않은 상태에서 하위 메뉴만을 선택하면 해당 하위 메뉴는 화면에 나타나지 않는다.

사용자에 대한 메뉴 설정이 그룹에 대한 메뉴 설정에 우선한다.

패스워드 관리

로그인과 관련한 설정

보안 강화를 위해서 로그인과 관련한 다양한 정책을 설정할 수 있다. 우선 사용자가 제니퍼 서버에 처음 로그인을 한 후에 패스워드를 변경하도록 강제할 수 있다. 이 기능을 사용하려면 제니퍼 서버의 enable_initial_password_change 옵션을 true로 설정한다. 기본 값은 false이다.

enable_initial_password_change = true

이 옵션을 true로 설정하면 처음 로그인한 사용자는 패스워드 변경 화면에서 패스워드를 변경해야 다른 메뉴로 이동할 수 있다.

또한, 정해진 기간이 지나면 사용자가 패스워드를 변경하도록 강제할 수 있다. 이 기능을 사용하려면 제니퍼 서버의 enable_password_expiration_check 옵션을 true로 설정한다. 기본 값은 false이다.

enable_password_expiration_check = true

이 옵션을 true로 설정하면 일반 사용자는 60일이 지나면 패스워드를 변경해야 하고 관리자 그룹에 속하는 사용자는 30일이 지나면 패스워드를 변경해야 한다. 제니퍼 서버의 password_expiration_days 옵션을 통해서 패스워드의 유효 기간을 설정할 수 있다.

password_expiration_days = 60

이 옵션은 일반 사용자와 관리자 그룹에 속한 사용자에게 모두 적용된다. 관리자 그룹에 속한 사용자의 패스워드 유효 기간을 설정하려면 제니퍼 서버의 admin_password_expiration_days 옵션을 사용한다.

admin_password_expiration_days = 30

로그인 시에 사용자가 정해진 임계치 이상으로 패스워드를 틀리면 해당 사용자 계정을 사용하지 못하도록 설정할 수 있다. 이 기능을 사용하려면 제니퍼 서버의 enable_invalid_login_lock 옵션을 true로 설정한다. 기본 값은 false이다.

enable_invalid_login_lock = true

기본적으로 3회 이상 패스워드를 틀리면 해당 사용자 계정을 사용할 수 없는데 제니퍼 서버의 invalid_login_count 옵션을 통해서 임계치를 설정할 수 있다.

invalid_login_count = 3

위와 같은 이유로 사용할 수 없게 된 사용자 계정은 관리자 그룹에 속한 사용자가 [구성 관리 | 사용자 관리] 메뉴에서 해당 사용자의 패스워드를 변경해주면 사용할 수 있게 된다.

패스워드 변경과 관련한 설정

악의적인 사용자에 의해서 패스워드가 유추되는 것을 방지하기 위해서 패스워드에 대한 다양한 정책을 설정할 수 있다.

우선 패스워드의 길이를 제한할 수 있다. 제니퍼 서버의 password_length_min 옵션을 통해서 패스워드의 최소 길이를, password_length_max 옵션을 통해서 패스워드의 최대 길이를 설정할 수 있다.

password_length_min = 3
password_length_max = 10

그리고 패스워드에 대문자, 소문자, 숫자, 특수 문자 등을 몇 개 이상 포함시키도록 설정할 수 있다. 예를 들어서 제니퍼 서버의 password_uppercase_count 옵션을 통해서 패스워드에 포함시켜야 하는 대문자의 최소 숫자를 설정할 수 있다.

password_uppercase_count = 3

동일하게 소문자는 password_lowercase_count 옵션으로, 숫자는 password_number_count 옵션으로, 특수 문자는 password_specialcase_count 옵션으로 설정하면 된다.

password_lowercase_count = 2
password_number_count = 2
password_specialcase_count = 2

다음은 패스워드에 사용 가능한 특수 문자이다.

`~!@#$%^&*()-_=+[{]}\|;:'",<.>/?

제니퍼 서버의 password_specialcase_list 옵션을 통해서 패스워드에 사용 가능한 특수문자를 임의로 설정할 수 있다.

password_specialcase_list = !@#$%?

또한 과거에 사용한 패스워드의 재사용을 방지할 수도 있다. 제니퍼 서버의 password_history_count 옵션을 통해서 재사용할 수 없는 과거 패스워드의 숫자를 설정하면 최근 날짜를 기준으로 해당 숫자 만큼의 과거 패스워드는 재사용할 수 없다.

password_history_count = 6

그리고 패스워드에 동일한 문자를 사용하거나 연속적으로 이어지는 문자를 사용하는 것을 방지할 수 있다. 동일한 문자를 사용하는 것을 방지하려면 제니퍼 서버의 password_enable_repetive_charactor_check 옵션을 true로 설정하고 연속적으로 이어지는 문자를 사용하는 것을 방지하려면 제니퍼 서버의 password_enable_consecutive_charactor_check 옵션을 true로 설정한다.

password_enable_repetive_charactor_check = true
password_enable_consecutive_charactor_check = true

마지막으로 사용자 아이디나 지정된 단어를 패스워드에 사용하는 것을 방지할 수 있다. 이 기능을 사용하려면 제니퍼 서버의 password_enable_common_word 옵션을 true로 설정한다.

password_enable_common_word = true

이 옵션을 true로 설정하면 기본적으로 패스워드에 사용자 아이디를 사용하는 것을 방지한다. 지정된 단어의 사용까지 방지하려면 JENNIFER_HOME/server/bin 디렉토리에 password_common_word.txt 파일을 만든 후에 사용할 수 없는 단어를 입력한다. 단어는 줄바꿈으로 구분한다. 관리자 그룹에 속한 사용자가 [구성 관리 | 사용자 관리 | 사용자 관리] 메뉴에서 다른 사용자의 패스워드를 변경할 때는 위에서 설명한 내용이 적용되지 않는다.

게시판 관리

[구성 관리 | 게시판] 메뉴에서 게시판 기능을 사용한다.

게시판 유형

게시판 유형은 제니퍼 서버의 bbs_type_list 옵션으로 설정한다. 게시판 유형은 [게시판 유형 코드:게시판 유형 이름] 형식을 따르고, 각 게시판 유형은 세미 콜론[;]으로 구분한다.

bbs_type_list = biz:Business;rpt:Report;chat:Personal

기본으로 제공하는 게시판 유형은 다음과 같다.

게시판 유형

게시판 유형 코드

게시판 유형 이름

설명

biz

Business

업무 관련 게시판

rpt

Report

보고서 관련 게시판

chat

Personal

사적 게시판

새로운 게시판 유형은 제니퍼 서버 bbs_type_list 옵션을 수정하여 추가한다.

게시판 검색

등록된 게시물은 게시판 유형, 제목, 내용 등을 조건으로 검색할 수 있다. 제목과 내용은 LIKE 검색을 지원한다.

게시판 검색 조건

게시물 올리기

새로운 게시물은 다음과 같이 등록한다.

  1. [구성 관리 | 게시판] 메뉴로 이동한다.

  2. 게시물 목록 하단에 있는 [추가] 버튼을 클릭한다.

  3. 게시판 입력 폼에서 내용을 입력한 후에 하단에 있는 [쓰기] 버튼을 클릭한다.

게시판 입력 필드

필드

설명

게시판 유형

게시판 유형을 선택한다. 게시물을 올린 이후에는 수정할 수 없다.

제목

게시물 제목

처리 담당자

해당 게시물에 대한 처리가 필요한 경우에는 처리 담당자를 지정한다.

처리 요망일

해당 게시물에 대한 처리가 필요한 경우에는 처리 요망일을 지정한다.

상태

[관련 없음], [처리 요청], [진행 중], [처리 완료] 중에서 하나를 선택하여 해당 게시물의 상태를 지정한다 .

내용

게시물 내용

첨부 파일

첨부할 파일을 선택한다. 첨부할 수 있는 파일의 크기와 형식에는 제한이 없다.

첨부 파일이 제니퍼 서버에 저장되는 위치는 제니퍼 서버의 upload_directory 옵션으로 설정한다. 기본 디렉토리는 JENNIFER_HOME/data/upload 디렉토리이다.

게시물 변경은 다음과 같이 한다.

  1. [구성 관리 | 게시판] 메뉴로 이동한다.

  2. 게시물 목록에서 수정할 게시물 제목을 클릭한다.

  3. 게시물 보기 화면에서 [수정] 링크를 클릭한다.

  4. 게시판 입력 폼에서 내용을 수정한 후에 하단에 있는 [쓰기] 버튼을 클릭한다.

게시물 삭제는 다음과 같이 한다.

  1. [구성 관리 | 게시판] 메뉴로 이동한다.

  2. 게시물 목록에서 삭제할 게시물 제목을 클릭한다.

  3. 게시물 보기 화면에서 [삭제] 링크를 클릭한다.

답글이 있는 경우에는 게시물을 삭제할 수 없다.

답글 올리기

게시물에 대한 답글 올리기는 다음과 같이 한다.

  1. [구성 관리 | 게시판] 메뉴로 이동한다.

  2. 게시물 목록에서 답글을 올릴 게시물 제목을 클릭한다.

  3. 게시물 보기 화면에서 하단에 있는 [답글 올리기] 버튼을 클릭한다.

  4. 답글 입력 폼에서 내용을 입력한 후에 하단에 있는 [저장] 버튼을 클릭한다.

답글 변경은 다음과 같이 한다.

  1. [구성 관리 | 게시판] 메뉴로 이동한다.

  2. 게시물 목록에서 답글을 올릴 게시물 제목을 클릭한다.

  3. 게시물 보기 화면에서 수정할 답글 하단에 있는 [수정] 링크를 클릭한다.

  4. 답글 입력 폼에서 내용을 수정한 후에 하단에 있는 [저장] 버튼을 클릭한다.

답글 삭제는 다음과 같이 한다.

  1. [구성 관리 | 게시판] 메뉴로 이동한다.

  2. 게시물 목록에서 답글을 올릴 게시물 제목을 클릭한다.

게시물 보기 화면에서 삭제할 답글 하단에 있는 [삭제] 링크를 클릭한다.

도메인 구성

하나의 제니퍼 서버가 감당할 수 있는 제니퍼 에이전트의 숫자와 업무 처리량에는 한계가 있다. 시스템 환경이 한계를 초과하는 경우에는 여러 개의 제니퍼 서버를 운영해서 부하를 분산시켜야 한다. 이를 위한 것이 도메인 구성이다.

또한 도메인 구성 여부와 상관없이, 제니퍼 에이전트를 업무 종류에 따라 계층적으로 분류해서 모니터링할 필요성도 있다. 이를 위한 것이 노드 구성이다.

도메인이란?

하나의 제니퍼 서버가 감당할 수 있는 제니퍼 에이전트의 숫자와 업무 처리량에는 한계가 있다. 이 한계를 초과하는 경우에는 여러 개의 제니퍼 서버를 운영해서 부하를 분산시켜야 한다.

하나의 제니퍼 서버가 감당할 수 있는 제니퍼 에이전트의 숫자는 50개 정도이고 TPS는 약 1000이다.

그러나 여러 개의 제니퍼 서버를 운영하면 관리 비용은 증가하고 사용자 편의성은 감소하는 단점이 있다. 이런 단점을 해결하기 위해서 제니퍼 4.0에서는 도메인 구성을 통해서 여러 개의 제니퍼 서버를 통합해서 관리하는 통합 사용자 인터페이스를 제공한다.

여기서 도메인은 개별 제니퍼 서버를 의미하고, 도메인 구성은 통합 서버를 통해서 여러개의 제니퍼 서버를 하나로 통합하는 것을 의미한다.

제니퍼 에어전트로 모니터링하는 자바 애플리케이션을 특정 제니퍼 서버에 할당할 때는 우선 업무의 유사성을 고려한다. 그러나 업무의 유사성만을 기준으로 제니퍼 에이전트를 할당하면 제니퍼 서버가 많아질 수 있다. 그러므로 업무의 유사성이 낮더라도 TPS가 높지 않은 제니퍼 에이전트들을 하나의 제니퍼 서버에 모두 할당하는 것을 권장한다.

통합 서버

통합 서버는 여러 개의 제니퍼 서버 중에서 사용자가 웹브라우저를 통해서 접근하는 유일한 서버이다. 따라서 통합 서버도 제니퍼 서버이다. 사용자는 이 통합 서버를 통해서 도메인 구성을 하고 사용자, 권한, 메뉴 등의 설정을 한다.

여러 개의 제니퍼 서버 중에서 통합 서버를 선택할 때는 다음 사항을 고려한다.

도메인 관리

도메인 구성과 관련한 작업은 통합 서버로 선택한 제니퍼 서버에서 이루어진다.

도메인을 추가하는 방법은 다음과 같다.

다음은 도메인 입력 폼의 필드에 대한 설명이다.

도메인 입력 폼

필드

설명

아이디

해당 제니퍼 서버를 지칭하는 고유한 아이디로, 띄어쓰기 없이 영어와 숫자만을 사용하여 입력한다.

이름

해당 제니퍼 서버의 이름

IP

해당 제니퍼 서버의 IP 주소

HTTP 포트

해당 제니퍼 서버의 HTTP 포트 번호

TCP 포트

해당 제니퍼 서버의 server_tcp_port 옵션으로 설정한 포트 번호

버전

해당 제니퍼 서버의 버전으로 4.0을 입력한다. 제니퍼 4.0 이하의 버전은 도메인을 통해서 통합 할 수 없다.

상태

Inactive로 설정한 제니퍼 서버는 사용하지 않는다.

도메인 추가시 제니퍼 서버 외부 IP를 제니퍼 서버가 설치된 하드웨어에서는 호출할 수 없는 경우가 있다. 이 문제를 해결하려면 IP를 설정할 때 제니퍼 서버 외부 IP와 내부 IP를 슬래시[/]를 구분자로 입력하도록 한다.

External_Jennifer_Server_IP/Internal_Jennifer_Server_IP

도메인을 추가한 경우에는 싱글 사인온을 위해서 해당 제니퍼 서버의 domain_url 옵션에 통합 서버의 HTTP 주소를 설정한다.

domain_url = http://통합서버IP:포트번호

외부 IP와 내부 IP가 분리되어 있는 경우에는 외부 IP를 사용한다. 통합 서버가 싱글 사인온 서버의 역할도 수행하기 때문에, 통합 서버에 로그인한 사용자는 통합 서버에 도메인으로 등록된 제니퍼 서버가 제공하는 서비스를 별도의 로그인 없이 사용할 수 있다.


이 옵션을 설정하기 전에는 도메인으로 등록한 해당 제니퍼 서버가 통합 서버와 싱글 사인온으로 연결되어 있지 않기 때문에 해당 제니퍼 서버에 로그인하여 옵션을 수정하거나 해당 제니퍼 서버의 설정 파일을 직접 수정해야 한다.

도메인을 수정하는 방법은 다음과 같다.

도메인을 삭제하는 방법은 다음과 같다.

도메인의 순서를 변경하는 방법은 다음과 같다.

도메인 구성을 변경한 후에 통합 서버에 다시 로그인을 해야 변경 사항이 반영된다.

제니퍼 에이전트 불러오기

노드를 구성하거나 제니퍼 에이전트에 이름을 부여하려면 도메인을 구성한 후에 제니퍼 에이전트 불러오기를 수행해야 한다.

제니퍼 에이전트 불러오기

제니퍼 에이전트를 불러오는 방법은 다음과 같다.

도메인 입력폼의 [취소] 버튼과 상관없이 [불러오기] 버튼을 클릭하는 순간에 관련 데이터가 저장된다.

특정 제니퍼 에이전트의 이름을 변경하는 방법은 다음과 같다.

더 이상 사용하지 않는 특정 제니퍼 에이전트를 삭제하는 방법은 다음과 같다.

도메인 구성에 따른 사용자 인터페이스의 변화

도메인을 구성한 경우에는 많은 사용자 인터페이스 화면에서 도메인을 명시적으로 선택해 주어야 한다.

예를 들어, [구성 관리 | 라이센스키 관리] 메뉴에서 도메인을 드랍다운 박스를 통해서 선택해야 한다.

라인센스키 관리 - 도메인 선택

제니퍼 에이전트 선택 영역은 도메인을 기준으로 한다. 다른 도메인에 속하는 제니퍼 에이전트 목록을 확인하는 방법은 다음과 같다.

제니퍼 에이전트 선택 영역 - 도메인의 선택

노드 구성

노드란?

제니퍼 서버가 모니터링하는 제니퍼 에이전트가 많으면, 업무 종류에 따라 트리 형태로 제니퍼 에이전트를 묶어 체계적으로 분류하여 모니터링할 수 있다. 여기서 노드는 일부 제니퍼 에이전트의 묶음이고 노드 구성은 노드를 이용해서 트리 형태로 전체 제니퍼 에이전트를 분류하는 것이다.

예를 들어, 특정 제니퍼 서버가 모니터링하는 제니퍼 에이전트가 W11에서 W19까지 있을때, 업무 성격을 기준으로 W11에서 W15까지로 [그룹웨어] 노드를 구성하고 W16에서 W19까지로 [HR] 노드를 구성 할 수 있다. 그리고 [그룹웨어] 노드와 [HR] 노드로 [사내시스템] 노드를 구성할 수 있다.

노드의 단계는 4단계까지로 제한된다.

노드 관리

노드를 구성하려면 우선 도메인을 등록한 후에 제니퍼 에이전트 불러오기를 수행해야 한다.

노드를 구성하려면 제니퍼 서버가 하나인 경우에도 도메인을 등록해야 한다. 여기서 등록하는 도메인은 현재 사용하고 있는 제니퍼 서버이다.

노드 구성 화면

노드를 추가하려면 우선 최상위 노드를 입력해야 한다. 최상위 노드를 입력하는 방법은 다음과 같다.

노드 입력 필드

필드

설명

이름

노드 이름

도메인

노드에 할당할 제니퍼 에이전트가 속하는 도메인으로, 최상위 노드와 모든 하위 노드는 동일한 도메인에 속하는 제니퍼 에이전트만으로 설정해야 한다.

도메인은 노드를 생성한 후에는 수정할 수 없다.

그룹명

정확한 동시단말 사용자 수와 방문자 수를 모니터링하려면 해당 노드에 속하는 제니퍼 에이전트들의 제니퍼 에이전트 그룹 아이디를 입력한다.

상태

Inactive로 설정된 노드는 사용하지 않는다.

그룹 할당

해당 노드를 사용하는 그룹으로, 해당 그룹에 속한 사용자들에게만 해당 노드가 나타난다. 상위 노드에 특정 그룹이 할당되어 있지 않으면, 하위 노드에 해당 그룹이 할당되어 있어도 해당 그룹에 속한 사용자에게 하위 노드가 나타나지 않는다.

에이전트 할당

노드에 속하는 제니퍼 에이전트를 할당한다. 노드가 하위 노드들을 묶는 역할만을 하는 경우에는 제니퍼 에이전트를 할당하지 않아도 된다.

특정 최상위 노드가 제니퍼 서버를 통해서 모니터링하는 모든 제니퍼 에이전트를 포함하고 있다면 그룹명에 TOT를 입력한다. 그리고 일반 노드에 전체 동시단말 사용자 수와 전체 방문자 수가 HTTP 쿠키에 기반한 정확한 값으로 표시되기를 원하면 제니퍼 서버의 agent_group 옵션으로 설정한 제니퍼 에이전트 그룹 아이디를 노드의 그룹명으로 입력한다. 그룹명을 지정하지 않으면 전체 동시단말 사용자 수와 전체 방문자 수는 개별 제니퍼 에이전트의 동시단말 사용자 수와 방문자 수의 단순 합으로 표시된다.

agent_group = @01:W11,W12; @02:W13,W14

제니퍼 에이전트 그룹 아이디는 @로 시작하고 2자리 숫자로 끝나야 한다. 여러 개의 제니퍼 에이전트 그룹은 세미 콜론(;)을 구분자로 구분하고, 제니퍼 에이전트 그룹 아이디와 해당 제니퍼 에이전트 그룹에 속하는 제니퍼 에이전트 목록은 콜론(:)을 구분자로 구분한다. 그리고 동일한 제니퍼 에이전트 그룹에 속하는 제니퍼 에이전트들은 콤마(,)를 구분자로 구분한다. 이 옵션을 수정하면 제니퍼 서버를 재시작하여야 한다.

2개 이상의 제니퍼 서버로 도메인을 구성한 경우에는 제니퍼 서버의 agent_group 옵션은 해당 제니퍼 에이전트가 존재하는 제니퍼 서버에 설정해야 한다. 제니퍼 서버가 다른 제니퍼 에이전트들로 agent_group 옵션을 설정할 수는 없다.

하위 노드를 추가하는 방법은 다음과 같다.

하위 노드에는 상위 노드와 동일한 도메인에 속하는 제니퍼 에이전트만을 할당할 수 있다. 그리고 이미 다른 노드에 할당한 제니퍼 에이전트를 중복 할당할 수는 없다.

노드를 수정하는 방법은 다음과 같다.

노드를 삭제하는 방법은 다음과 같다.

동일한 상위 노드에 속하는 하위 노드들의 순서를 변경하는 방법은 다음과 같다.

노드 구성을 변경한 후에 제니퍼 서버에 다시 로그인을 해야 변경 사항이 반영된다.

노드 구성에 따른 사용자 인터페이스의 변화

노드를 구성하면 대부분의 사용자 인터페이스 화면 상단에 존재하는 제니퍼 에이전트 선택 영역이 달라진다.

일단 노드를 구성하면 제니퍼 에이전트 선택 영역의 뷰를 다음 3가지 중에서 선택할 수 있다.

제니퍼 에이전트 선택 영역 - 노드의 선택

그룹으로 보기 - 노드 구성이 노드 그룹 영역으로 나타나는 방식이다.

제니퍼 에이전트 선택 영역 - 그룹으로 보기

리스트로 보기 - 노드 구성이 드랍다운 박스로 나타나는 방식이다.

제니퍼 에이전트 선택 영역 - 리스트로 보기

도메인 별 보기 - 노드 구성과는 상관없이 도메인을 기준으로 특정 도메인에 속한 제니퍼 에이전트를 표시하는 방식이다.

제니퍼 에이전트 선택 영역 - 도메인 별 보기

제니퍼 에이전트 선택 영역의 뷰를 변경하는 방법은 다음과 같다.

노드 그룹 영역이나 드랍다운 박스에서 특정 노드를 선택하면 해당 노드와 모든 하위 노드에 할당한 제니퍼 에이전트를 기준으로 화면이 구성된다.

그런데 새로운 제니퍼 에이전트를 추가한 경우나 실수로 특정 제니퍼 에이전트를 노드에 할당하지 않은 경우와 같이, 노드에 할당되지 않는 제니퍼 에이전트가 있을 수 있다. 이 경우에 admin 그룹에 속한 사용자에게는 [도메인 이름(미설정)]을 이름으로 하는 최상위 노드가 만들어지고, 그 노드에 어떤 노드에도 할당되지 않은 제니퍼 에이전트가 할당된다.

미할당 제니퍼 에이전트가 있는 경우

데이터 관리

제니퍼 서버는 제니퍼 에이전트와 제니퍼 독립 에이전트 등으로부터 수집한 데이터를 파일과 데이터베이스에 저장한다.

데이터 파일

제니퍼 서버는 데이터베이스에 저장하기에 적합하지 않은 X-View 트랜잭션과 프로파일 데이터 등을 파일에 저장한다.

데이터 파일이 저장되는 디렉토리 위치는 제니퍼 서버의 data_directory 옵션으로 설정한다.

data_directory = ../../data/file/

기본으로 데이터 파일이 저장되는 디렉토리는 JENNIFER_HOME/data/file이며, 아래에 일자별로 하위 디렉토리가 만들어지고 그 일자별 디렉토리에 데이터 파일이 저장된다. 디렉토리의 구조 및 파일의 형식은 임의로 변경될 수 있다.

파일 손상이 발생할 수 있기 때문에, 제니퍼 서버의 운영 중에는 data_directory 옵션을 변경하지 않는다. 해당 옵션을 변경하려면 제니퍼 서버를 정지한 후에, 제니퍼 서버의 설정 파일에서 직접 변경하도록 한다.

데이터베이스

제니퍼 서버는 대부분의 성능 데이터와 구성 데이터 등을 데이터베이스에 저장한다. 그리고 데이터베이스는 성능 데이터를 저장하는 성능 데이터베이스와 구성 데이터를 저장하는 관리자 데이터베이스로 구분된다.

기본적으로 제니퍼 서버는 아파치 더비를 데이터베이스로 사용한다.

제니퍼 에이전트 개수가 많거나 서비스 요청률이 높을 때 상용 DBMS를 사용하면 성능 개선 효과를 볼 수 있다. 성능 데이터베이스와 관리자 데이터베이스로 서로 다른 DBMS를 사용할 수 있는데 관리자 데이터베이스가 성능에 미치는 영향은 없기 때문에 성능 데이터베이스에만 상용 DBMS를 사용하고 관리자 데이터베이스에는 아파치 더비를 사용하는 것을 권장한다.

아파치 더비의 사용

아파치 더비 데이터베이스의 위치는 제니퍼 서버의 system.derby.system.home 옵션으로 설정한다.

system.derby.system.home = ../../data/database

기본적으로 데이터베이스가 저장되는 디렉토리는 JENNIFER_HOME/data/datab ase이다.

제니퍼 서버에서 아파치 더비를 사용하기 위한 JDBC 연결은 JENNIFER_HOME/server/conf/Catalina/localhost/ROOT.xml 파일에 설정되어 있다.

다음은 성능 데이터베이스에 대한 JDBC 설정이다.

<Resource name="jdbc/Jennifer" auth="Container"
     type="javax.sql.DataSource" maxActive="100" maxIdle="30"
     maxWait="10000" username="jennifer" password="jennifer"
     driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
     url="jdbc:derby:jennifer;create=true" />

다음은 관리자 데이터베이스에 대한 JDBC 설정이다.

<Resource name="jdbc/JenniferAdmin" auth="Container"
     type="javax.sql.DataSource" maxActive="100" maxIdle="30"
     maxWait="10000" username="jennifer" password="jennifer"
     driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
     url="jdbc:derby:jenniferadm;create=true" />

별도의 자바 애플리케이션에서 아파치 더비 데이터베이스에 접근하려면, 제니퍼 서버에 다음 옵션들을 추가한 후에 제니퍼 서버를 재시작한다.

system.derby.drda.startNetworkServer = true
system.derby.drda.portNumber = 1527
system.derby.drda.host = 192.168.0.1

system.derby.drda.host 옵션에는 127.0.0.1이나 localhost가 아닌 실제 IP 주소를 입력해야 한다.

아파치 더비를 사용하는 경우에는 Reorg 스케줄러를 이용해서 테이블 스페이스의 낭비를 최소화하고 있다.

time_actor_2 = com.javaservice.jennifer.server.timeactor.ReorgActor 03

기본적으로 매일 오전 3시에 테이블 스페이스를 정리한다.

기본적으로 데이터베이스로 아파치 더비를 사용하도록 설정되어 있기 때문에, 아파치 더비를 사용하는 경우에는 설정을 변경할 필요가 없다.

오라클의 사용

오라클을 사용하는 경우에는 오라클 9i 이상을 사용해야 하고 JDBC 드라이버는 오라클 10g 이상을 사용해야 한다. 그리고 데이터베이스는 UTF-8 인코딩 형식으로 만들어져야한다.

제니퍼 서버에서 오라클을 사용하기 위한 JDBC 연결은 JENNIFER_HOME/server/conf/Catalina/localhost/ROOT.xml 파일에 설정되어 있다.

<Resource name="jdbc/Jennifer" auth="Container"	
            type="javax.sql.DataSource" maxActive="100" maxIdle="30"
            maxWait="10000" username="jennifer" password="jennifer"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            url="jdbc:oracle:thin:@127.0.0.1:1521:jennifer"/>

다음은 관리자 데이터베이스에 대한 JDBC 설정이다.

<Resource name="jdbc/JenniferAdmin" auth="Container"	
            type="javax.sql.DataSource" maxActive="100" maxIdle="30"
            maxWait="10000" username="jennifer" password="jennifer"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            url="jdbc:oracle:thin:@127.0.0.1:1521:jenniferadm"/>

username, password, url 등의 속성은 사용할 오라클 데이터베이스에 맞게 변경한다. 그리고 JDBC 드라이버 라이브러리(ojdbc14.jar)를 JENNIFER_HOME/server/common/lib 디렉토리에 복사한다.

앞의 설정 변경을 적용하기 위해서는 제니퍼 서버의 재시작이 필요하다.

IBM DB2의 사용

IBM DB2를 사용하는 경우에는 DB2 9.5 이상을 사용해야 하고 데이터베이스는 UTF-8 인코딩 형식으로 만들어져야 한다. 그리고 페이지 사이즈를 32K 이상으로 만들어야 한다. 제니퍼 서버에서 IBM DB2를 사용하기 위한 JDBC 연결은 JENNIFER_HOME/server/conf/Catalina/localhost/ROOT.xml 파일에 설정되어 있다.

다음은 성능 데이터베이스에 대한 JDBC 설정이다.

<Resource name="jdbc/Jennifer" auth="Container"
       type="javax.sql.DataSource" maxActive="100" maxIdle="30"
       maxWait="10000" username="jennifer" password="jennifer"
       driverClassName="com.ibm.db2.jcc.DB2Driver"
       url="jdbc:db2://120.0.0.1:50000/jennifer" />

다음은 관리자 데이터베이스에 대한 JDBC 설정이다.

<Resource name="jdbc/JenniferAdmin" auth="Container"
       type="javax.sql.DataSource" maxActive="100" maxIdle="30"
       maxWait="10000" username="jennifer" password="jennifer"
       driverClassName="com.ibm.db2.jcc.DB2Driver"
       url="jdbc:db2://120.0.0.1:50000/jenniferadm" />

username, password, url 등의 속성은 사용할 IBM DB2에 맞게 변경한다. 그리고 JDBC 드라이버 라이브러리(db2jcc.jar, db2jcc_license_cu.jar)를 JENNIFER_HOME/server/common/lib 디렉토리에 복사한다.

앞의 설정 변경을 적용하기 위해서는 제니퍼 서버의 재시작이 필요하다.

쿼리 수행기

[통계 분석 | 쿼리 수행기] 메뉴를 통해서 제니퍼 데이터베이스에 대해 임의의 SQL을 실행할 수 있다.

쿼리 수행기

  1. 테이블 탐색기 - 왼쪽의 테이블 탐색기를 통해서 성능 데이터베이스와 관리자 데이터베이스 테이블 스키마를 확인할 수 있다.

  2. 테이블 탐색기 새로 고침 - 테이블 탐색기 내용을 새로 고치려면 해당 버튼을 클릭한다.

제니퍼 데이터베이스에 대해서 임의의 SQL을 수행하는 방법은 다음과 같다.

SQL의 결과는 하단에 나타나며 각 필드에 대한 설명은 다음과 같다.

SQL 수행기 필드

필드

설명

SQL

여러 개의 SQL을 동시에 수행하려면 세미 콜론[;]을 구분자 사용하여 여러 SQL을 입력한다.

--로 시작하는 줄은 주석으로 간주된다.

최대 결과 수 제한

SELECT 절을 실행했을 때 반환되는 레코드 숫자의 최대 크기를 설정한다.

도메인

도메인을 선택한다.

관리자 데이터베이스 여부

해당 체크 박스를 선택하면 관리자 데이터베이스에 대해서 SQL을 수행하고, 선택하지 않으면 성능 데이터베이스에 대해서 SQL을 수행한다.

결과 형식

SQL의 결과 형식을 선택한다.

결과 형식으로 테이블을 선택하면 HTML 테이블로 데이터가 표시되고, 엑셀을 선택하면 CSV 형식의 파일로 데이터가 다운로드된다.

결과 형식으로 막대 차트를 선택하면 막대 차트가 표시된다. 예를 들어, 다음은 시간당 방문자 수를 구하는 SQL이다. SELECT 절의 첫번째 칼럼이 X 좌표의 값이 되고 두번째 칼럼부터는 Y 좌표의 값이 된다. 그리고 칼럼의 이름을 범례로 사용한다.

SELECT LOG_HH, SUM(VISIT_HOUR) AS VISIT
FROM PERF_X_01
WHERE LOG_DT = '20081001'
AND AGENT_ID = 'TOT'
GROUP BY LOG_HH

시간당 방문자 수

차트의 크기는 제니퍼 서버의 report_image_width 옵션과 report_image_height 옵션으로 설정한다.

report_image_width = 800
report_image_height = 200

동일 시간대에 대해서 여러 데이터를 막대 차트로 표시하려면 SELECT 절에 칼럼을 추가한다. 예를 들어, 방문자 수와 호출 건수를 막대 차트에 표시하려면 다음 SQL을 사용한다.

SELECT LOG_HH, SUM(VISIT_HOUR) AS VISIT, SUM(HIT) AS HIT
FROM PERF_X_01
WHERE LOG_DT = '20081001'
AND AGENT_ID = 'TOT'
GROUP BY LOG_HH

시간당 방문자 수와 호출 건 수

결과 형식으로 라인 차트를 선택하면 라인 차트가 표시된다. 예를 들어, 다음은 시간당 서비스 요청률을 구하는 SQL이다. SELECT 절의 첫번째 칼럼이 X 좌표의 값이 되고 두번째 칼럼부터는 Y 좌표의 값이 된다. 그리고 칼럼의 이름을 범례로 사용한다.

SELECT LOG_HH, AVG(ARRIVAL_RATE) AS ARRIVAL_RATE
FROM PERF_X_01
WHERE LOG_DT = '20081001'
AND AGENT_ID = 'TOT'
GROUP BY LOG_HH

시간당 서비스 요청률

동일 시간대에 대해서 여러 데이터를 라인 차트로 표시하려면 SELECT 절에 칼럼을 추가한다. 예를 들어, 서비스 요청률과 액티브 서비스를 라인 차트에 표시하려면 다음 SQL을 사용한다.

SELECT LOG_HH, AVG(ARRIVAL_RATE) AS ARRIVAL_RATE,
       AVG(ACTIVE_SERVICE) AS ACTIVE_SERVICE
FROM PERF_X_01
WHERE LOG_DT = '20081001'
AND AGENT_ID = 'TOT'
GROUP BY LOG_HH

시간당 서비스 요청률과 액티브 서비스

결과 형식으로 시계열 차트를 선택하면 시계열 차트가 표시된다. 예를 들어, 다음은 5분당 자바 힙 메모리 사용량을 구하는 SQL이다. SELECT 절의 첫번째 칼럼이 X 좌표의 값이되고 두번째 칼럼부터는 Y 좌표의 값이 된다. 그리고 칼럼의 이름을 범례로 사용한다.

SELECT LOG_DT || LOG_HH || LOG_MM, HEAP_USED
FROM PERF_X_01
WHERE LOG_DT ='20081001'
AND AGENT_ID = 'A21'

5분당 자바 힙 메모리 사용량

동일 시간대에 대해서 여러 데이터를 시계열 차트로 표시하려면 SELECT 절에 칼럼을 추가한다. 예를 들어, 자바 힙 메모리 사용량과 자바 힙 전체 메모리를 시계열 차트에 표시하려면 다음 SQL을 사용한다.

SELECT LOG_DT || LOG_HH || LOG_MM, HEAP_USED, HEAP_TOTAL
FROM PERF_X_01
WHERE LOG_DT ='20080801'
AND AGENT_ID = 'A21'

5분당 자바 힙 메모리 사용량과 자바 힙 전체 메모리

데이터의 숫자가 적은 경우(시간당으로 표시하는 경우)에는 결과 형식으로 막대 차트나 라인 차트를 선택하고, 데이터의 숫자가 많은 경우(5분 단위로 표시하는 경우)에는 결과 형식으로 시계열 차트를 선택한다.

데이터 보관 및 삭제

데이터베이스에 대한 검색 시간 향상을 위해서 제니퍼는 SummaryActor 스케줄러를 이용해서 성능 데이터에 대한 요약 데이터를 매일 주기적으로 생성한다. 제니퍼 서버의 SummaryActor에 대한 설정은 다음과 같다.

time_actor_1=com.javaservice.jennifer.server.timeactor.SummaryActor 01

첫번째 파라미터 01이 지칭하는 것처럼 SummaryActor는 매일 오전 1시에 수행된다. SummaryActor가 정상적으로 수행되지 않은 경우에는 [툴바 영역 | 통계 데이터 요약]을 통해서 특정 날짜에 대해서 SummaryActor를 실행 할 수도 있다.

[툴바 영역 | 통계 데이터 요약]을 통해서 특정 날짜에 대해서 SummaryActor를 반복적으로 수행해도 데이터가 중복으로 계산되지는 않는다.

제니퍼 에이전트의 숫자와 업무 처리량에 비례해서 제니퍼가 수집하는 성능 데이터의 양이 증가한다. 그래서 디스크 사용을 최적화하기 위해서 기본적으로 30일 이전의 데이터는 CleanerActor를 통해서 삭제한다. 제니퍼 서버의 CleanerActor에 대한 설정은 다음과 같다.

time_actor_03=com.javaservice.jennifer.server.timeactor.CleanerActor 02 ALERT MONTH 1
time_actor_04=com.javaservice.jennifer.server.timeactor.CleanerActor 02 ERROR MONTH 1
time_actor_05=com.javaservice.jennifer.server.timeactor.CleanerActor 02 APPL MONTH 1
time_actor_06=com.javaservice.jennifer.server.timeactor.CleanerActor 02 SQL MONTH 1
time_actor_07=com.javaservice.jennifer.server.timeactor.CleanerActor 02 TX MONTH 1
time_actor_08=com.javaservice.jennifer.server.timeactor.CleanerActor 02 PERF MONTH 1
time_actor_09=com.javaservice.jennifer.server.timeactor.CleanerActor 02 FILE MONTH 1
time_actor_11=com.javaservice.jennifer.server.timeactor.CleanerActor 02 REMON DAY 7

기본 설정에 따르면 ALERT_01~31, ERRORS_10M_01~31, APPL_10M_01~31,SQLS_10M_01~31, TX_10M_01~31, PERF_X_01~31 등의 테이블에서는 한달 전의 데이터를 삭제하고 REMON으로부터 수집한 데이터를 저장한 테이블에서는 7일 이전의 데이터를 삭제한다. 그리고 한달 전의 데이터 파일을 삭제한다. 이 작업은 오전 2시에 순차적으로 이루어진다.

데이터 백업 및 복구

데이터 파일과 데이터베이스 내용을 일자별로 백업하고 복구할 수 있다. 도구 영역에서 [도구 | Server Control Center] 메뉴를 클릭하면 팝업 창이 나타난다.

Server Control Center

팝업 창에서 백업 탭을 선택하면 나타나는 화면에서 데이터 백업과 복구 작업을 수행할 수 있다.

데이터 백업과 복구

데이터 백업 파일 위치는 제니퍼 서버의 backup_root 옵션으로 설정한다. 기본으로는 해당 옵션이 설정되어 있지 않은데 이 경우에는 JENNIFER_HOME/server/bin 디렉토리에 데이터 백업 파일이 저장된다.

backup_root = /home/jennifer/backup

동일한 하드웨어에서 복수의 제니퍼 서버를 운영하는 경우에는 각 제니퍼 서버별로 backup_root 옵션을 명시적으로 지정해서 백업 디렉토리를 다르게 설정해야 한다.

데이터를 백업하는 방법은 다음과 같다.

  1. 데이터를 백업할 날짜를 선택한다. 금일 데이터는 백업할 수 없다.

  2. 모드를 선택한다. Full 모드를 선택하면 데이터 파일과 데이터베이스 내용을 모두 백업한다. 반면에 Simple 모드를 선택하면 데이터베이스 내용만을 백업한다.

  3. [백업] 버튼을 클릭하면 데이터 백업이 진행된다. 데이터 양에 따라서 긴 시간이 소요될 수 있다. 데이터 백업이 완료되면 하단 데이터 백업 파일 목록에 해당 날짜에 대한 데이터 백업 파일이 추가된다.

데이터를 복원하는 방법은 다음과 같다.

  1. 모드를 선택한다. Full 모드를 선택하면 데이터 파일과 데이터베이스 내용을 모두 복원한다. 반면에 Simple 모드를 선택하면 데이터베이스 내용만을 복원한다.

  2. 데이터 백업 파일 목록에서 데이터를 복원할 날짜에 해당하는 [복원] 링크를 클릭하면 데이터 복원이 진행된다. 데이터 양에 따라서 긴 시간이 소요될 수 있다.

제니퍼 서버 CPU 사용률 증가를 최소화하기 위해서 동시에 백업 혹은 복원 작업을 수행할 수 없다. 예를 들어, 2009-04-02 날짜 데이터를 백업하고 있는 중간에는 다른 날짜 데이터를 백업하거나 복원할 수 없다. 마찬가지로 2009-04-04 날짜 데이터를 복원하고 있는 중간에는 다른 날짜 데이터를 백업하거나 복원할 수 없다.

데이터 복원을 완료한 후에 복원된 데이터를 정상적으로 확인하려면 다음 작업을 수행한다.

  1. [자바 플러그인 임시 파일 지우기]를 참조하여 임시 파일을 삭제한다.

  2. 재로그인을 한다.

데이터 백업 파일을 삭제하는 방법은 다음과 같다.

  1. 데이터 백업 파일 목록에서 데이터 백업 파일을 삭제할 날짜에 해당하는 [삭제] 링크를 클릭하면 해당 데이터 백업 파일이 삭제된다.

  2. 데이터 백업 파일 삭제가 완료되면 하단 데이터 백업 파일 목록에 해당 날짜에 대한 데이터 백업 파일이 삭제된다.

그리고 BackupActor 스케줄러를 이용해서 주기적으로 데이터를 백업할 수도 있다. 제니퍼 서버의 BackupActor에 대한 설정은 다음과 같다.

time_actor_15 = com.javaservice.jennifer.server.timeactor.BackupActor 0220 FULL

기본적으로 BackupActor 스케줄러는 설정되어 있지 않다.

이 설정에 따르면 02시 20분에 FULL 모드로 데이터 백업이 수행된다. FULL 대신에 SIMPLE을 모드로 지정할 수 있다.

데이터 백업과 복원은 제니퍼 서버 CPU 사용률을 증가시킨다. 따라서 동일한 하드웨어에서 복수의 제니퍼 서버를 운영하는 경우에는 BackupActor 스케줄러가 동작하는 시간을 다르게 설정하는 것을 권장한다.

테이블 스키마

테이블 칼럼의 데이터 유형은 아파치 더비를 기준으로 작성하였다.

성능 데이터베이스

AGENT

제니퍼 에이전트 정보를 저장하는 테이블이다.

AGENT 테이블

칼럼

유형

제약조건

설명

ID

VARCHAR(20)

PK, NOT NULL

제니퍼 에이전트 아이디

NAME

VARCHAR(50)


제니퍼 에이전트 이름

IP

VARCHAR(50)

NOT NULL

IP 주소

TCP_PORT

INTEGER

NOT NULL

제니퍼 에이전트의 agent_tcp_port 옵션으로 설정한 포트 번호

DOMAIN_ID

VARCHAR(10)

NOT NULL

도메인 아이디

NODE_ID

BIGINT

노드 아이디

VERSION

VARCHAR(50)


제니퍼 에이전트 버전

TYPE

INTEGER


유형

STATUS

INTEGER

NOT NULL

상태를 구분하는 코드로, 1은 사용을, 0은 비사용을 의미한다.

SORT

INTEGER


정렬 기준

ALERT_01~31

경보 데이터를 저장하는 일자별 테이블이다.

데이터베이스에 저장되는 성능 데이터 중에서 양이 많은 경우에는 일자별로 구분하여 저장한다. 이 때 사용하는 테이블을 일자별 테이블이라고 한다. 따라서 10월 3일에 수집한 경보 데이터는 ALERT_03 테이블에 저장되고, 10월 17일에 수집한 경보 데이터는 ALERT_17 테이블에 저장된다. ALERT_01~31은 일자별 테이블을 지칭하기 위한 개념적인 이름으로 해당 테이블이 실제로 존재하지는 않는다.

ALERT_01~31 테이블

칼럼

유형

제약조건

설명

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

LOG_SS

CHAR(2)


초(SS)

TYPE

CHAR(1)


경보 유형을 구분하는 코드로, C는 심각을, E는 에러를, W는 경고를 의미한다.

ALERT_NM

VARCHAR(100)


경보 이름

ALERT_MSG

VARCHAR(32672)


경보 메시지

AGENT_ID

VARCHAR(20)


경보가 발생한 제니퍼 에이전트 아이디

APPLS

애플리케이션 이름을 저장하는 테이블이다.

APPLS 테이블

칼럼

유형

제약 조건

설명

HASH

INTEGER

PK, NOT NULL

애플리케이션 이름 해쉬 값

NAME

VARCHAR(512)


애플리케이션 이름

FLAG

CHAR(1)


데이터 정상 여부를 구분하는 코드로, T는 정상을, F는 비정상을 의미한다.

APPL_10M_01~31

10분 동안의 애플리케이션 처리 현황 통계 데이터를 저장하는 일자별 테이블이다.

APPL_10M_01~31 테이블

칼럼

유형

제약 조건

설명

APPL_HASH

INTEGER


애플리케이션 이름 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

CNT

INTEGER


호출 건수

FAIL_CNT

INTEGER


실패 건수

ELAPSED_SUM

BIGINT


응답 시간의 합

ELAPSED2_SUM

BIGINT


표준 편차 계산을 위한 응답 시간 제곱의 합

ELAPSED_MIN

BIGINT


최소 응답 시간

ELAPSED_MAX

BIGINT


최대 응답 시간

CPU_SUM

BIGINT


CPU 사용 시간의 합

TPMC_SUM

BIGINT


TPMC 합

APPL_SQLTX_01~31

10분 동안의 애플리케이션과 SQL 혹은 외부 트랜잭션 사이의 매핑 데이터를 저장하는 일자별 테이블이다.

APPL_SQLTX_01~31 테이블

칼럼

유형

제약 조건

설명

APPL_HASH

INTEGER


애플리케이션 이름 해쉬 값

SQLTX_HASH

INTEGER


APPL_HASH

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

TYPE

CHAR(1)


유형을 구분하는 코드로, S는 SQL을 T는 외부 트랜잭션을 의미한다.

CNT

INTEGER


호출 건수

ELAPSED_SUM

BIGINT


응답 시간의 합

ELAPSED2_SUM

BIGINT


표준 편차 계산을 위한 응답 시간 제곱의 합

ELAPSED_MIN

BIGINT


최소 응답 시간

ELAPSED_MAX

BIGINT


최대 응답 시간

BIZ_GROUP

애플리케이션 비즈니스 그룹 데이터를 저장하는 테이블이다.

BIZ_GROUP 테이블

칼럼

유형

제약 조건

설명

UUID

BIGINT

PK, NOT NULL

고유 아이디로 자동 생성된다.

ID

VARCHAR(256)

NOT NULL

아이디

DIV

VARCHAR(100)

NOT NULL

구분명

NAME

VARCHAR(100)

NOT NULL

비지니스 그룹 이름

DOMAIN_ID

VARCHAR(10)


도메인 아이디

AGENT_ID

VARCHAR(300)


제니퍼 에이전트 아이디

APP

VARCHAR(1000)


애플리케이션 목록으로 줄바꿈(\n)을 구분자로 구분한다.

TX

VARCHAR(1000)


외부 트랜잭션 목록으로 줄바꿈(\n)을 구분자로 구분한다.

TYPE

INTEGER


유형

STATUS

INTEGER


상태로 1은 Active를, 0은 Inactive를 의미한다.

SORT

INTEGER


정렬 기준

DOMAIN

도메인 데이터를 저장하는 테이블이다.

DOMAIN 테이블

칼럼

유형

제약조건

설명

ID

VARCHAR(10)

PK, NOT NULL

도메인 아이디

NAME

VARCHAR(20)

NOT NULL

도메인 이름

IP

VARCHAR(50)

NOT NULL

제니퍼 서버의 IP 주소

HTTP_PORT

INTEGER

NOT NULL

제니퍼 서버의 HTTP 포트 번호

TCP_PORT

INTEGER

NOT NULL

제니퍼 서버의 server_tcp_port 옵션으로 설정한 포트 번호

VERSION

VARCHAR(50)


제니퍼 서버 버전

TYPE

INTEGER


유형

STATUS

INTEGER

NOT NULL

상태를 구분하는 코드로, 1은 Active를, 0은 Inactive를 의미한다.

SORT

INTEGER


정렬 기준

ERRORS

예외의 이름을 저장하는 테이블이다.

ERRORS 테이블

칼럼

유형

제약 조건

설명

HASH

INTEGER

PK, NOT NULL

예외 해쉬 값

NAME

VARCHAR(512)


예외 이름

FLAG

CHAR(1)


데이터 정상 여부를 구분하는 코드로, T는 정상을, F는 비정상을 의미한다.

ERRORS_10M_01~31

10분 동안의 예외 현황 통계 데이터를 저장하는 일자별 테이블이다.

ERRORS_10M_01~31 테이블

칼럼

유형

제약 조건

설명

ERR_HASH

INTEGER


애플리케이션 이름 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

TYPE

CHAR(1)


경보 유형를 구분하는 코드로, C는 심각을, E는 에러를, W는 경고를 의미한다.

CNT

INTEGER


예외 건수

ERROR_CD

INTEGER


예외 코드

ERROR_NM

VARCHAR(100)


예외 이름

ERR_APPL_01~31

예외와 애플리케이션 사이의 매핑 데이터를 저장하는 테이블이다.

ERR_APPL_01~31 테이블

칼럼

유형

제약 조건

설명

ERR_HASH

INTEGER


예외 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

CNT

INTEGER


예외 건수

APPL_HASH

INTEGER


예외가 발생한 애플리케이션 이름 해쉬 값

MSG_HASH

INTEGER


예외 메시지 해쉬 값

TX_UUID

BIGINT


X-View 트랜잭션 아이디

GROUP_NODE

그룹과 노드 사이의 매핑 정보를 저장하는 테이블이다.

GROUP_NODE 테이블

칼럼

유형

제약 조건

설명

GROUP_ID

VARCHAR(20)

PK, NOT NULL

그룹 아이디

NODE_ID

BIGINT

PK, NOT NULL

노드 아이디

HOST

WMOND가 실행되고 있는 컴퓨터의 정보를 저장하는 테이블이다.

HOST 테이블

칼럼

유형

제약 조건

설명

HOST_ID

VARCHAR(20)

호스트 아이디

HOST_NM

VARCHAR(50)

호스트 이름

IPADDR

VARCHAR(20)

NOT NULL

호스트 IP 주소

METHODS

메소드의 이름을 저장하는 테이블이다.

METHODS 테이블

칼럼

유형

제약 조건

설명

HASH

INTEGER

PK, NOT NULL

메소드 이름 해쉬 값

NAME

VARCHAR(512)


메소드 이름

FLAG

CHAR(1)


데이터 정상 여부를 구분하는 코드로, T는 정상을, F는 비정상을 의미한다.

NODE

노드 데이터를 저장하는 테이블이다.

NODE 테이블

칼럼

유형

제약조건

설명

ID

BIGINT

PK, NOT NULL

노드 아이디

NAME

VARCHAR(50)

NOT NULL

노드 이름

GROUP_ID

VARCHAR(2)

제니퍼 서버의 agent_group 옵션으로 설정한 그룹 아이디

PARENT_ID

BIGINT

상위 노드 아이디

DOMAIN_ID

VARCHAR(10)

도메인 아이디

TYPE

INTEGER


유형

STATUS

INTEGER

NOT NULL

상태를 구분하는 코드로, 1은 Active를, 0은 Inactive를 의미한다.

SORT

INTEGER


정렬 기준

PERF_HOST

WMOND를 통해서 수집한 CPU 데이터를 저장하는 테이블이다.

제니퍼 서버의 perf_host_update_interval 옵션을 통해서 저장 주기를 변경할 수 있다. 기본 값은 300000이고 단위는 밀리 세컨드이다.

perf_host_update_interval = 300000
PERF_HOST 테이블

칼럼

유형

제약 조건

설명

IPADDR

VARCHAR(20)


호스트 IP 주소

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

LAST_TM

CHAR(6)


마지막 시간(HHMM)

CPU_USER

REAL


사용자 애플리케이션 CPU 사용률

CPU_SYS

REAL


커널 CPU 사용률

CPU_NICE

REAL


NICE CPU 사용률

CPU_IOWAIT

REAL


IO CPU 사용률

CPU_IDLE

REAL


IDLE CPU 사용률

PERF_X_01~31

5분 동안의 일반 성능 데이터를 저장하는 일자별 테이블이다.

제니퍼 서버의 perf_x_update_interval 옵션을 통해서 저장 주기를 변경할 수 있다. 기본값은 300000이고 단위는 밀리 세컨드이다.

perf_x_update_interval = 300000
PERF_X_01~31 테이블

칼럼

유형

제약 조건

설명

AGENT_ID

VARCHAR(20)


호스트 IP 주소

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

LAST_TM

CHAR(6)


마지막 시간(HHMM)

CONCURRENT_USER

REAL


동시단말 사용자 수

ACTIVE_USER

REAL


액티브 사용자 수

ACTIVE_SERVICE

REAL


액티브 서비스 개수

ARRIVAL_RATE

REAL


서비스 요청률

SERVICE_RATE

REAL


서비스 처리률

RESPONSE_TIME

REAL


평균 응답 시간

THINKTIME

REAL


대기 시간

HEAP_TOTAL

REAL


자바 힙 전체 메모리

HEAP_USED

REAL


자바 힙 메모리 사용량

SYS_CPU

REAL


시스템 CPU 사용률

JVM_CPU

REAL


자바 프로세스 CPU 사용률

SYS_MEM_USED

REAL


시스템 메모리 사용량

JVM_NAT_MEM

REAL


자바 프로세스 메모리 사용량

JDBC_ACTIVE

REAL


사용 중인 JDBC 커넥션 개수

JDBC_ALLOC

REAL


할당된 JDBC 커넥션 개수

JDBC_IDLE

REAL


대기 중인 JDBC 커넥션 개수

HIT

INTEGER


호출 건수

VISIT_DAY

INTEGER


방문자 수(일 기준)

VISIT_HOUR

INTEGER


방문자 수(시간 기준)

SQLS

SQL을 저장하는 테이블이다.

SQLS 테이블

칼럼

유형

제약 조건

설명

HASH

INTEGER

PK, NOT NULL

SQL 해쉬 값

NAME

CLOB


SQL

FLAG

CHAR(1)


데이터 정상 여부를 구분하는 코드로, T는 정상을, F는 비정상을 의미한다.

SQLS_10M_01~31

10분 동안의 SQL의 처리 현황 통계 데이터를 저장하는 일자별 테이블이다.

SQLS_10M_01~31 테이블

칼럼

유형

제약 조건

설명

SQL_HASH

INTEGER


SQL 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

CNT

INTEGER


실행건수

ELAPSED_SUM

BIGINT


응답 시간의 합

ELAPSED2_SUM

BIGINT


표준 편차 계산을 위한 응답 시간 제곱의 합

ELAPSED_MIN

BIGINT


최소 응답 시간

ELAPSED_MAX

BIGINT


최대 응답 시간

PARAM1

VARCHAR(32672)


상수 파라미터

PARAM2

VARCHAR(32672)


바인딩 파라미터

S_ALERT

1시간 동안의 경보 현황 통계 데이터를 저장하는 통계 테이블이다.

S_ALERT

칼럼

유형

제약조건

설명

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

TYPE

CHAR(1)


경보 유형을 구분하는 코드로, C는 심각을, E는 에러를, W는 경고를 의미한다.

ALERT_NM

VARCHAR(100)


경보 이름

AGENT_ID

VARCHAR(20)


경보가 발생한 제니퍼 에이전트 아이디

CNT

INTEGER


경보 건수

S_APPL

일일 동안의 애플리케이션 처리 현황 통계 데이터를 저장하는 통계 테이블이다.

이름이 S_로 시작하는 테이블은 SummaryActor를 통해서 관리되는 통계 테이블이다.

S_APPL 테이블

칼럼

유형

제약 조건

설명

APPL_HASH

INTEGER


애플리케이션 이름 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

CNT

INTEGER


호출 건수

FAIL_CNT

INTEGER


실패 건수

ELAPSED_SUM

BIGINT


응답 시간의 합

ELAPSED2_SUM

BIGINT


표준 편차 계산을 위한 응답 시간 제곱의 합

ELAPSED_MIN

BIGINT


최소 응답 시간

ELAPSED_MAX

BIGINT


최대 응답 시간

CPU_SUM

BIGINT


CPU 사용 시간의 합

TPMC_SUM

BIGINT


TPMC 합

S_ERRORS

1시간 동안의 예외 현황 통계 데이터를 저장하는 통계 테이블이다.

S_ERRORS 테이블

칼럼

유형

제약 조건

설명

ERR_HASH

INTEGER


애플리케이션 이름 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

TYPE

CHAR(1)


경보 유형를 구분하는 코드로, C는 심각을, E는 에러를, W는 경고를 의미한다.

ERROR_CD

INTEGER


예외 코드

ERROR_NM

VARCHAR(100)


예외 이름

CNT

INTEGER


예외 건수

S_PERF_X

1시간 동안의 일반 성능 데이터를 저장하는 통계 테이블이다.

S_PERF_X 테이블

칼럼

유형

제약 조건

설명

AGENT_ID

VARCHAR(20)


호스트 IP 주소

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

CONCURRENT_USER

REAL


동시단말 사용자 수

ACTIVE_USER

REAL


액티브 사용자 수

ACTIVE_SERVICE

REAL


액티브 서비스 개수

ARRIVAL_RATE

REAL


서비스 요청률

SERVICE_RATE

REAL


서비스 처리률

RESPONSE_TIME

REAL


평균 응답 시간

THINKTIME

REAL


대기 시간

HEAP_TOTAL

REAL


자바 힙 전체 메모리

HEAP_USED

REAL


자바 힙 메모리 사용량

SYS_CPU

REAL


시스템 CPU 사용률

JVM_CPU

REAL


자바 프로세스 CPU 사용률

SYS_MEM_USED

REAL


시스템 메모리 사용량

JVM_NAT_MEM

REAL


자바 프로세스 메모리 사용량

JDBC_ACTIVE

REAL


사용 중인 JDBC 커넥션 개수

JDBC_ALLOC

REAL


할당된 JDBC 커넥션 개수

JDBC_IDLE

REAL


대기 중인 JDBC 커넥션 개수

HIT

INTEGER


호출 건수

VISIT_DAY

INTEGER


방문자 수(일 기준)

VISIT_HOUR

INTEGER


방문자 수(시간 기준)

S_SQLS

1시간 동안의 SQL 처리 현황 통계 데이터를 저장하는 통계 테이블이다.

S_SQLS 테이블

칼럼

유형

제약 조건

설명

SQL_HASH

INTEGER


SQL 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

CNT

INTEGER


실행건수

ELAPSED_SUM

BIGINT


응답 시간의 합

ELAPSED2_SUM

BIGINT


표준 편차 계산을 위한 응답 시간 제곱의 합

ELAPSED_MIN

BIGINT


최소 응답 시간

ELAPSED_MAX

BIGINT


최대 응답 시간

S_TX

일일 동안의 외부 트랜잭션의 처리 현황 통계 데이터를 저장하는 통계 테이블이다.

S_TX 테이블

칼럼

유형

제약 조건

설명

TX_HASH

INTEGER


외부 트랜잭션 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

CNT

INTEGER


실행건수

ELAPSED_SUM

BIGINT


응답 시간의 합

ELAPSED2_SUM

BIGINT


표준 편차 계산을 위한 응답 시간 제곱의 합

ELAPSED_MIN

BIGINT


최소 응답 시간

ELAPSED_MAX

BIGINT


최대 응답 시간

TXNAMES

외부 트랜잭션 이름을 저장하는 테이블이다.

TXNAMES 테이블

칼럼

유형

제약 조건

설명

HASH

INTEGER

PK, NOT NULL

외부 트랜잭션 해쉬 값

NAME

VARCHAR(32672)


외부트랜잭션 이름

FLAG

CHAR(1)


데이터 정상 여부를 구분하는 코드로, T는 정상을, F는 비정상을 의미한다.

TX_10M_01~31

10분 동안의 외부 트랜잭션의 처리 현황 데이터를 저장하는 일자별 테이블이다.

TX_10M_01~31 테이블

칼럼

유형

제약 조건

설명

TX_HASH

INTEGER


외부 트랜잭션 해쉬 값

AGENT_ID

VARCHAR(20)


제니퍼 에이전트 아이디

LOG_DT

CHAR(8)


날짜(YYYYMMDD)

LOG_HH

CHAR(2)


시간(HH)

LOG_MM

CHAR(2)


분(MM)

CNT

INTEGER


실행건수

ELAPSED_SUM

BIGINT


응답 시간의 합

ELAPSED2_SUM

BIGINT


표준 편차 계산을 위한 응답 시간 제곱의 합

ELAPSED_MIN

BIGINT


최소 응답 시간

ELAPSED_MAX

BIGINT


최대 응답 시간

관리자 데이터베이스

ADF

사용자 정의 대시보드를 구성하는 차트와 관련한 데이터를 저장하는 테이블이다.

ADF 테이블

칼럼

유형

제약 조건

설명

UUID

VARCHAR(50)

PK, NOT NULL

고유 아이디로 자동 생성된다.

VIEW_ID

VARCHAR(10)

NOT NULL

사용자 정의 대시보드의 메뉴 아이디

CHART_ID

VARCHAR(50)

NOT NULL

차트 아이디

LEFT_POSITION

INTEGER


차트의 X 축 좌표로, 0에 가까울수록 차트가 왼쪽에 위치한다.

TOP_POSITION

INTEGER


차트의 Y 축 좌표로, 0에 가까울수록 차트가 위쪽에 위치한다.

WIDTH

INTEGER


차트의 넓이

HEIGHT

INTEGER


차트의 높이

CONFIG

VARCHAR(1000)


차트 옵션

AUTH

권한 데이터를 저장하는 테이블이다.

AUTH 테이블

칼럼

유형

제약 조건

설명

AUTH_ID

VARCHAR(50)

PK, NOT NULL

권한 아이디

AUTH_NM

VARCHAR(10)

권한 이름

AUTH_DESC

VARCHAR(50)

권한에 대한 설명

CONFIG

INTEGER


권한 설정 정보

IS_IFXED

INTEGER


사용하지 않는 칼럼

CONTENTS

게시판 데이터를 저장하는 테이블이다.

CONTENTS 테이블

칼럼

유형

제약 조건

설명

BBS_ID

VARCHAR(20)

NOT NULL

게시판 유형

THREAD_ID

INTEGER

NOT NULL

게시물 아이디

PARENT_ID

INTEGER

답변을 단 게시물 아이디

TITLE

VARCHAR(500)


제목

BODY

CLOB


내용

DOC_TYPE

CHAR(1)


사용하지 않는 칼럼

HIT_CNT

INTEGER


조회 건수

USER_ID

VARCHAR(20)


게시물을 등록한 사용자 아이디

USER_NM

VARCHAR(50)


사용하지 않는 칼럼

PASSWORD

VARCHAR(20)


사용하지 않는 칼럼

STATUS_CD

CHAR(1)


상태를 구분하는 코드로, 0은 관련 없음, 1은 처리 요청, 2는 진행 중, 3은 처리 완료를 의미한다.

ASSIGNED_USER

VARCHAR(50)


처리 담당자

NEXT_CHECK_DT

VARCHAR(10)


처리 요망일

CREATE_DT

VARCHAR(10)


게시물 생성 날짜

CREATE_TM

VARCHAR(8)


게시물 생성 시간

UPDATE_DT

VARCHAR(10)


게시물 수정 날짜

UPDATE_TM

VARCHAR(8)


게시물 수정 시간

EVENT_LOG

이벤트 로그 데이터를 저장하는 테이블이다.

EVENT_LOG 테이블

칼럼

유형

제약 조건

설명

UUID

BIGINT

PK, NOT NULL

고유 아이디로 자동 생성된다.

ID

VARCHAR(20)

NOT NULL

이벤트 로그 아이디

EVENT_LOG_DESC

VARCHAR(2000)

이벤트 로그 설명

USER_ID

VARCHAR(20)


사용자 아이디

CLIENT_IP

VARCHAR(50)


클라이언트 IP

CREATE_DT

CHAR(10)


생성 날짜(YYYYMMDD)

CREATE_TM

CHAR(8)


생성 시간(HHMMSS)

GROUP_AUTH

그룹과 권한 사이의 매핑 데이터를 저장하는 테이블이다.

GROUP_AUTH 테이블

칼럼

유형

제약 조건

설명

AUTH_ID

VARCHAR(20)

PK, NOT NULL

권한 아이디

GROUP_ID

VARCHAR(20)

PK, NOT NULL

그룹 아이디

GROUP_MENU

그룹과 메뉴 사이의 매핑 데이터를 저장하는 테이블이다.

GROUP_MENU 테이블

칼럼

유형

제약 조건

설명

GROUP_ID

VARCHAR(20)

PK, NOT NULL

사용자 아이디

MENU_ID

INTEGER

PK, NOT NULL

메뉴 아이디

LOGIN_USER

사용자 데이터를 저장하는 테이블이다.

LOGIN_USER 테이블

칼럼

유형

제약 조건

설명

USER_ID

VARCHAR(20)

PK, NOT NULL

사용자 아이디

GROUP_ID

VARCHAR(20)

NOT NULL

사용자가 속한 그룹 아이디

PASSWD

VARCHAR(50)


패스워드

NAME

VARCHAR(100)


사용자 이름

EMAIL

VARCHAR(100)


이메일

COMPANY

VARCHAR(100)


회사

DEPT

VARCHAR(100)


부서

JOBTITLE

VARCHAR(100)


직책

PHONE

VARCHAR(50)


전화 번호

CELLPHONE

VARCHAR(50)


핸드폰

LAST_IP

VARCHAR(20)


마지막에 로그인한 IP 주소

LAST_TM

CHAR(8)


마지막 로그인 시간

LAST_DT

CHAR(10)


마지막 로그인 날짜

LOGIN_CNT

INTEGER


로그인 횟수

DEFAULT_MENU_ID

INTEGER


초기 메뉴 아이디

CONFIG

VARCHAR(1000)


사용자 옵션

MENU

메뉴 데이터를 저장하는 테이블이다.

MENU 테이블

칼럼

유형

제약 조건

설명

MENU_ID

INTEGER

PK, NOT NULL

메뉴 아이디

PARENT_ID

INTEGER

NOT NULL

상위 메뉴아이디

MENU_NM_CD

VARCHAR(1000)


메뉴 다국어 이름 코드

MENU_NM

VARCHAR(100)


메뉴 이름

MENU_ORDER

INTEGER


순서

TYPE

CHAR(1)


메뉴 유형을 구분하는 코드로, U는 URL 링크 메뉴를, O는 URL 팝업 메뉴를, P는 사용자 정의 대시보드 메뉴를, S는 리포트 메뉴를 의미한다.

IS_FIXED

CHAR(1)


사용하지 않는 칼럼

MENU_PROP

VARCHAR(200)


URL

DEFAULT_CHILD_ID

INTEGER


기본 하위 메뉴

COLUMN_CNT

INTEGER


사용하지 않는 칼럼

DEFAULT_HEIGHT

INTEGER


사용하지 않는 칼럼

DEFAULT_WIDTH

INTEGER


사용하지 않는 칼럼

CONFIG

VARCHAR(1000)


메뉴 옵션

MESSAGE

다국어 메시지 데이터를 저장하는 테이블이다.

MESSAGE 테이블

칼럼

유형

제약 조건

설명

ID

BIGINT

PK, NOT NULL

고유한 아이디로 자동 생성된다.

MSG_KEY

VARCHAR(50)

NOT NULL

메시지 키

VALUE

VARCHAR(1000)

NOT NULL

메시지 값

LOCALE

VARCHAR(5)

NOT NULL

언어

STATUS

INTEGER


상태를 구분하는 코드로, 1은 사용을 0은 비사용을 의미한다.

PASSWORD_HISTORY

패스워드 이력 데이터를 저장하는 테이블이다.

PASSWORD_HISTORY 테이블

칼럼

유형

제약 조건

설명

UUID

BIGINT

PK, NOT NULL

고유한 아이디로 자동 생성된다.

PASSWD

VARCHAR(50)

NOT NULL

패스워드

USER_ID

VARCHAR(20)

NOT NULL

사용자 아이디

CREATE_DT

CHAR(10)


생성 날짜(YYYYMMDD)

CREATE_TM

CHAR(8)


생성 시간(HHMMSS)

REPORT_TMPL

리포트 템플릿 데이터를 저장하는 테이블이다.

REPORT_TMPL 테이블

칼럼

유형

제약 조건

설명

TMPL_ID

INTEGER

PK, NOT NULL

리포트 템플릿 아이디

TMPL_NM

VARCHAR(200)

리포트 템플릿 제목

USER_ID

VARCHAR(20)


사용자 아이디

USER_NM

VARCHAR(50)


사용자 이름

DEFALUT_PARAM

VARCHAR(2000)


기본 파라미터

HEADER

VARCHAR(1000)


머리글

FOOTER

VARCHAR(1000)


바닥글

COPYRIGHT

VARCHAR(1000)


저작권

CREATE_DT

CHAR(8)


생성 일자

CREATE_TM

CHAR(6)


생성 시간

TMPL_ITEM

리포트 템플릿 아이템 데이터를 저장하는 테이블이다.

TMPL_ITEM 테이블

칼럼

유형

제약 조건

설명

ITEM_ID

INTEGER

NOT NULL

아이템 아이디

ITEM_NM

VARCHAR(500)

NOT NULL

아이템 이름

ITEM_TYPE

VARCHAR(20)


아이템 유형

ITEM_PROP

VARCHAR(32672)


아이템 파라미터

TMPL_ID

INTGER

NOT NULL

리포트 템플릿 아이디

CHAPTER

INTGER


Chapter

SECTION

INTGER


Section

TITLE

VARCHAR(500)


ITEM_NM 칼럼과 동일한 데이터가 입력됨

HEADING_TEXT

VARCHAR(32672)


머리글

TAIL_TEXT

CLOB


사용하지 않는 칼럼

LOOPING_KEY

VARCHAR(32672)


반복 파라미터

RESERVED_PROP

VARCHAR(32672)


사용하지 않는 칼럼

SQL_QUERY

VARCHAR(32672)


SQL 쿼리

SQL_PARAM

VARCHAR(2000)


사용하지 않는 칼럼

UPLOAD_FILE

게시판에서 업로드한 파일 데이터를 저장하는 테이블이다.

UPLOAD_FILE 테이블

칼럼

유형

제약 조건

설명

FILENAME

VARCHAR(500)

NOT NULL

업로드한 파일의 이름

THREAD_ID

VARCHAR(20)

NOT NULL

게시판 아이디

SUBDIR

VARCHAR(20)


업로드한 파일이 저장된 디렉토리

FILE_SZ

BIGINT


업로드한 파일의 크기

USER_AUTH

사용자와 권한 사이의 매핑 데이터를 저장하는 테이블이다.

USER_AUTH 테이블

칼럼

유형

제약 조건

설명

AUTH_ID

VARCHAR(20)

PK, NOT NULL

권한 아이디

USER_ID

VARCHAR(20)

PK, NOT NULL

사용자 아이디

USER_GROUP

그룹 데이터를 저장하는 테이블이다.

USER_GROUP 테이블

칼럼

유형

제약 조건

설명

GROUP_ID

VARCHAR(20)

PK, NOT NULL

그룹 아이디

GROUP_NM

VARCHAR(100)

그룹 이름

DEFAULT_MENU_ID

INTEGER


그룹 초기 메뉴 아이디

GROUP_DESC

VARCHAR(2000)


그룹에 대한 설명

AGENT_LIST

VARCHAR(2000)


해당 그룹에 속한 사용자가 모니터링할 수 있는 제니퍼 에이전트 아이디로 콤마(,)를 구분자로 구분한다.

USER_MENU

사용자와 메뉴 사이의 매핑 데이터를 저장하는 테이블이다.

USER_MENU 테이블

칼럼

유형

제약 조건

설명

USER_ID

VARCHAR(20)

PK, NOT NULL

사용자 아이디

MENU_ID

INTEGER

PK, NOT NULL

메뉴 아이디

USER_PREFERENCE

사용자별 설정 데이터를 저장하는 테이블이다.

USER_PREFERENCE 테이블

칼럼

유형

제약 조건

설명

NAME

VARCHAR(50)

PK, NOT NULL

설정 이름

VALUE

VARCHAR(255)

NOT NULL

설정 값

USER_ID

VARCHAR(20)

PK, NOT NULL

사용자 아이디

Server Control Center

Server Control Center는 제니퍼 서버 상태를 확인하고 관리 작업을 수행할 수 있는 팝업창으로 [툴바 영역 | 도구 | Server Control Center] 메뉴를 통해서 접근한다.

Server Control Center

Server Control Center는 9개 탭으로 구성되어 있다.

기본

기본 탭에서 확인할 수 있는 정보는 다음과 같다.

시스템 환경 변수

시스템 환경 변수 탭에서 확인할 수 있는 정보는 다음과 같다.

로그

로그 탭에는 제니퍼 서버 로그 파일 목록이 나타난다. 이 목록에서 로그 파일을 다운로드 하거나 삭제할 수 있다.

오늘 날짜 로그 파일은 삭제할 수 없다.

JMX

JMX 탭에서 확인할 수 있는 정보는 다음과 같다.

목록에서 JMX 이름을 클릭하면 상세 정보를 확인할 수 있다.

자바 1.5 이상으로 제니퍼 서버를 설치한 경우에만 이 탭이 표시된다.

파일

파일 탭에서 확인할 수 있는 정보는 다음과 같다.

성능 데이터베이스

성능 데이터베이스 탭에서 확인할 수 있는 정보는 다음과 같다.

Apache Derby

Apache Derby 탭에서 확인할 수 있는 정보는 다음과 같다.

성능 데이터베이스로 아파치 더비를 사용하는 경우에만 이 탭이 표시된다.

백업

백업 탭에서는 데이터를 백업하고 복원할 수 있다. 자세한 사항은 [데이터 백업 및 복구]를 참조한다.

이벤트

이벤트 탭에서는 이벤트 내용을 조회할 수 있다. 이벤트에 대한 상세한 내용은 [이벤트 로그 기록]을 참조한다.