실시간 모니터링 - 실시간 현황
[실시간 모니터링 | 실시간 현황] 메뉴에서 오늘 날짜 일반 성능 데이터를 다양한 차트로 모니터링할 수 있다.
우선 화면 상단에 있는 스피드 바와 스피드 미터를 통해서 자바 애플리케이션의 실시간 부하량을 직관적으로 모니터링할 수 있다.
그리고 화면 중간에 있는 여러 탭을 통해서 업무 처리량, 사용자, CPU, 메모리 그리고 DB등으로 분류된 오늘 날짜 일반 성능 데이터를 확인할 수 있다.
실시간 현황에서는 이퀄라이저 차트와 런타임 라인 차트 등을 주로 사용한다.
업무 처리량
업무 처리량 탭에서는 오늘 날짜 서비스 요청률, 서비스 처리율, 평균 응답 시간, 시간당 호출 건수, 시간당 방문자 수 등을 런타임 라인 차트, 라인 차트, 그리고 막대 차트 등을 통해서 확인할 수 있다.
사용자
사용자 탭에서는 오늘 날짜 동시단말 사용자 수, 액티브 서비스 개수, 대기 시간, 시간당 방문자 수, 호출 건수 등을 이퀄라이저 차트, 런타임 라인 차트, 라인 차트 그리고 막대 차트 등을 통해서 확인할 수 있다.
시간당 호출 건수는 업무 처리량과 관련이 있고 시간당 방문자 수는 사용자와 관련이 있다. 그런데 막대 차트의 균형적인 좌우 배치를 위해서 시간당 호출 건수와 시간당 방문자 수를 표시하는 막대 차트를 업무 처리량 탭과 사용자 탭에 모두 표시하였다.
CPU
CPU 탭에서는 오늘 날짜 시스템 CPU 사용률, 자바 프로세스 CPU 사용률 등을 이퀄라이저 차트, 런타임 라인 차트, 그리고 라인 차트 등을 통해서 확인할 수 있다.
그리고 WMOND를 사용하면 CPU 탭 하단에 WMOND가 수집한 시스템 CPU 사용률이 이퀄라이저 차트로 나타난다.
메모리
메모리 탭에서는 오늘 날짜 자바 힙 메모리 사용률, 자바 힙 메모리 사용량, 시스템 메모리 사용량, 자바 프로세스 메모리 사용량 등을 런타임 라인 차트와 라인 차트 등을 통해서 확인할 수 있다.
DB
DB 탭에서는 오늘 날짜 DB 커넥션 상태를 이퀄라이저 차트와 런타임 라인 차트 등을 통해서 확인할 수 있다.
실시간 모니터링 - 애플리케이션
제니퍼 에이전트는 액티브 서비스, 애플리케이션, SQL, 외부 트랜잭션, 예외, DB 등의 처리 현황 통계 데이터를 수집한다. 사용자는 [실시간 모니터링 | 애플리케이션] 메뉴를 통해서 실시간 애플리케이션 처리 현황 통계 데이터를 열람할 수 있다. 내부적으로는 사용자 요청에 의해 제니퍼 서버가 제니퍼 에이전트로의 TCP 역방향 호출을 통해서 해당 데이터를 가져온다.
액티브 서비스와 DB 처리 현황 통계 데이터는 실시간으로만 조회할 수 있다.
여기서 제공하는 데이터는 10분 단위로 요약한 통계 값이다. 예를 들어, 10분 동안의 어떤(ex login.jsp/login.aspx) 애플리케이션에 대한 전체 호출 건수와 평균 응답 시간 등은 제공하지만 어떤(ex login.jsp/login.aspx) 애플리케이션의 개별 트랜잭션에 대한 요청 시간과 응답 시간 등은 제공하지 않는다. 개별 트랜잭션을 분석하려면 [X-View와 프로파일링]을 참조한다.
정확하게 설명하면, 실시간 처리 현황 통계 데이터는 현재 시간을 기준으로 한 10분을 의미하지 않는다. 00분, 10분, 20분과 같이 10분 단위를 기준으로 나누어지는 시간을 의미한다. 따라서 현재 시간이 09시 18분이라면 실시간 데이터에서는 09시 10분에서 09시 20분까지의 처리현황 통계 데이터를 보여준다.
애플리케이션, SQL, 외부 트랜잭션, 예외, JDBC 등은 특정 제니퍼 에이전트에 대해서만 확인할 수 있다. 따라서 제니퍼 에이전트 선택 영역에서 [모두]를 선택하면 애플리케이션, SQL, 외부 트랜잭션, 예외, JDBC 등의 탭은 비활성화된다. 그러나 액티브 서비스에 대해서는 특정 제니퍼 에이전트 뿐만 아니라 모든 제니퍼 에이전트에 대해서도 확인할 수 있다. 단, 제니퍼 에이전트가 많은 경우에는 액티브 서비스 목록을 조회하는데 오랜 시간이 걸릴 수 있다.
액티브 서비스 처리 현황 통계
다음은 액티브 서비스 목록에 대한 설명이다.
항목 | 설명 |
---|---|
에이전트 | 제니퍼 에이전트 아이디 |
IP | 서비스를 요청한 사용자 IP 주소로 해당 칼럼을 클릭하면, WHOIS 기능을 통해서 IP에 대한 자세한 정보를 확인할 수 있다. |
도착 시간 | 서비스 요청이 도착한 시간 |
경과 시간 | 현재까지 서비스 요청을 처리하는데 소요된 시간 |
CPU | 현재까지 서비스 요청을 처리하는데 사용한 CPU 사용 시간 |
쓰레드 | 서비스 요청을 처리하고 있는 자바 쓰레드 아이디 |
상태 | 액티브 서비스 상태를 표시한다. 해당 칼럼을 클릭하면 액티브 서비스 상태 정보를 확인할 수 있다. |
업무명 | 애플리케이션이 처리하는 업무 이름 |
애플리케이션 | 애플리케이션 이름으로 해당 칼럼을 클릭하면 액티브 서비스 상세 내역을 확인할 수 있다. |
SQL | 현재까지 액티브 서비스에서 수행된 SQL 수로 해당 칼럼을 클릭하면 해당 액티브 서비스에서 수행된 SQL을 확인할 수 있다. |
Fetch | 처리된 SQL Fetch 수 |
다음은 액티브 서비스 상태 코드에 대한 설명이다.
상태코드 | 설명 |
---|---|
NOINIT | 초기화 과정 중, URI, 원격 IP 주소, 자바 쓰레드 아이디 등 기본 정보를 추출하고 있는 상태 |
INITZG | 액티브 서비스 등록 및 호출 건수를 증가시키고 있는 상태 |
REQST1 | 쿠키에서 기본 정보(사용자 아이디)를 추출하고 있는 상태 |
ARRSND | 서비스 요청에 대한 데이터를 UDP 방식으로 제니퍼 서버에 전송하고 있는 상태 |
REQST2 | 캐릭터 셋(Character Set) 설정 및 최초의 HTTP GET/POST 데이터를 처리하고 있는 상태 |
REQEND | HTTP GET/POST 처리 후, 대기 시간, 방문자 수 등에 대한 계산을 처리하고 있는 상태 |
INITED | 초기화 과정을 끝내고 PLC(Peak Load Control) 사용 여부를 체크하고 있는 상태 |
RJCTNG | PLC에 의한 폭주 중 메시지가 사용자에게 전달되고 있는 상태 |
RJCTED | PLC에 의한 폭주 중 메시지 전송이 완료된 상태 |
APPRUN | 초기화 과정을 모두 끝내고 애플리케이션 로직을 수행하고 있는 상태 |
JCONNG | DB 연결(ds.getConection())을 수행하고 있는 상태 |
JCONND | DB 연결이 된 후, 그 다음 애플리케이션 로직을 수행하고 있는 상태 |
JPRENG | con.prepareStatement("...") 코드를 수행하고 있는 상태 |
JPREPD | con.prepareStatement("...") 코드 수행 후, 그 다음 로직을 수행하고 있는 상태 |
JEXENG | DB SQL 쿼리를 수행하고 있는 상태 |
JEXETD | DB SQL 쿼리를 수행한 후에, 그 다음 로직을 진행하고 있는 상태 |
JRSNXT | rs.next() 코드를 반복적으로 수행하고 있는 상태 |
JRSFLS | rs.next() 코드 수행 결과가 false가 된 후, 그 다음 로직을 수행하고 있는 상태 |
JRSCLD | rs.close() 코드가 수행된 후, 그 다음 로직을 수행하고 있는 상태 |
JSTCLD | stat.close()와 pstmt.close() 코드가 수행된 후, 그 다음 로직을 수행하고 있는 상태 |
JCONCD | con.close() 코드가 수행된 후, 그 다음 로직을 수행하고 있는 상태 |
TXEXEC | CTG/Jolt/JLink/WebT 등과의 외부 트랜잭션을 수행하고 있는 상태 |
TXEXED | 외부 트랜잭션 수행을 끝내고, 그 다음 로직을 수행하고 있는 상태 |
ENDAPP | 애플리케이션 로직을 모두 끝낸 상태 |
ENDLNG | 사용자 요청을 처리하는데 소요된 응답 시간이 지정된 값 보다 오래 걸린 경우의 상태 |
ERREXP | 애플리케이션 로직 수행 중에 처리되지 않은 예외가 발생한 상태 |
ERRIOE | 예외 사항이 java.io.IOException인 경우의 상태 |
ERRRCS | 반복적인 서블릿 객체의 service 메소드 호출을 감지하여 강제 중단시킨 상태 |
액티브 서비스 상세 내역 화면 하단에 있는 버튼을 통해서 액티브 서비스를 처리하고 있는 자바 쓰레드를 컨트롤할 수 있다.
인터럽트 - 해당 자바 쓰레드 객체의 interrupt 메소드를 호출한다.
쓰레드 우선순위 변경 - 해당 자바 쓰레드 객체의 setPriority 메소드를 호출하여 쓰레드의 우선 순위를 변경한다.
일시 정지 - 해당 자바 쓰레드 객체의 suspend 메소드를 호출하여 자바 쓰레드를 일시 중지시킨다.
재시작 - 해당 자바 쓰레드 객체의 resume 메소드를 호출하여 자바 쓰레드를 다시 시작시킨다.
정지 - 해당 자바 쓰레드 객체의 stop 메소드를 호출하여 자바 쓰레드를 정지시킨다.
DB 커넥션이 열려 있는 상태에서 정지 버튼을 클릭하면 DB 커넥션 릭이 발생할 수도 있다.
또한 WAS는 일반적으로 성능 향상을 위해서 쓰레드 풀을 사용하여 쓰레드를 관리한다. WAS가 애플리케이션에 쓰레드를 할당하기 전에 쓰레드가 정상적인 상태에 있는지를 체크한다면, 제니퍼를 통해서 특정 쓰레드를 중지시키는 것이 큰 문제가 되지는 않는다. 하지만 WAS가 이를 확인하지 않는다면 비정상적인 쓰레드가 애플리케이션에 할당되어 다른 서비스를 처리하는 과정에서 알 수 없는 문제가 발생할 수 있다. 따라서 완료될 가능성이 없으면서 CPU를 과도하게 사용하는 액티브 서비스가 있다면 정지보다는 일시 정지하는 것을 권장한다.
제니퍼 에이전트의 enable_active_thread_kill 옵션을 통해서 자바 쓰레드 중지를 방지할 수 있다.
enable_active_thread_kill = false
액티브였던 서비스가 더 이상 실행 상태가 아니면 파업 창에 다음과 같은 메시지가 나타난다.
애플리케이션 처리 현황 통계
다음은 애플리케이션 목록에 대한 설명이다.
항목 | 설명 |
---|---|
호출 건수 | 애플리케이션 수행 건수 |
성공 건수 | 애플리케이션 수행이 성공한 건수 |
실패 건수 | 애플리케이션 수행이 실패한 건수 |
응답 시간의 합 | 애플리케이션 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 애플리케이션 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 애플리케이션 수행에 소요된 최소 응답 시간 |
최대 응답 | 애플리케이션 수행에 소요된 최대 응답 시간 |
평균 CPU | 애플리케이션 수행에 사용된 평균 CPU 사용 시간 |
CPU(tpmC) | 애플리케이션 수행에 사용된 CPU(tpmC) 값 |
CPU 합 | 애플리케이션 수행에 사용된 CPU 사용 시간의 합 |
애플리케이션 | 애플리케이션 이름으로 일반적으로 URI를 의미한다. |
애플리케이션 목록에서 특정 애플리케이션을 선택하면 하단에 해당 애플리케이션에서 수행된 SQL과 외부 트랜잭션 목록이 표시된다. 다음은 이에 대한 설명이다.
항목 | 설명 |
---|---|
유형 | SQL은 SQL을 의미하고 TX는 외부 트랜잭션을 의미한다. |
애플리케이션 수행 점유비율 | SQL 혹은 외부 트랜잭션의 응답 시간이 해당 애플리케이션 응답 시간에서 차지하는 점유 비율로 단위는 퍼센트이다. |
호출 건수 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행 건수 |
응답 시간의 합 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행에 소요된 최소 응답 시간 |
최대 응답 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행에 소요된 최대 응답 시간 |
SQL/트랜잭션 | SQL 혹은 외부 트랜잭션 이름 |
SQL 처리 현황 통계
다음은 SQL 목록에 대한 설명이다.
항목 | 설명 |
---|---|
호출 건수 | SQL 수행 건수 |
응답 시간의 합 | SQL 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | SQL 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | SQL 수행에 소요된 최소 응답 시간 |
최대 응답 | SQL 수행에 소요된 최대 응답 시간 |
SQL | SQL |
SQL 목록에서 특정 SQL을 선택하면 하단에 해당 SQL을 수행한 애플리케이션 목록이 표시된다. 다음은 이에 대한 설명이다.
항목 | 설명 |
---|---|
애플리케이션 수행 점유비율 | SQL의 응답 시간이 해당 애플리케이션 응답 시간에서 차지하는 점유 비율로 단위는 퍼센트이다. |
호출 건수 | 해당 애플리케이션에서 호출한 SQL 수행 건수 |
응답 시간의 합 | 해당 애플리케이션에서 호출한 SQL 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 해당 애플리케이션에서 호출한 SQL 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 해당 애플리케이션에서 호출한 SQL 수행에 소요된 최소 응답 시간 |
최대 응답 | 해당 애플리케이션에서 호출한 SQL 수행에 소요된 최대 응답 시간 |
애플리케이션 | 애플리케이션 이름 |
외부 트랜잭션 처리 현황 통계
다음은 외부 트랜잭션 목록에 대한 설명이다.
항목 | 설명 |
---|---|
호출 건수 | 외부 트랜잭션 수행 건수 |
응답 시간의 합 | 외부 트랜잭션 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 외부 트랜잭션 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 외부 트랜잭션 수행에 소요된 최소 응답 시간 |
최대 응답 | 외부 트랜잭션 수행에 소요된 최대 응답 시간 |
외부 트랜잭션 | 외부 트랜잭션 이름 |
외부 트랜잭션 목록에서 특정 외부 트랜잭션을 선택하면 하단에 해당 외부 트랜잭션을 수행한 애플리케이션 목록이 표시된다. 다음은 이에 대한 설명이다.
항목 | 설명 |
---|---|
애플리케이션 수행 점유비율 | 외부 트랜잭션의 응답 시간이 해당 애플리케이션 응답 시간에서 차지하는 점유 비율로 단위는 퍼센트이다. |
호출 건수 | 해당 애플리케이션에서 호출한 외부 트랜잭션 수행 건수 |
응답 시간의 합 | 해당 애플리케이션에서 호출한 외부 트랜잭션수 행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 해당 애플리케이션에서 호출한 외부 트랜잭션 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 해당 애플리케이션에서 호출한 외부 트랜잭션 수행에 소요된 최소 응답 시간 |
최대 응답 | 해당 애플리케이션에서 호출한 외부 트랜잭션 수행에 소요된 최대 응답 시간 |
애플리케이션 | 애플리케이션 이름 |
예외 현황 통계
다음은 예외 목록에 대한 설명이다.
항목 | 설명 |
---|---|
발생 건수 | 예외가 발생한 건수 |
발생 비율 | 예외 목록에 표시된 모든 예외의 발생 건수의 합에 대한 해당 예외의 발생 건수의 비율로 단위는 퍼센트이다. |
예외 | 예외 예외의 이름 |
예외 목록에서 특정 예외를 선택하면 하단에 해당 예외가 발생한 애플리케이션 목록이 표시된다. 다음은 이에 대한 설명이다.
항목 | 설명 |
---|---|
발생 건수 | 애플리케이션에서 특정 예외가 발생한 건수 |
발생 비율 | 예외와 관련한 상세 목록에 표시된 모든 애플리케이션의 예외 발생 건수의 합에 대한 해당 애플리케이션의 예외 발생 건수의 비율로 단위는 퍼센트이다. |
애플리케이션 | 예외가 발생한 애플리케이션 이름 |
내용 | 예외와 관련한 내용으로 주로 예외 메시지와 스택트레이스 등이 표시된다. |
DB 현황 통계
다음은 DB 목록에 대한 설명이다.
항목 | 설명 |
---|---|
해시코드 | JDBC 커넥션 객체의 해시 코드 |
DB SID | 오라클 데이터베이스 SID로 오라클 데이터베이스를 사용하는 경우에만 표시된다. 오라클 데이터베이스를 사용하는 경우에도 SID를 표시하려면 별도의 설정이 필요하다. |
클래스 | java.sql.Connection 인터페이스에 대한 구현 클래스로 사용하는 JDBC 드라이버에 따라서 달라진다. |
이름 | JNDI에 등록된 이름 |
IP | 해당 DB 커넥션을 사용하고 있는 자바 쓰레드가 처리하고 있는 서비스를 요청한 사용자 IP 주소 |
호출 시간 | 해당 DB 커넥션을 사용하고 있는 자바 쓰레드가 처리하고 있는 서비스의 요청이 도착한 시간 |
응답 시간 | 해당 DB 커넥션을 사용하고 있는 자바 쓰레드가 처리하고 있는 서비스의 경과 시간 |
쓰레드 | 해당 DB 커넥션을 사용하고 있는 자바 쓰레드 아이디 |
상태 | 액티브 서비스 상태 코드와 동일 |
애플리케이션 | 해당 DB 커넥션을 사용하고 있는 자바 쓰레드가 처리하고 있는 서비스 요청의 애플리케이션 이름으로, 액티브 서비스 목록과 동일하게 해당 칼럼을 클릭하면 액티브 서비스 상세 내역을 확인할 수 있다. |
IP에서 애플리케이션까지의 항목은 해당 DB 커넥션을 사용하고 있는 자바 쓰레드가 처리하고 있는 액티브 서비스에 대한 설명으로 DB 커넥션이 대기중인 상태이면 아무런 내용도 표시되지 않는다.
프로그래밍의 부주의로 동일한 DB 커넥션 객체가 동일 시점에 2개 이상의 자바 쓰레드에 할당될 수도 있다. 이런 경우에는 애플리케이션에 [중복 할당]이라는 표시가 나타난다.
통계 분석 - 통계 현황
[실시간 모니터링 | 통계 현황] 메뉴에서 선택한 날짜 일반 성능 데이터를 다양한 차트로 모니터링할 수 있다.
우선 화면 상단에 있는 막대 차트를 통해서 일자별 호출 건수와 일자별 방문자 수를 확인할 수 있다. 기본으로 일자별 호출 건수가 보인다. 막대 차트에서 일반 성능 데이터를 확인할 날짜에 해당하는 막대를 클릭하면 화면 중간에 있는 여러 탭에 해당 일반 성능 데이터가 나타난다.
그리고 화면 중간에 있는 여러 탭을 통해서 업무 처리량, 사용자, CPU, 메모리 등으로 분류된 선택한 날짜 일반 성능 데이터를 확인할 수 있다.
통계 현황에서는 라인 차트를 주로 사용한다.
업무 처리량
업무 처리량 탭에서는 선택한 날짜 서비스 요청률, 서비스 처리율, 평균 응답 시간, 시간당 호출 건수 등을 라인 차트와 막대 차트 등을 통해서 확인할 수 있다.
업무 처리량 탭의 왼쪽에 있는 차트는 특정 제니퍼 에이전트가 아닌 모니터링하는 전체 제니퍼 에이전트에서 수집한 값에 대한 누적 값 혹은 평균 값을 표시한다. 그리고 오른쪽에 있는 차트가 막대 차트이면 아무런 내용도 표시되지 않고, 라인 차트이면 제니퍼 에이전트 별로 수집한 성능 데이터를 개별적인 선으로 표시한다. 업무 처리량 탭 오른쪽 상단에 있는 리스트에서 특정 제니퍼 에이전트를 선택하면 오른쪽에 있는 막대 차트에는 해당 제니퍼 에이전트에서 수집한 성능 데이터가 나타나고 라인 차트에도 해당 제니퍼 에이전트에서 수집한 성능 데이터만이 선으로 표시된다.
사용자
사용자 탭에서는 선택한 날짜 동시단말 사용자 수, 액티브 서비스 개수, 대기 시간, 시간당 방문자 수 등을 라인 차트와 막대 차트 등을 통해서 확인할 수 있다.
사용자 탭의 왼쪽에 있는 차트는 특정 제니퍼 에이전트가 아닌 모니터링하는 전체 제니퍼 에이전트에서 수집한 값에 대한 누적 값 혹은 평균 값을 표시한다. 그리고 오른쪽에 있는 차트가 막대 차트이면 아무런 내용도 표시되지 않고, 라인 차트이면 제니퍼 에이전트 별로 수집한 성능 데이터를 개별적인 선으로 표시한다. 사용자 탭 오른쪽 상단에 있는 리스트에서 특정 제니퍼 에이전트를 선택하면 오른쪽에 있는 막대 차트에는 해당 제니퍼 에이전트에서 수집한 성능 데이터가 나타나고 라인 차트에도 해당 제니퍼 에이전트에서 수집한 성능 데이터만이 선으로 표시된다.
CPU
CPU 탭에서는 선택한 날짜 시스템 CPU 사용률, 자바 프로세스 CPU 사용률 등을 라인 차트 등을 통해서 확인할 수 있다.
CPU와 관련한 성능 데이터는 업무 처리량이나 사용자와 관련한 성능 데이터와는 다르게 모든 제니퍼 에이전트에 대한 누적 값 혹은 평균 값이 의미가 없다. 따라서 CPU 탭의 왼쪽에 있는 라인 차트는 제니퍼 에이전트 별로 수집한 성능 데이터를 개별적인 선으로 표시한다. 그리고 오른쪽에는 아무런 내용도 표시되지 않는다. CPU 탭 오른쪽 상단에 있는 리스트에서 특정 제니퍼 에이전트를 선택하면 오른쪽에 있는 라인 차트에 해당 제니퍼 에이전트에서 수집한 성능 데이터만이 선으로 표시된다.
메모리
메모리 탭에서는 선택한 날짜 자바 힙 메모리 사용률, 자바 힙 메모리 사용량, 시스템 메모리 사용량, 자바 프로세스 메모리 사용량 등을 라인 차트 등을 통해서 확인할 수 있다.
메모리와 관련한 성능 데이터는 업무 처리량이나 사용자와 관련한 성능 데이터와는 다르게 모든 제니퍼 에이전트에 대한 누적 값 혹은 평균 값이 의미가 없다. 따라서 메모리 탭의 왼쪽에 있는 라인 차트는 제니퍼 에이전트 별로 수집한 성능 데이터를 개별적인 선으로 표시한다. 그리고 오른쪽에는 아무런 내용도 표시되지 않는다. 메모리 탭 오른쪽 상단에 있는 리스트에서 특정 제니퍼 에이전트를 선택하면 오른쪽에 있는 라인 차트에 해당 제니퍼 에이전트에서 수집한 성능 데이터만이 선으로 표시된다.
통계 분석 - 애플리케이션
제니퍼 서버는 제니퍼 에이전트로부터 10분 단위로 수집한 애플리케이션, SQL, 외부 트랜잭션, 예외 처리 현황 통계 데이터를 데이터베이스에 저장한다. 그리고 사용자는 [통계분석 | 애플리케이션] 메뉴를 통해서 이 데이터를 열람할 수 있다.
여기서 제공하는 데이터는 10분 단위로 요약한 통계 값이다. 예를 들어, 10분 동안의 어떤(ex login.jsp/login.aspx) 애플리케이션에 대한 전체 호출 건수와 평균 응답 시간 등은 제공하지만 어떤(ex login.jsp/login.aspx) 애플리케이션의 개별 트랜잭션에 대한 요청 시간과 응답 시간 등은 제공하지 않는다. 개별 트랜잭션을 분석하려면 [X-View와 프로파일링]을 참조한다.
첫번째 막대 차트에는 일자별 호출 건수, 일자별 방문자 수, 일자별 예외 건수 등이 표시된다. 기본은 일자별 호출 건수이다. 첫번째 막대 차트에서 특정 일을 클릭하면 두번째 차트에 해당 일에 대한 시간당 호출 건수, 시간당 방문자 수, 동시단말 사용자 수, 대기 시간, 액티브 서비스 개수, 서비스 요청률, 서비스 처리율, 평균 응답 시간, 시간당 예외 건수 등이 표시된다. 기본은 시간당 호출 건수이고 시간당 호출 건수, 시간당 방문자 수, 시간당 예외 건수는 1시간 단위의 막대 차트로 표시되고 다른 데이터는 5분 단위의 라인 차트로 표시된다.
두번째 차트의 유형으로 시간당 호출 건수, 시간당 방문자 수, 시간당 예외 건수 중에서 하나를 선택한 후에 특정 시간을 클릭하면 하단 그리드에는 해당 시간대의 애플리케이션, SQL, 외부 트랜잭션, 예외 등의 처리 현황 통계 데이터가 표시된다.
오른쪽에 있는 [일자별 전체] 체크 박스를 선택하면, 시간대와 상관없이 해당 날짜의 애플리케이션, SQL, 외부 트랜잭션, 예외 등의 전체 처리 현황 통계 데이터가 표시된다.
첫번째 그리드에서 특정 애플리케이션, 특정 SQL, 특정 외부 트랜잭션, 특정 예외를 선택하면 두번째 그리드와 세번째와 네번째 차트에 그와 관련한 정보가 표시된다.
예를 들어, 첫번째 그리드에서 특정 애플리케이션을 선택하면 두번째 그리드에서는 동일시간대에 해당 애플리케이션에서 수행된 SQL과 외부 트랜잭션 목록이 표시되고, 세번째 차트에는 해당 애플리케이션에 대한 호출 건수, 실패 건수, 응답 시간의 합, 평균 응답 시간, 최소 응답, 최대 응답, CPU 시간, CPU(tpmC) 등을 일자별로 보여준다. 세번째 차트에서 특정 일을 클릭하면 네번째 차트에 선택한 날짜에 대한 데이터가 막대 차트 혹은 라인 차트로 표시된다.
애플리케이션 처리 현황 통계
다음은 애플리케이션 목록에 대한 설명이다.
항목 | 설명 |
---|---|
호출 건수 | 애플리케이션 수행 건수 |
성공 건수 | 애플리케이션 수행이 성공한 건수 |
실패 건수 | 애플리케이션 수행이 실패한 건수 |
응답 시간의 합 | 애플리케이션 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 애플리케이션 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 애플리케이션 수행에 소요된 최소 응답 시간 |
최대 응답 | 애플리케이션 수행에 소요된 최대 응답 시간 |
평균 CPU | 애플리케이션 수행에 사용된 평균 CPU 사용 시간 |
CPU(tpmC) | 애플리케이션 수행에 사용된 CPU(tpmC) 값 |
CPU 합 | 애플리케이션 수행에 사용된 CPU 사용 시간의 합 |
애플리케이션 | 애플리케이션 이름으로 일반적으로 URI를 의미한다. |
애플리케이션 목록에서 특정 애플리케이션을 선택하면 하단에 해당 애플리케이션에서 수행된 SQL과 외부 트랜잭션 목록이 표시된다. 다음은 이에 대한 설명이다.
항목 | 설명 |
---|---|
유형 | SQL은 SQL을 의미하고 TX는 외부 트랜잭션을 의미한다. |
애플리케이션 수행 점유비율 | SQL 혹은 외부 트랜잭션의 응답 시간이 해당 애플리케이션 응답 시간에서 차지하는 점유 비율로 단위는 퍼센트이다. |
호출 건수 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행 건수 |
응답 시간의 합 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행에 소요된 최소 응답 시간 |
최대 응답 | 해당 애플리케이션에서 호출한 SQL 혹은 외부 트랜잭션 수행에 소요된 최대 응답 시간 |
SQL/트랜잭션 | SQL 혹은 외부 트랜잭션 이름 |
SQL 처리 현황 통계
다음은 SQL 목록에 대한 설명이다.
항목 | 설명 |
---|---|
호출 건수 | SQL 수행 건수 |
응답 시간의 합 | SQL 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | SQL 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | SQL 수행에 소요된 최소 응답 시간 |
최대 응답 | SQL 수행에 소요된 최대 응답 시간 |
SQL | SQL |
SQL 목록에서 특정 SQL을 선택하면 하단에 해당 SQL을 수행한 애플리케이션 목록이 표시된다. 다음은 이에 대한 설명이다.
항목 | 설명 |
---|---|
애플리케이션 수행 점유비율 | SQL의 응답 시간이 해당 애플리케이션 응답 시간에서 차지하는 점유 비율로 단위는 퍼센트이다. |
호출 건수 | 해당 애플리케이션에서 호출한 SQL 수행 건수 |
응답 시간의 합 | 해당 애플리케이션에서 호출한 SQL 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 해당 애플리케이션에서 호출한 SQL 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 해당 애플리케이션에서 호출한 SQL 수행에 소요된 최소 응답 시간 |
최대 응답 | 해당 애플리케이션에서 호출한 SQL 수행에 소요된 최대 응답 시간 |
애플리케이션 | 애플리케이션 이름 |
외부 트랜잭션 처리 현황 통계
다음은 외부 트랜잭션 목록에 대한 설명이다.
항목 | 설명 |
---|---|
호출 건수 | 외부 트랜잭션 수행 건수 |
응답 시간의 합 | 외부 트랜잭션 수행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 외부 트랜잭션 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 외부 트랜잭션 수행에 소요된 최소 응답 시간 |
최대 응답 | 외부 트랜잭션 수행에 소요된 최대 응답 시간 |
외부 트랜잭션 | 외부 트랜잭션 이름 |
외부 트랜잭션 목록에서 특정 외부 트랜잭션을 선택하면 하단에 해당 외부 트랜잭션을 수행한 애플리케이션 목록이 표시된다. 다음은 이에 대한 설명이다.
항목 | 설명 |
---|---|
애플리케이션 수행 점유비율 | 외부 트랜잭션의 응답 시간이 해당 애플리케이션 응답 시간에서 차지하는 점유 비율로 단위는 퍼센트이다. |
호출 건수 | 해당 애플리케이션에서 호출한 외부 트랜잭션 수행 건수 |
응답 시간의 합 | 해당 애플리케이션에서 호출한 외부 트랜잭션수 행에 소요된 응답 시간의 합 |
평균 응답 시간 | 응답 시간의 합을 호출 건수로 나눈 값 |
표준 편차 | 해당 애플리케이션에서 호출한 외부 트랜잭션 수행에 소요된 응답 시간의 표준 편차 |
최소 응답 | 해당 애플리케이션에서 호출한 외부 트랜잭션 수행에 소요된 최소 응답 시간 |
최대 응답 | 해당 애플리케이션에서 호출한 외부 트랜잭션 수행에 소요된 최대 응답 시간 |
애플리케이션 | 애플리케이션 이름 |
예외 현황 통계
다음은 예외 목록에 대한 설명이다.
항목 | 설명 |
---|---|
발생 건수 | 예외가 발생한 건수 |
발생 비율 | 예외 목록에 표시된 모든 예외의 발생 건수의 합에 대한 해당 예외의 발생 건수의 비율로 단위는 퍼센트이다. |
예외 | 예외 예외의 이름 |
예외 목록에서 특정 예외를 선택하면 하단에 해당 예외가 발생한 애플리케이션 목록이 표시된다. 다음은 이에 대한 설명이다.
항목 | 설명 |
---|---|
발생 건수 | 애플리케이션에서 특정 예외가 발생한 건수 |
발생 비율 | 예외와 관련한 상세 목록에 표시된 모든 애플리케이션의 예외 발생 건수의 합에 대한 해당 애플리케이션의 예외 발생 건수의 비율로 단위는 퍼센트이다. |
애플리케이션 | 예외가 발생한 애플리케이션 이름 |
내용 | 예외와 관련한 내용으로 주로 예외 메시지와 스택트레이스 등이 표시된다. |
예외와 관련한 상세 목록에서 애플리케이션 필드를 클릭하면 팝업 창에서 상세한 예외 내용을 확인할 수 있다.
보고서
제니퍼가 제공하는 보고서에 대해서 설명한다.
일일 보고서
[통계 분석 | 보고서 | 일일 보고서] 메뉴는 선택한 날짜에 대한 성능 데이터를 요약해서 보고서 형태로 제공해준다.
상단에는 검색 조건이 있고 하단에는 요약 정보 탭과 상세 정보 탭이 있다. 요약 정보 탭은 선택한 날짜에 대한 성능 데이터를 요약한 보고서를 제공하고, 상세 정보 탭은 선택한 날짜에 대해 PERF_X_01~31 테이블에 저장되어 있는 데이터를 제공한다. 기본적으로 요약정보 탭이 선택되어 있다.
요약 정보
일일 보고서를 열람하려면 검색 조건에 적절한 값을 입력한 후에 오른쪽 하단에 있는 [검색] 버튼을 클릭한다. 다음은 검색 조건에 대한 설명이다.
노드 - 노드를 구성한 경우에는 제니퍼 에이전트 선택 영역에서 특정 노드를 선택하여, 해당 노드에 속하는 제니퍼 에이전트들에 대해서만 보고서를 열람할 수 있다.
에이전트 - 제니퍼 에이전트 선택 영역에서 보고서를 열람할 제니퍼 에이전트를 선택한다. 모든 제니퍼 에이전트들에 대해서 보고서를 열람하려면 [모두]를 선택한다.
날짜 - 보고서를 열람할 날짜를 선택한다.
시간 - 보고서를 열람할 때 사용할 성능 데이터의 시간 범위를 지정한다. 예를 들어, 22시에서 04시까지 사이에 사용자가 거의 없는 자바 애플리케이션을 모니터링하고 있다면, 시간을 04시에서 22시까지 설정하여 조회하면 정확한 성능 데이터에 대한 평균 값을 얻을 수 있다. 기본 시간 범위는 09시에서 18시이다.
일일 보고서가 제공하는 항목은 다음과 같다.
보고서 항목 | 설명 |
---|---|
요약 정보 | 선택한 날짜에 대한 호출 건수, 평균 응답 시간, 서비스 요청률, 방문자 수, 동시단말 사용자 수, 대기 시간 등의 성능 데이터를 제공한다. |
업무 현황 | 특정 애플리케이션 그룹에 대한 호출 건수, 평균 응답 시간, 최소 응답 시간, 최대 응답 시간, 평균 CPU 사용률 등의 성능 데이터를 제공한다. |
프로그램 현황 | 애플리케이션, SQL, 외부 트랜잭션에 대해서 호출 건수가 많은 10개와 평균 응답 시간이 긴 10건을 제공한다. |
예외 현황 | 선택한 날짜에 발생한 예외 정보를 보여준다. |
에이전트 별 현황 | 선택한 날짜에 대한 제니퍼 에이전트 별 호출 건수, 평균 응답 시간, 서비스 요청률, 동시단말 사용자 수, 액티브 서비스 개수, 시스템 CPU 사용률, 자바 힙 메모리 사용량, 액티브 JDBC 커넥션 개수 등에 대한 일일 전체 누적 값, 평균 값, 최대 값 등을 제공한다. |
각 항목의 내용을 엑셀로 다운로드할 수 있다.
상세 정보
상세 정보 탭을 선택하면 요약 정보 탭에 있던 검색 조건과 함께, 열람할 일반 성능 데이터 목록 및 정렬 방법을 선택할 수 있다.
상세 정보 탭에서는 단순하게 PERF_X_01~31 테이블에 있는 모든 데이터를 보여준다.
상세 정보 내역을 엑셀로 다운로드할 수 있다.
주간 보고서
[통계 분석 | 보고서 | 주간 보고서] 메뉴는 선택한 기간에 대한 성능 데이터를 요약해서 보고서 형식으로 제공한다.
상단에는 검색 조건이 있고 하단에는 요약 정보 탭과 상세 정보 탭이 있다. 요약 정보 탭은 선택한 기간에 대한 성능 데이터를 요약한 보고서를 제공하고, 상세 정보 탭은 선택한 기간에 대해 S_PERF_X 테이블에 저장되어 있는 데이터를 제공한다. 기본적으로 요약 정보탭이 선택되어 있다.
요약 정보
주간 보고서를 열람하려면 검색 조건에 적절한 값을 입력한 후에 오른쪽 하단에 있는 [검색] 버튼을 클릭한다. 다음은 검색 조건에 대한 설명이다.
노드 - 노드를 구성한 경우에는 제니퍼 에이전트 선택 영역에서 특정 노드를 선택하여, 해당 노드에 속하는 제니퍼 에이전트들에 대해서만 보고서를 열람할 수 있다.
에이전트 - 제니퍼 에이전트 선택 영역에서 보고서를 열람할 제니퍼 에이전트를 선택한다. 모든 제니퍼 에이전트들에 대해서 보고서를 열람하려면 [모두]를 선택한다.
날짜 - 보고서를 열람할 기간을 선택한다.
시간 - 보고서를 열람할 때 사용할 성능 데이터의 시간 범위를 지정한다. 예를 들어, 22 시에서 04시까지 사이에 사용자가 거의 없는 자바 애플리케이션을 모니터링하고 있다면, 시간을 04시에서 22시까지 설정하여 조회하면 정확한 성능 데이터에 대한 평균 값을 얻을 수 있다. 기본 시간 범위는 09시에서 18시이다.
일일 보고서가 제공하는 항목은 다음과 같다.
보고서 항목 | 설명 |
---|---|
요약 정보 | 선택한 날짜에 대한 호출 건수, 평균 응답 시간, 서비스 요청률, 방문자 수, 동시단말 사용자 수, 대기 시간 등의 성능 데이터를 제공한다. |
예외 현황 | 선택한 기간에 발생한 예외 정보를 보여준다. |
에이전트 별 현황 | 선택한 날짜에 대한 제니퍼 에이전트 별 호출 건수, 평균 응답 시간, 서비스 요청률, 동시단말 사용자 수, 액티브 서비스 개수, 시스템 CPU 사용률, 자바 힙 메모리 사용량, 액티브 JDBC 커넥션 개수 등에 대한 일일 전체 누적 값, 평균 값, 최대 값 등을 제공한다. |
각 항목의 내용을 엑셀로 다운로드할 수 있다.
상세 정보
상세 정보 탭을 선택하면 요약 정보 탭에 있던 검색 조건과 함께, 열람할 일반 성능 데이터 목록 및 정렬 방법을 선택할 수 있다.
상세 정보탭에서는 단순하게 S_PERF_X 테이블에 있는 모든 데이터를 보여준다.
상세 정보 내역을 엑셀로 다운로드할 수 있다.
월간 보고서
[통계 분석 | 월간 보고서] 메뉴는 선택한 월에 대한 성능 데이터를 요약해서 보고서 형식으로 제공한다.
월간 보고서를 열람하려면 검색 조건에 적절한 값을 입력한 후에 오른쪽 하단에 있는 [검색] 버튼을 클릭한다. 다음은 검색 조건에 대한 설명이다.
노드 - 노드를 구성한 경우에는 제니퍼 에이전트 선택 영역에서 특정 노드를 선택하여,해당 노드에 속하는 제니퍼 에이전트들에 대해서만 보고서를 열람할 수 있다.
에이전트 - 제니퍼 에이전트 선택 영역에서 보고서를 열람할 제니퍼 에이전트를 선택한다. 모든 제니퍼 에이전트들에 대해서 보고서를 열람하려면 [모두]를 선택한다.
년/월 - 보고서를 열람할 년과 월을 선택한다.
시간 - 보고서를 열람할 때 사용할 성능 데이터의 시간 범위를 지정한다. 예를 들어, 22시에서 04시까지 사이에는 사용자가 거의 없는 자바 애플리케이션을 모니터링하고 있다면, 시간을 04시에서 22시까지 설정하여 조회하면 정확한 성능 데이터에 대한 평균값을 얻을 수 있다. 기본 시간 범위는 09시에서 18시이다.
이 보고서는 제니퍼 에이전트 별 호출 건수, 평균 응답 시간, 서비스 요청률, 동시단말 사용자 수, 시스템 CPU 사용률, 자바 힙 메모리 사용량 등에 대한 월간 전체 누적 값, 평균 값, 최대 값 등을 전월 대비로 제공한다. 또한 전월 대비 증감율도 함께 표시를 해준다.
그리고 제니퍼 에이전트 별로 선택한 월에 대한 일자별 호출 건수, 평균 응답 시간, 서비스 요청률, 액티브 서비스 개수, 동시단말 사용자 수, 시스템 CPU 사용률, 자바 프로세스 CPU 사용률, 자바 힙 메모리 사용량, 액티브 JDBC 커넥션 개수 등에 대한 일일 전체 누적값, 평균 값, 최대 값 등을 경보 내역과 함께 제공한다.
- 자세한 예외 내역 보기 - 해당 링크를 클릭하면 자세한 예외 내역을 확인할 수 있다.
애플리케이션 보고서
[통계 분석 | 보고서 | 애플리케이션] 메뉴는 특정 애플리케이션에 대한 성능 데이터를 차트로 확인할 수 있도록 제공한다.
애플리케이션 성능 데이터를 조회하려면 검색 조건에 적절한 값을 입력한 후에 오른쪽 하단에 있는 [검색] 버튼을 클릭한다. 다음은 검색 조건에 대한 설명이다.
노드 - 노드를 구성한 경우에는 제니퍼 에이전트 선택 영역에서 특정 노드를 선택하여, 해당 노드에 속하는 제니퍼 에이전트들에 대해서만 애플리케이션에 대한 성능 데이터를 조회할 수 있다.
에이전트 - 제니퍼 에이전트 선택 영역에서 애플리케이션에 대한 성능 데이터를 조회할 제니퍼 에이전트를 선택한다. 모든 제니퍼 에이전트들에 대해서 애플리케이션에 대한 성능 데이터를 조회하려면 [모두]를 선택한다.
애플리케이션 - 애플리케이션 입력 필드를 클릭하면 팝업 창이 나타나고 이 팝업 창을 통해서 성능 데이터를 검색할 애플리케이션을 지정한다.
첫번째 차트는 해당 애플리케이션에 대한 호출 건수, 실패 건수, 응답 시간의 합, 평균 응답 시간, 최소 응답, 최대 응답, CPU 시간, CPU(tpmC) 등을 일자별로 보여준다. 첫번째 차트에서 특정 일을 클릭하면 두번째 차트에 선택한 날짜에 대한 데이터가 막대 차트 혹은 라인 차트로 표시된다.
보고서 템플릿
성능 데이터를 관계형 데이터베이스에 저장하기 때문에 성능 데이터에 대한 다양한 분석이 가능하고, 이를 활용하여 보고서 템플릿을 작성할 수 있다.
보고서 템플릿은 사용자 정의 파라미터와 SQL을 기반으로, RTF 형식과 HTML 형식의 보고서를 제공한다. RTF는 출력이나 보관용으로 사용하고 HTML은 주로 조회용으로 사용한다.
보고서 템플릿에 대한 이해
보고서 템플릿은 보고서에 대한 기본 정보와 여러 개의 아이템으로 구성된 실행할 수 있는 보고서이다. 그리고 아이템은 특정 성능 데이터를 SQL로 추출하여, 그 결과를 차트나 테이블 등의 양식으로 표시하는 방법을 정의한다. 예를 들어, 특정 날짜의 서비스 처리율을 라인 차트로 표시하려면 서비스 처리율을 추출하는 SQL과 유형이 TIME-LINE인 아이템을 작성해야 한다.
보고서 템플릿을 별도의 파일로 Import/Export하여 재활용할 수 있다. 그래서 우선 제니퍼가 제공하는 예제 보고서 템플릿 파일을 Import하여 보고서 템플릿을 이해하도록 한다.
먼저 [통계 | 보고서 | 보고서 템플릿] 메뉴로 이동한다.
보고서 템플릿 목록 하단에 있는 버튼을 통해서 JENNIFER_HOME/server/doc/report/SampleDailyReport.dat 파일을 import한다. 이 파일은 특정 날짜에 대한 성능 데이터를 보여주는 일일 보고서의 하나이다. 확장자가 dat으로 끝나는 파일만을 업로드할 수 있다.
보고서 템플릿을 Import하면 보고서 템플릿 목록에 Import한 보고서 템플릿이 나타난다. 이 보고서 템플릿의 제목은 Daily Report이다.
보고서 템플릿 목록에서 [보기] 링크를 클릭하면, 보고서 템플릿을 실행할 수 있는 화면으로 이동한다.
이 화면에서 검색 조건을 입력한 후에 [실행] 버튼을 클릭하면 하단에 HTML 형식의 보고서가 나타난다.
보고서 템플릿 목록에서 [리포트 다운로드] 링크를 클릭하면, 보고서 템플릿이 실행되면서 RTF 양식의 보고서가 다운로드된다.
보고서 템플릿 목록에서 템플릿 제목을 클릭하면, 보고서 템플릿을 구성하는 기본 정보와 아이템 목록을 확인할 수 있다.
보고서 템플릿 관리
다음으로는 보고서 템플릿을 관리하고 작성하는 방법을 설명한다. 우선 보고서 템플릿 목록 화면에서 보고서 템플릿을 관리하는 방법을 설명한다.
보고서 제목 - 보고서 템플릿의 제목으로 해당 칼럼을 클릭하면 해당 보고서 템플릿을 편집할 수 있는 상세 화면으로 이동한다. 이 이름을 보고서 자체의 이름으로도 사용한다.
아이템 수 - 하나의 보고서 템플릿은 1개 이상의 아이템으로 구성된다. 이 칼럼에서 보고서 템플릿의 총 아이템 수를 보여준다.
보기 - 보고서 템플릿이 실행되면서 HTML 양식의 보고서가 화면에 나타난다.
리포트 다운로드 - 보고서 템플릿이 실행되면서 RTF 양식의 보고서가 다운로드된다.
템플릿 다운로드 - 공유 및 재사용을 위해서 보고서 템플릿 파일을 다운로드한다. 그러면 이 보고서 템플릿 파일을 다른 제니퍼 서버에서 사용할 수 있다.
보고서 업로드 - 보고서 템플릿 파일을 업로드할 때 사용한다.
추가 버튼 - 해당 버튼을 클릭하면 새로운 보고서 템플릿을 구성할 수 있는 화면으로 이동한다.
삭제 버튼 - 보고서 템플릿 목록에서 삭제할 보고서 템플릿의 첫번째 칼럼의 체크 박스를 선택한 후에 해당 버튼을 클릭하면 보고서 템플릿이 삭제된다.
보고서 템플릿 작성과 사용자 정의 파라미터
새로운 보고서 템플릿을 작성하려면 보고서 템플릿 목록 화면 하단에 있는 [추가] 버튼을 클릭하여 보고서 템플릿 입력 화면으로 이동한다. 보고서 템플릿 입력 화면에서 보고서에 대한 기본 정보와 보고서 템플릿을 실행하는데 필요한 공통 파라미터를 설정한다.
다음은 보고서 템플릿 입력 필드에 대한 설명이다.
제목 - 보고서 템플릿의 제목으로 필수 입력 항목이다.
사용자 아이디 - 보고서 템플릿 작성자 아이디로 선택 입력 항목이다.
사용자 이름 - 보고서 템플릿 작성자 이름으로 선택 입력 항목이다.
파라미터 - 보고서 템플릿을 실행하는데 필요한 공통 파라미터로 선택 입력 항목이다.
머리글 - 보고서 전체의 머리글로 선택 입력 항목이다.
바닥글 - 보고서 전체의 바닥글로 선택 입력 항목이다.
저작권 - 저작권으로 선택 입력 항목이다.
보고서 템플릿을 사용하려면 파라미터를 명확하게 이해해야 한다. 보고서 템플릿에서 사용할 사용자 정의 파라미터를 설정할 수 있다. 우선 PageParam 옵션으로 사용자 정의 파라미터 키를 콤마[,]를 구분자로 입력한다. 그리고 PageParamName 옵션으로 사용자 정의 파라미터 키에 대한 이름을 설정한다. 이 이름은 사용자 정의 파라미터 입력 창에서 사용된다.
예를 들어, startday, endday, peaktime 등의 사용자 정의 파라미터를 Start-Date(YYYYMMDD), EndDate(YYYYMMDD), PeakTime(HH) 등의 이름으로 사용자로부터 입력받으려면 보고서 템플릿의 파라미터 입력 필드에 다음을 입력한다.
PageParam = startday,endday,peaktime PageParamName = StartDate(YYYYMMDD),EndDate(YYYYMMDD),PeakTime(HH)
PageParam 옵션으로 설정한 사용자 정의 파라미터의 기본 값을 설정할 수도 있다. 예를 들어서 사용자 정의 파라미터 startday, endday, peaktime 등의 기본 값을 20080923, 20080929, 10으로 설정하려면 다음과 같이 한다.
PageParam = startday,endday,peaktime PageParamName = StartDate(YYYYMMDD),EndDate(YYYYMMDD),PeakTime(HH) startday = 20080923 endday = 20080929 peaktime = 10
사용자 정의 파라미터에 대한 초기 값으로 상수가 아닌 예약 파라미터를 사용할 수 있다. 다음은 사용 가능한 예약 파라미터 목록이다.
변수명 | 설명 |
---|---|
J_CURRENT_DATE | yyyyMMdd 포멧의 오늘 날짜 |
J_CURRENT_TIME | HHmmss 포멧의 현재 시간 |
J_BEFORE_WEEK | yyyyMMdd 포멧의 일주일 전 날짜 |
J_BEFORE_MONTH | yyyyMMdd 포멧의 한달 전 날짜 |
J_BEFORE_DATE | yyyyMMdd 포멧의 어제 날짜 |
예약 파라미터는 다음과 같이 사용할 수 있다.
PageParam = TODAY PageParamName = Date(YYYYMMDD) TODAY = ${J_CURRENT_DATE}
또한 PageParam 옵션으로 정의한 파라미터를 기반으로 파생 사용자 정의 파라미터를 설정할 수 있다. 예를 들어, 사용자로부터는 TODAY를 입력받고 이를 기반으로 dd 포멧의 일자 사용자 정의 파생 파라미터를 설정하려면 다음과 같이 한다.
PageParam = TODAY PageParamName = Date(YYYYMMDD) TODAY = ${J_CURRENT_DATE} TODAY_DD = ${TODAY(6,2)}
TODAY_DD는 ${parameter(start, length)} 형식의 연산자를 통해서 TODAY 파라미터 값의 일부분을 그 값으로 한다.
이렇게 정의한 사용자 정의 파라미터는 아이템을 구성하는 SQL에서 다음과 같이 사용할 수 있다.
SELECT LOG_DT || LOG_HH || LOG_MM, SERVICE_RATE FROM PERF_X_${TODAY_DD} WHERE LOG_DT = '${TODAY}' AND AGENT_ID = 'TOT'
아이템 작성
보고서 템플릿의 실질적인 내용은 아이템을 통해서 구성한다. 일반적으로 보고서 템플릿은 여러 개의 아이템으로 구성된다. 아이템 관리 방법은 다음과 같다.
수정 - 해당 버튼을 클릭하면 보고서 템플릿의 내용을 수정할 수 있는 보고서 템플릿 입력 화면으로 이동한다.
보기 - 해당 버튼을 클릭하면 보고서 템플릿이 실행되면서 HTML 양식의 보고서가 팝업 창에 나타난다.
목록 - 해당 버튼을 클릭하면 보고서 템플릿 목록 화면으로 이동한다.
아이템 제목 - 아이템의 제목으로, 클릭하면 해당 아이템의 내용을 수정할 수 있는 입력 화면이 화면 오른 쪽에 나타난다.
아이템 보기 - 링크를 클릭하면 전체 보고서가 아닌 해당 아이템만을 실행시킬 수 있는 새로운 팝업 창이 나타난다.
아이템 추가 - 해당 버튼을 클릭하면 새로운 아이템을 추가할 수 있는 입력 화면이 화면 오른 쪽에 나타난다.
아이템 삭제 - 아이템 목록에서 삭제할 아이템의 첫번째 칼럼의 체크 박스를 선택한 후에 해당 버튼을 클릭하면 아이템이 삭제된다.
다음은 아이템 입력 필드에 대한 설명이다.
Chapter/Section/제목 - Chapter와 Section에는 숫자를 입력한다. 아이템 목차는 2 단계만 가능하고 1.0은 새로운 CHAPTER의 시작이고 1.1은 1.0의 하위 SECTION이다. 이를 통해서 아이템의 순서가 정렬된다. 그리고 제목에는 아이템의 제목을 입력한다.
유형 - SQL로 추출한 데이터를 표시할 방법을 선택한다.
머리글 - 아이템의 머리글로 선택 입력 항목이다.
파라미터 - 유형에 따른 결과를 제어할 때 사용하는 옵션을 입력한다.
SQL 쿼리 - 데이터를 추출할 SQL을 입력한다.
반복 파라미터 - SQL을 반복적으로 수행할 반복 파라미터를 입력한다.
바닥글 - 아이템의 바닥글로 선택 입력 항목이다.
다음은 아이템 유형에 대한 설명이다.
아이템 명 | 설명 |
---|---|
NONE | 아이템을 사용하지 않는다. 주로 머리글 혹은 바닥글을 이용해서 텍스트로 보고서에 대한 설명을 제공하는 아이템의 경우에 이 유형을 사용한다. |
LINE | SQL 결과를 라인 차트로 보여준다. |
TIME_LINE | SQL 결과를 시계열 차트로 보여준다. |
3D LINE | SQL 결과를 3D 효과를 준 라인 차트로 보여준다. |
PIE | SQL 결과를 파이 차트로 보여준다. |
BAR | SQL 결과를 막대 차트로 보여준다. |
3D BAR | SQL 결과를 3D 효과를 준 막대 차트로 보여준다. |
STACKED BAR | SQL 결과를 계층적 막대 차트로 보여준다. |
3D STACKED BAR | SQL 결과를 3D 효과를 준 계층적 막대 차트로 보여준다. |
LIST(EXCEL TYPE) | SQL 결과를 테이블 형식으로 보여준다. |
SQL Query(Query Only) | 보고서 작성에 임시적으로 필요한 쿼리를 수행한다. 보고서에는 아무런 내용도 나타나지 않는다. |
파라미터를 통해서 아이템의 옵션을 조정할 수 있다. 다음은 주요 파라미터에 대한 설명이다.
아이템 파라미터 | 설명 |
---|---|
GraphTitle | 차트의 제목 |
GraphWidth | 차트의 넓이 |
GraphHeight | 차트의 높이 |
GraphMaxY | 차트의 Y 축 최대 값 |
GraphLabelX | 차트 X 축 범례로, 2개 이상인 경우에는 콤마를 구분자로 구분한다. 그리고 #SQL로 설정하면 SELECT 절의 두번째 칼럼을 범례로 사용한다. |
GraphLabelY | 차트의 Y 축 이름 |
GraphPieExplode | 파이 차트에서 특정 항목을 강조하려면, 해당 항목의 이름을 설정한다. |
GraphShowValue | 막대 차트에 값을 표시하려면 true를, 표시하지 않으려면 false를 입력한다. |
GraphShowLegend | 차트 범례의 표시 여부 |
GraphShapeVisible | 차트 각 포인트 별 강조점 표시 여부로 TIME-LINE 유형에서만 사용 가능하다. |
GraphItemLabelRotation | X축 라벨의 회전도(기본값은0.523) |
MaxRows | 차트를 표시하기 위한 레코드의 최대 크기로 설정하지 않으면 제니퍼 서버의 default_max_rows_for_report_item 옵션으로 설정한 값을 따라간다. 기본 값은 3600이다. |
GraphLineWidth | 차트 라인 두께로 기본값은 2.0이고 LINE, TIME-LINE 유형에서만 사용 가능하다. |
datadb_url | 외부 데이터베이스 연결을 위한 JDBC URL |
datadb_driver | 외부 데이터베이스 연결을 위한 Driver 클래스 이름 |
datadb_user | 외부 데이터베이스 연결을 위한 사용자 계정 |
datadb_password | 외부 데이터베이스 연결을 위한 패스워드 |
TableColumnAlign | 아이템 유형으로 List(Excel Type)를 선택한 경우에, 각 칼럼 좌우 정렬 기준을 지정한다. left, center, right 등을 콤마를 구분자로 지정한다 |
TableColumnValign | 아이템 유형으로 List(Excel Type)를 선택한 경우에, 각 칼럼 상하 정렬 기준을 지정한다. top, middle, bottom 등을 콤마를 구분자로 지정한다. |
TableColumnWidth | 아이템 유형으로 List(Excel Type)를 선택한 경우에, 각 칼럼 넓이를 지정한다. |
TableLabel | 아이템 유형으로 List(Excel Type)를 선택한 경우에, 기본적으로 테이블 칼럼 이름은 SQL 칼럼 이름이 된다. 테이블 칼럼 이름을 별도의 이름으로 지정할 때 TableLabel 파라미터를 사용한다. 콤마를 구분자로 구분한다 |
아이템 파라미터를 보고서 템플릿 파라미터 입력 필드에도 지정할 수 있다. 그 경우에는 모든 아이템에 해당 파라미터가 적용된다.
아이템 입력 화면의 SQL 필드에 아이템을 구성하는데 필요한 데이터를 가져오는 쿼리를 입력한다. SQL 필드 오른쪽 아래에 있는 [실행] 링크를 클릭하면 입력한 쿼리를 바로 테스트할 수 있다.
SQL 작성 요령
각 아이템은 SQL을 실행하여 차트 혹은 테이블에 표현할 데이터를 조회한다. 따라서 정해진 형식을 준수하는 SQL을 사용해야 한다.
주요 테이블에 대한 이해
아이템을 작성하려면 성능 데이터베이스 테이블 구조를 이해해야 한다. 이에 대한 자세한 사항은 테이블 스키마를 참조한다. 여기서는 몇 가지 주요 작성 요령을 설명한다.
자주 사용하는 테이블은 PERF_X_01~31, APPL_10M_01~31, SQLS_10M_01~31, TX_10M_01~31 등의 일자별 테이블이다. 이 테이블들은 성능 향상을 위해서 일자별로 분리되어 있다. 즉, PERF_X_01~31 테이블은 존재하지 않고, 일자별로 PERF_X_01, PERF_X_02 등의 테이블이 존재한다. 따라서 SQL에서 일자별 테이블을 사용하는 경우에는 기본적으로 보고서 템플릿 파라미터를 다음과 같이 설정한다.
PageParam = TODAY PageParamName = Date(YYYYMMDD) TODAY = ${J_CURRENT_DATE} TODAY_DD=${TODAY(6,8)}
그리고 SQL에서 일자별 테이블은 사용자 정의 파생 파라미터 TODAY_DD를 이용해서 다음과 같이 작성한다
SELECT LOG_DT || LOG_HH || LOG_MM, SERVICE_RATE FROM PERF_X_${TODAY_DD} WHERE AGENT_ID = 'W11'
일자별 테이블로는 특정 일자 데이터만을 조회할 수 있다. 그런데 주간 보고서와 같이 여러 날짜에 걸친 데이터를 조회하려면 S_PERF_X 등과 같이 S_로 시작하는 통계 요약 테이블을 사용한다.
일반 일자별 테이블에는 5분 혹은 10분 단위로 데이터가 저장되어 있는 반면에 S_로 시작하는 통계 요약 테이블에는 1시간 단위로 데이터가 저장되어 있다. 그리고 SummaryActor 스케줄러가 일자별 테이블에 있는 데이터를 하루에 한번 통계 요약 테이블에 저장하기 때문에 오늘 날짜 데이터는 통계 요약 테이블에서 조회할 수 없다.
성능 데이터 보관 주기가 1달을 넘는 경우에는 일자별 테이블에 월이 다른 데이터가 저장되어 있을 수 있다. 따라서 SQL을 작성할 때 다음 조건을 추가하도록 한다.
SELECT LOG_DT || LOG_HH || LOG_MM, SERVICE_RATE FROM PERF_X_${TODAY_DD} WHERE AGENT_ID = 'W11' AND LOG_DT = '${TODAY}'
AGENT_ID 칼럼을 올바르게 사용해야 한다. W11과 같이 특정 제니퍼 에이전트에 대한 성능 데이터를 조회하려면 다음과 같이 검색 조건을 설정하면 된다.
WHERE AGENT_ID = 'W11'
그리고 전체 성능 데이터를 조회하려면 TOT라는 가상 제니퍼 에이전트 아이디를 사용한다.
WHERE AGENT_ID = 'TOT'
따라서 실제 제니퍼 에이전트 아이디로 TOT를 사용해서는 안된다.
그리고 모든 개별 제니퍼 에이전트에 대해서 성능 데이터를 조회하려면 TOT와 @로 시작하는 에이전트 그룹 아이디를 제외해야 한다. 따라서 SQL을 다음과 같이 작성한다.
WHERE AGENT_ID <> 'TOT' ADN AGENT_ID NOT LIKE '@%'
일자별 테이블에서 시간당 데이터를 조회할 때는 데이터 칼럼에 따라서 다른 그룹 함수를 사용해야 한다. 예를 들어, 시간당 방문자 수는 동일 시간대에 대해서는 5분 마다 그 시간대 누적 값을 저장하기 때문에 MAX 함수를 사용한다.
SELECT LOG_DT || LOG_HH || LOG_MM,MAX(VISIT_HOUR) FROM PERF_X_${TODAY_DD} WHERE AGENT_ID = 'TOT' AND LOG_DT = '${TODAY}' GROUP BY LOG_HH
그리고 호출 건수는 SUM 함수를 사용한다.
SELECT LOG_DT || LOG_HH || LOG_MM,AVG(HIT) FROM PERF_X_${TODAY_DD} WHERE AGENT_ID = 'TOT' AND LOG_DT = '${TODAY}' GROUP BY LOG_HH
그리고 나머지는 AVG 함수를 사용한다.
SELECT LOG_DT || LOG_HH || LOG_MM,AVG(SERVICE_RATE) FROM PERF_X_${TODAY_DD} WHERE AGENT_ID = 'TOT' AND LOG_DT = '${TODAY}' GROUP BY LOG_HH
애플리케이션별 성능 데이터는 APP_10M_01~31, SQL_10M_01~31, TX_10M_01~31 등의 일자별 테이블에서 조회한다. 이 테이블들은 구조가 단순함으로 APPL_10M_01-31, SQLS_10M_01-31, TX_10M_1-31 등을 참조하도록 한다.
애플리케이션 관련 일자별 테이블에는 10분 단위로 데이터가 저장된다.
그런데 데이터 양의 축소와 성능 향상을 위해서 애플리케이션 성능 데이터 테이블은 메타 테이블을 사용한다. 예를 들어, SQL 문장을 SQLS_10M_01~31 테이블에 그대로 저장하면 데이터 양이 크게 증가할 수 있다. 그래서 SQLS_10M_01~31 테이블에는 해쉬 값만을 저장하고 실제 SQL 쿼리는 SQLS 테이블에 저장한다. 따라서 조회시에는 해당 애플리케이션 성능 데이터 테이블과 메타 테이블을 조인해야 한다. 애플리케이션 메타 테이블은 다음과 같다.
테이블 | 설명 |
---|---|
APPLS | 애플리케이션 이름이 저장된다. |
SQLS | SQL 문장이 저장된다. |
TXNAMES | 외부 트랜잭션 이름이 저장된다. |
ERRORS | 예외 메시지가 저장된다. |
METHODS | 자바 메소드 이름이 저장된다. |
시계열 차트를 위한 SQL 작성
시계열 차트는 TIME-LINE 유형의 아이템을 의미한다. 시계열 차트에서 사용하는 SQL은 시간 값을 가진 순차 데이터를 조회해야 한다. 예를 들어, 특정 날짜의 서비스 요청률을 시계열 차트로 표현하려면 다음과 같은 SQL을 사용한다.
SELECT LOG_DT || LOG_HH || LOG_MM,SERVICE_RATE FROM PERF_X_${TODAY_DD} WHERE LOG_DT = '${TODAY}' AND AGENT_ID = 'TOT'
SELECT 절의 첫번째 칼럼에서는 시계열 차트의 X 축에 표현할 날짜/시간을 조회한다. 가능한 포멧은 다음과 같다
yyyyMM yyyyMMdd yyyyMMddHH yyyyMMddHHmm yyyyMMddHHmmss
그리고 두번째 칼럼부터는 시계열 차트의 Y 축에 표현할 값을 조회한다. 2개 이상의 칼럼을 사용하면 선이 2개 이상 나타난다.
범례는 아이템 파라미터의 GraphLabelX 옵션과 GraphShowLegend 옵션으로 설정한다.
GraphLabelX = TPS GraphShowLegend = true
이 SQL을 수행한 결과는 다음과 같다.
시계열 차트에 서비스 요청률과 함께 동시단말 사용자 수를 표시하려면 다음 SQL을 사용한다.
SELECT LOG_DT || LOG_HH || LOG_MM,SERVICE_RATE,CONCURRENT_USER FROM PERF_X_${TODAY_DD} WHERE LOG_DT = '${TODAY}' AND AGENT_ID = 'TOT'
범례는 아이템 파라미터의 GraphLabelX 옵션과 GraphShowLegend 옵션으로 설정한다.
GraphLabelX = TPS,CON_USER GraphShowLegend = true
이 SQL을 수행한 결과는 다음과 같다.
그런데 범례를 설정으로 고정하지 않고 데이터에 의해서 결정하려면 다음과 같이 아이템 파라미터 옵션을 설정한다.
GraphLabelX = #SQL GraphShowLegend = true
예를 들어, 시계열 차트에 제니퍼 에이전트 별 서비스 요청률을 표현하려면 다음 SQL을 사용한다. 여기서 두번째 칼럼이 범례가 된다.
SELECT LOG_DT || LOG_HH || LOG_MM,AGENT_ID,SERVICE_RATE FROM PERF_X_${TODAY_DD} WHERE LOG_DT = '${TODAY}' AND AGENT_ID <> 'TOT' AND AGENT_ID NOT LIKE '@%'
이 SQL을 수행한 결과는 다음과 같다.
시리즈 차트를 위한 SQL 작성
BAR 유형의 막대 차트와 LINE 유형의 라인 차트 등을 사용하는 경우의 SQL 작성 요령을 설명한다. 시리즈 차트에는 범례가 존재하지 않는다. 따라서 SQL에서 첫번째 칼럼은 X축이 되고 나머지 칼럼들이 데이터를 의미하게 된다. 예를 들어, 임의의 날짜의 시간당 방문자 수를 막대 차트로 표현하려면 다음 SQL을 사용한다.
SELECT X.A, SUM(X.B) FROM ( SELECT LOG_HH A, VISIT_HOUR B FROM PERF_X_${TODAY_DD} WHERE AGENT_ID = 'TOT' AND LOG_DT = '${TODAY}' ) X GROUP BY X.A ORDER BY 1
이 SQL을 수행한 결과는 다음과 같다.
만약 SQL에 칼럼을 추가하면 막대가 추가된다. 예를 들어, 시간당 방문자 수와 함께 시간당 호출 건수를 표현하려면 다음 SQL을 사용한다.
SELECT X.A, SUM(X.B), SUM(X.C) FROM ( SELECT LOG_HH A, VISIT_HOUR B, HIT C FROM PERF_X_${TODAY_DD} WHERE AGENT_ID = 'TOT' AND LOG_DT = '${TODAY}' ) X GROUP BY X.A ORDER BY 1
이 SQL을 수행한 결과는 다음과 같다.
유형으로 3D STACKED BAR를 선택하면 다음 그림처럼 표시된다.
1차원 차트를 위한 SQL 작성
1차원 차트는 1개 칼럼의 데이터만을 표시하는 차트이다. PIE 유형이 여기에 속한다. 파이 차트를 위한 SQL에는 2개의 칼럼이 필요하다. 첫번째 칼럼은 항목을, 두번째 칼럼은 데이터를 의미한다. 예를 들어, 임의의 날짜의 시간당 방문자 수를 막대 차트로 표현하려면 다음 SQL을 사용한다.
SELECT X.A, SUM(X.B) FROM ( SELECT LOG_HH A, VISIT_HOUR B FROM PERF_X_${TODAY_DD} WHERE AGENT_ID = 'TOT' AND LOG_DT = '${TODAY}' ) X GROUP BY X.A ORDER BY 1
이 SQL을 수행한 결과는 다음과 같다.
테이블 아이템 유형
테이블 아이템 유형을 위한 SQL에는 제약이 없다. 단, SQL에서 조회하는 칼럼의 숫자와 아이템 파라미터의 TableLabel 옵션으로 설정한 라벨의 숫자가 동일해야 한다.
SELECT HASH, NAME FROM APPLS
예를 들어, 앞의 SQL을 사용하면 아이템 파라미터의 TableLabel 옵션을 다음과 같이 설정한다.
TableLabel = 애플리케이션 해시 코드,이름
보고서 템플릿 실행
보고서 템플릿을 실행하는 방법을 설명한다.
HTML 형식으로 실행
보고서 템플릿 목록 화면에서 [보기] 링크를 클릭하여 보고서 템플릿을 HTML 형식으로 실행할 수 있다. 처음에는 사용자 정의 파라미터에 대한 기본 값을 사용하지만 상단에 있는 사용자 정의 파라미터 입력 폼을 통해서 임의의 파라미터를 사용자로부터 입력받아서 보고서를 실행할 수 있다.
사용자 정의 파라미터 입력 폼 - 사용자가 입력할 수 있는 사용자 정의 파라미터 목록이 나타난다.
실행 버튼 - 해당 버튼을 클릭하면 보고서를 HTML 형식으로 생성한다.
RTF 형식으로 실행
보고서 템플릿 목록 화면에서 [리포트 다운로드] 링크를 클릭하면 파라미터 입력 폼으로 구성된 파업 창이 나타난다. 파라미터를 입력한 후에 [서브밋] 버튼을 클릭하면 보고서 템플릿을 실행시켜서 그 결과를 RTF 형식으로 다운로드할 수 있다.
다음은 RTF로 다운로드한 파일의 예제이다.
외부 데이터베이스 사용하기
보고서 템플릿에서 제니퍼 데이터베이스가 아닌 외부 데이터베이스를 사용할 수도 있다. 외부 데이터베이스를 사용하려면 보고서 템플릿 파라미터 입력 필드에 외부 데이터베이스 연결 정보를 설정한다.
datadb_driver = org.apache.derby.jdbc.EmbeddedDriver datadb_url= jdbc:derby:c:/backup/db/jennifer datadb_user = jennifer datadb_password = jennifer
특정 아이템에 대해서만 외부 데이터베이스를 사용하려면 이를 아이템 파라미터 입력 필드에 지정한다.
아파치 더비가 아닌 다른 데이터베이스를 사용하는 경우에는, 해당 JDBC 드라이버 JAR파일을 JENNIFER_HOME/server/common/lib 디렉토리에 복사한 후에 제니퍼 서버를 재시작한다.
반복 파라미터를 이용한 아이템 작성
반복 파라미터로 특정 데이터 그룹에 대해서 아이템을 반복적으로 실행할 수 있다.
예를 들어, 한 차트에 모든 제니퍼 에이전트에 대한 서비스 처리율을 표시하는 것이 아니라, 별도 차트로 제니퍼 에이전트 별 서비스 처리율을 표시하려면 반복 파라미터를 사용해야 한다.
이를 위해서 아이템 반복 파라미터를 다음과 같이 설정한다.
AGENT=SQL:SELECT DISTINCT AGENT_ID FROM PERF_X_${TODAY_DD}
반복 파라미터는 =을 구분자로 구분된다. 왼쪽은 반복 파라미터 이름으로 일반 사용자 정의 파라미터와 같이 이 이름을 SQL 작성에 사용할 수 있다. 그리고 오른쪽은 SQL:로 시작해야 하고, 반복 파라미터 값을 조회하기 위한 SQL을 설정한다.
다음은 AGENT로 정의한 반복 파라미터를 사용하는 SQL이다.
SELECT LOG_DT || LOG_HH || LOG_MM, SERVICE_RATE FROM PERF_X_${TODAY_DD} WHERE LOG_DT = '${TODAY}' AND AGENT_ID = '${AGENT}'
이 아이템을 실행하면 제니퍼 에이전트별 서비스 처리율이 별도 차트에 반복적으로 표시된다.
2개의 Y축을 갖는 아이템 작성
유형이 TIME-LINE인 아이템은 왼쪽과 오른쪽 Y축을 다르게 설정해서 데이터를 표시할 수 있다. 이를 위해서는 SQL을 다음과 같이 작성한다.
SELECT LOG_DT || LOG_HH || LOG_MM,A,B,C FROM SOME_TABLE
SQL은 선이 여러 개인 경우와 동일하며, 첫번째 칼럼은 시간이고, 나머지 A, B, C 칼럼은 데이터 칼럼으로 그 숫자에는 제한이 없다.
아이템 파라미터 GraphLabelX를 콤마[,]를 구분자로 데이터 칼럼을 설정한다.
GraphLabelX = A,B,C
다음은 A와 B 칼럼은 Y1(왼쪽 Y 축)을 기준으로 표시하고, C 칼럼은 Y2(오른쪽 Y 축)를 기준으로 표시함을 의미한다.
예를 들어, 일자별 방문자 수와 호출 건수를 Y축을 달리해서 표현하려면 SQL을 다음과 같이 작성한다.
SELECT LOG_DT || LOG_HH || LOG_MM,VISIT_DAY,HIT FROM PERF_X_${TODAY_DD} WHERE LOG_DT = '${TODAY}' AND AGENT_ID = 'TOT' AND HIT IS NOT NULL ORDER BY 1
그리고 아이템 파라미터를 다음과 같이 설정한다.
GraphLabelX = VISIT_DAY,HIT GraphX2YMap = 1,2 GraphLabelY = USER,HIT GraphShowLegend = true GraphLineWidth = 1.0
해당 아이템 실행 결과는 다음과 같다.
스케줄러를 이용한 보고서 자동 생성
ReportActor 스케줄러는 보고서 템플릿을 자동으로 실행해서 RTF 형식 보고서를 게시판에 저장한다. ReportActor 스케줄러를 설정하는 방법은 다음과 같다.
time_actor_13 = com.javaservice.jennifer.server.timeactor.ReportActor 2350 1001
첫번째 파라미터는 보고서 템플릿을 실행하는 시간으로 HHmm 포멧으로 설정한다. 예를 들어, 2350은 23시 50분에 지정한 보고서 템플릿을 실행하라는 의미이다.
두번째 파라미터는 자동으로 실행할 보고서 템플릿 아이디이다.
RTF 형식 보고서 결과물은 [구성 관리 | 게시판] 메뉴의 [Report] 유형에서 확인할 수 있다.
보고서 템플릿 2.0
기존 보고서 템플릿을 개선한 보고서 템플릿 2.0은 사용자 정의 파라미터와 데이터셋을 기반으로, HTML, PDF, RFT 형식의 보고서를 사용자가 직접 정의하여 생성할 수 있는 기능을 제공한다.
보고서 템플릿 작성
보고서 템플릿을 추가하는 방법은 다음과 같다.
통계 분석 | 보고서 | 보고서 템플릿 2] 메뉴로 이동한다.
보고서 템플릿 목록 오른쪽 하단의 [추가] 버튼을 클릭한다.
보고서 템플릿 입력 폼에 내용을 입력한 후에 하단의 [저장] 버튼을 클릭한다.
다음은 보고서 템플릿 입력 폼의 필드에 대한 설명이다.
필드 | 설명 |
---|---|
이름 | 보고서 템플릿 이름 |
설명 | 보고서 템플릿에 대한 설명 |
머리글 | 보고서 템플릿 실행 유형이 PDF나 RTF인 경우에만 의미가 있다. PDF와 RTF 파일 상단에 표시되는 머리글 |
바닥글 | 보고서 템플릿 실행 유형이 PDF나 RTF인 경우에만 의미가 있다. PDF와 RTF파일 상단에 표시되는 바닥글 |
서브보고서 | 보고서 템플릿이 다른 보고서 템플릿을 포함할 수 있다. 이 때 포함되는 보고서 템플릿을 서브보고서라고 한다. 그러나 모든 보고서 템플릿을 서브보고서로 사용할 수 있는 것은 아니고, 서브보고서 체크박스를 체크한 보고서 템플릿만을 서브보고서로 사용할 수 있다. |
보고서 템플릿을 저장하면 화면 상단에 여러 개의 탭이 나타난다. 당 아이템 실행 결과는 다음과 같다.
각 탭은 다음과 같은 기능을 제공한다.
기본 - 이름, 머리글, 바닥글, 서브보고서 여부 등을 설정할 수 있다.
옵션 - 보고서 템플릿 옵션을 설정할 수 있다.
사용자 파라미터 - 보고서 템플릿 실행을 위해서 사용자로부터 입력 받아야 하는 데이터를 정의할 수 있다.
데이터셋 - 보고서 작성에 필요한 데이터 추출 방식을 설정할 수 있다.
디자인 - 텍스트, 테이블, 차트, 서브보고서 등의 디자인 요소를 설정할 수 있다.
실행 - 보고서 템플릿을 실행할 수 있다. 보고서 템플릿 목록에서 [실행] 링크를 클릭하면 다른 탭은 표시되지 않고 실행 탭만이 표시된다.
보고서 템플릿을 수정하는 방법은 다음과 같다.
[통계 분석 | 보고서 | 보고서 템플릿 2] 메뉴로 이동한다.
보고서 템플릿 목록 중에서 수정할 보고서 템플릿의 이름이나 [보기] 링크를 클릭한다.
보고서 템플릿 입력 폼의 내용을 수정한 후에 하단의 [저장] 버튼을 클릭한다.
보고서 템플릿을 삭제하는 방법은 다음과 같다.
[통계 분석 | 보고서 | 보고서 템플릿 2] 메뉴로 이동한다.
보고서 템플릿 목록 중에서 삭제할 보고서 템플릿의 체크 박스를 선택한다.
보고서 템플릿 목록 하단의 [삭제] 버튼을 클릭한다.
옵션
모든 차트에 대해서 넓이나 높이를 개별적으로 설정하는 것은 불편할 수 있다. 이를 해결하기 위해서 옵션 탭에서 차트 넓이나 높이에 대한 기본 값을 설정을 할 수 있다.
옵션 탭에서 설정한 것보다 개별 디자인 요소에 대해서 설정한 것이 우선권을 갖는다.
옵션을 추가하는 방법은 다음과 같다.
보고서 템플릿 옵션 탭을 클릭한다.
옵션 목록 오른쪽 하단의 [추가] 버튼을 클릭한다.
옵션 입력 폼에 내용을 입력한 후에 하단의 [저장] 버튼을 클릭한다.
다음은 옵션에 대한 설명이다.
옵션 | 설명 |
---|---|
html_page_width | 보고서 템플릿 실행 유형이 HTML인 경우에만 적용되는 옵션으로, 화면 넓이를 지정하는데 사용한다. |
chart_width | 차트 넓이. 차트 성격상 파이 차트는 라인 차트와 막대 차트와는 다른 비율로 넓이와 높이를 설정해야 한다. 따라서 이 옵션으로 라인 차트와 막대 차트 넓이를 지정하고, 파이 차트 넓이는 개별적으로 지정하는 것을 권장한다. |
chart_height | 차트 높이. 차트 성격상 파이 차트는 라인 차트와 막대 차트와는 다른 비율로 넓이와 높이를 설정해야 한다. 따라서 이 옵션으로 라인 차트와 막대 차트 높이를 지정하고, 파이 차트 높이는 개별적으로 지정하는 것을 권장한다. |
chart_legend | 차트 범레 표시 여부로 true를 입력하면 범례를 표시한다. |
line_thickness | 라인 차트 라인 두께로 숫자만을 입력해야 한다. |
line_color_y | 라인 차트에서 왼쪽 축에 기반한 라인 색상으로 RGB 형식으로 입력한다. |
line_color_z | 라인 차트에서 오른쪽 축에 기반한 라인 색상으로 RGB 형식으로 입력한다. |
bar_color | 막대 차트에서 막대 색상으로 RGB 형식으로 입력한다. |
pie_color | 파이 차트에서 파이 색상으로 RGB 형식으로 입력한다. |
start_angle | 파이 차트에서 시작 각도로 0에서 360 사이에서 입력한다. |
색상과 관련한 옵션은 RGB 형식으로 입력한다. 예를 들어, 라인 색상을 빨간 색으로 하려면 다음과 같이 입력한다.
255,0,0
여러 색을 입력해야 하는 경우에는 슬러시[/]를 구분자로 구분하여 입력한다.
255,0,0/0,255,0/0,0,255
옵션을 수정하는 방법은 다음과 같다.
보고서 템플릿 옵션 탭을 클릭한다.
옵션 목록 중에서 수정할 옵션의 이름을 클릭한다.
옵션 입력 폼의 내용을 수정한 후에 하단의 [저장] 버튼을 클릭한다.
옵션을 삭제하는 방법은 다음과 같다.
보고서 템플릿 옵션 탭을 클릭한다.
옵션 목록 중에서 삭제할 옵션의 체크 박스를 선택한다.
옵션 목록 하단의 [삭제] 버튼을 클릭한다.
사용자 파라미터
사용자 파라미터 탭에서 보고서 템플릿 실행을 위해서 사용자로부터 입력받아야 하는 데이터를 정의할 수 있다.
사용자 파라미터를 추가하는 방법은 다음과 같다.
보고서 템플릿 사용자 파라미터 탭을 클릭한다.
사용자 파라미터 목록 오른쪽 하단의 [추가] 버튼을 클릭한다.
사용자 파라미터 입력 폼에 내용을 입력한 후에 하단의 [저장] 버튼을 클릭한다.
옵션 입력 폼에 내용을 입력한 후에 하단의 [저장] 버튼을 클릭한다.
다음은 사용자 파라미터 입력 폼의 필드에 대한 설명이다.
필드 | 설명 |
---|---|
표시 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 나타나는 라벨이다. 보고서 템플릿 사용자가 이해할 수 있는 이름을 사용하도록 한다. |
이름 | 데이터셋 SQL에서 사용하는 키워드로 영어 소문자와 숫자만을 사용하는 것을 권장한다. |
기본 값 | 기본 값을 설정한다. |
유형 | 유형에 따라서 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 다르게 표시된다. |
다음은 사용자 파라미터 유형에 대한 설명이다.
유형 | 설명 |
---|---|
도메인 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 도메인이 드랍다운 박스로 나타난다. 도메인을 선택한 경우에는 도메인 목록 유형 사용자 파라미터는 추가할 수 없다. |
도메인 목록 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 여러 개의 도메인을 선택할 수 있는 다중선택 박스로 나타난다. 도메인 목록을 선택한 경우에는 도메인 유형 사용자 파라미터는 추가할 수 없다. |
에이전트 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 제니퍼 에이전트가 드랍다운 박스로 나타난다. 에이전트를 선택한 경우에는 에이전트 목록 유형 사용자 파라미터는 추가할 수 없다. |
에이전트 목록 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 여러 개의 제니퍼 에이전트를 선택할 수 있는 다중선택 박스로 나타난다. 에이전트 목록을 선택한 경우에는 에이전트 유형 사용자 파라미터는 추가할 수 없다. |
년 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 년을 선택할 수 있는 필드가 나타난다. |
월 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 월을 선택할 수 있는 드랍다운 박스가 나타난다. |
날짜 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 팝업 화면으로 날짜를 선택할 수 있는 필드가 나타난다. |
시간(HH) | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 시간을 선택할 수 있는 드랍다운 박스가 나타난다. |
시간(HHMM) | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 시간과 5분 단위 분을 선택할 수 있는 드랍다운 박스가 나타난다. |
경보 유형 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 경보 유형을 선택할 수 있는 드랍다운 박스가 나타난다. |
경보 이름 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 경보 이름을 선택할 수 있는 드랍다운 박스가 나타난다. |
애플리케이션 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 팝업 화면으로 애플리케이션을 선택할 수 있는 필드가 나타난다. |
텍스트 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 임의의 문자를 입력할 수 있는 필드가 나타난다. |
숫자 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에 임의의 숫자를 입력할 수 있는 필드가 나타난다. |
줄 바꿈 | 보고서 템플릿 실행 화면 사용자 파라미터 입력 폼에서 줄 바꿈을 하고 싶을 때 사용한다. 이 유형은 사용자로부터 파라미터를 입력 받는 것과는 관련성이 없다. |
사용자 파라미터를 수정하는 방법은 다음과 같다.
보고서 템플릿 사용자 파라미터 탭을 클릭한다.
사용자 파라미터 목록 중에서 수정할 사용자 파라미터의 표시를 클릭한다.
사용자 파라미터 입력 폼의 내용을 수정한 후에 하단의 [저장] 버튼을 클릭한다.
사용자 파라미터를 삭제하는 방법은 다음과 같다.
보고서 템플릿 사용자 파라미터 탭을 클릭한다.
사용자 파라미터 목록 중에서 삭제할 사용자 파라미터의 체크 박스를 선택한다.
사용자 파라미터 목록 하단의 [삭제] 버튼을 클릭한다.
사용자 파라미터의 순서를 변경하는 방법은 다음과 같다.
보고서 템플릿 사용자 파라미터 탭을 클릭한다.
사용자 파라미터 목록 오른쪽 하단의 [정렬] 버튼을 클릭한다.
정렬 팝업 창에서 사용자 파라미터의 순서를 변경한다.
데이터셋
데이터셋 탭에서 보고서 작성에 필요한 데이터 추출 방식을 설정할 수 있다.
기본 관리
데이터셋을 추가하는 방법은 다음과 같다.
보고서 템플릿 데이터셋 탭을 클릭한다.
데이터셋 목록 오른쪽 하단의 [추가] 버튼을 클릭한다.
데이터셋 입력 폼에 내용을 입력한 후에 하단의 [저장] 버튼을 클릭한다.
다음은 데이터셋 입력 폼의 필드에 대한 설명이다.
필드 | 설명 |
---|---|
표시 | 데이터셋에 대한 표시 |
이름 | 데이터셋 이름으로 영어 소문자와 숫자만을 사용하는 것을 권장한다. |
유형 | 데이터를 추출하는 방식으로 SQL 혹은 URL을 선택한다. |
SQL/URL | 유형으로 SQL을 선택한 경우에는 데이터 추출에 필요한 SQL을 입력하고, 유형으로 URL을 선택한 경우에는 URL을 입력한다. |
최대 | 성능 저하를 방지하기 위해서 데이터셋 최대 크기를 설정한다. |
데이터셋을 수정하는 방법은 다음과 같다.
보고서 템플릿 데이터셋 탭을 클릭한다.
데이터셋 목록 중에서 수정할 데이터셋의 표시를 클릭한다.
데이터셋 입력 폼의 내용을 수정한 후에 하단의 [저장] 버튼을 클릭한다.
데이터셋을 삭제하는 방법은 다음과 같다.
보고서 템플릿 데이터셋 탭을 클릭한다.
데이터셋 목록 중에서 삭제할 데이터셋의 체크 박스를 선택한다.
데이터셋 목록 하단의 [삭제] 버튼을 클릭한다.
SQL 작성 사용자 파라미터를 사용하여 SQL을 작성하는 방법은 다음과 같다.
우선 사용자 파라미터에 date를 이름으로 하는 DATE 유형 사용자 파라미터와 agent를 이름으로 하는 AGENT 유형 사용자 파라미터가 있다가 가정한다.
다음은 사용자 관련 데이터를 가져오는 쿼리이다.
SELECT LOG_DT || LOG_HH || LOG_MM AS TIME, AGENT_ID, CONCURRENT_USER, ACTIVE_USER, THINKTIME, HIT, VISIT_DAY, VISIT_HOUR FROM PERF_X_${date.day} WHERE LOG_DT = '${date}' AND AGENT_ID = '${agent}'
SQL을 작성할 때 다음 사항을 참고하도록 한다.
사용자 파라미터를 ${}를 이용해서 SQL안에서 사용할 수 있다.
사용자 파라미터 유형이 DATE인 경우에는 ${date.day}는 일자만을 반환하고 ${date.format}은 yyyy-MM-dd 포멧으로 변환된 날짜를 반환한다.
사용자 파라미터를 VARCHAR 유형 칼럼과 비교하는 경우에는 '${agent}'와 같이 작은 따옴표를 사용해야 한다.
TIME LINE 유형 라인 차트 처리가 필요한 경우에는 SELECT 절에서 LOG_DT,LOG_HH, LOG_MM 칼럼을 붙여서 사용한다.
SELECT LOG_DT || LOG_HH || LOG_MM AS TIME, ...
PERF_X_01~31 테이블에 있는 주요 성능 정보를 TIME LINE 유형 라인 차트로 보여줄 때는 다음 SQL로 데이터셋을 구성한다.
SELECT LOG_DT || LOG_HH || LOG_MM AS TIME, CONCURRENT_USER, ACTIVE_USER, ACTIVE_SERVICE, ARRIVAL_RATE, SERVICE_RATE, RESPONSE_TIME, THINKTIME, HEAP_TOTAL, HEAP_USED, SYS_CPU, JVM_CPU, SYS_MEM_USED, JVM_NAT_MEM, JDBC_ACTIVE, JDBC_IDLE FROM PERF_X_${date.day} WHERE LOG_DT = '${date}' AND AGENT_ID = '${agent}'
PERF_X_01~31 테이블에 있는 주요 성능 정보를 막대 차트나 SIMPLE LINE 유형 라인 차트로 보여줄 때는 다음 SQL로 데이터셋을 구성한다.
SELECT LOG_HH, SUM(HIT) AS HIT, SUM(VISIT_HOUR) AS VISIT FROM PERF_X_${date.day} WHERE LOG_DT = '${date}' AND AGENT_ID = '${agent}' GROUP BY LOG_HH
URL 작성
약속된 XML 형식을 반환하는 URL을 호출하여 이를 데이터셋으로 사용할 수도 있다. 데이터베이스가 아닌 파일에 저장되는 X-View 트랜잭션 데이터와 REMON 데이터 등을 이용해서 보고서를 작성할 때 유용하게 사용할 수 있다.
해당 URL이 제니퍼 서버에 있는 경우에는 /로 시작하고 외부 URL을 호출하는 경우에는 http://로 시작해야 한다.
해당 URL은 약속된 XML을 반환해야 한다. 아래는 JSP를 이용한 예제이다.
<%@ page contentType="text/xml; charset=UTF-8" %> <%@ page import="java.sql.Types" %> <% out.clear(); %><?xml version="1.0" encoding="UTF-8" ?> <dataset> <fields> <field name="name" type="<%= Types.VARCHAR %>" /> <field name="age" type="<%= Types.INTEGER %>" /> <field name="level" type="<%= Types.INTEGER %>" /> </fields> <% if (!"true".equals(request.getParameter("get_fields"))) { %> <rows> <row> <cell>Kim</cell> <cell>33</cell> <cell>5</cell> </row> <row> <cell>Lee</cell> <cell>31</cell> <cell>2</cell> </row> </rows> <% } %>
XML을 작성할 때 다음 사항을 참고하도록 한다.
XML 인코딩으로는 UTF-8을 사용해야 한다.
최상위 태그는 dataset이고 이 태그는 fields와 rows 태그로 구성된다.
fields 태그는 필드 메타 정보를 기술하는 여러 개의 field 태그로 구성된다. field 태그 name 속성으로 필드 이름을 지정하고, type 속성으로 필드 속성을 지정한다. type 속성을 지정할 때는 java.sql.Types 클래스의 상수를 이용해서 설정한다.
rows 태그는 row와 cell 태그를 통해서 데이터를 정의하는데 HTTP 요청 파라미터 get_fields가 true가 아닌 경우에만 처리하도록 한다.
사용자 파라미터 이름을 이름으로 요청 파라미터가 전달된다. 예를 들어, age라는 사용자 파라미터가 있다면 다음과 같이 사용자가 입력한 값을 추출할 수 있다.
String age = request.getParameter("age");
데이터셋 필드
저장 버튼을 클릭하면 데이터셋을 실행하여 필드 정보를 생성한다. SQL이나 URL이 올바르지 않으면 예외가 발생하고 필드 정보가 표시되지 않는다.
필드 정보는 다음과 같다.
이름 | 설명 |
---|---|
이름 | 필드 이름으로 주로 데이터베이스 칼럼 이름을 사용한다. |
표시 | 화면에 출력될 때 사용하는 표시 |
숫자 | 데이터의 숫자 여부 |
유형 | 데이터 유형 |
텍스트 정렬 | 데이터 좌우 정렬 방법 |
표시 칼럼 왼쪽에 있는 [수정] 버튼을 통해서 필드 표시와 텍스트 정렬 방법을 수정할 수 있다.
디자인
디자인 탭에서 보고서 템플릿 디자인 요소를 정의한다. 디자인 요소에는 텍스트, 테이블, 라인 차트, 막대 차트, 파이 차트, 서브보고서 등이 있다.
디자인 요소를 추가하는 방법은 다음과 같다.
보고서 템플릿 디자인 탭을 클릭한다.
디자인 요소 목록 오른쪽 하단의 여러 [추가] 버튼 중에 하나를 클릭한다.
디자인 요소 입력 폼에 내용을 입력한 후에 하단의 [저장] 버튼을 클릭한다.
디자인 요소를 수정하는 방법은 다음과 같다.
보고서 템플릿 디자인 탭을 클릭한다.
디자인 요소 목록 중에서 수정할 디자인 요소의 내용을 클릭한다.
디자인 요소 입력 폼의 내용을 수정한 후에 하단의 [저장] 버튼을 클릭한다.
디자인 요소를 삭제하는 방법은 다음과 같다.
보고서 템플릿 디자인 탭을 클릭한다.
디자인 요소 목록 중에서 삭제할 디자인 요소의 체크 박스를 선택한다.
디자인 요소 목록 하단의 [삭제] 버튼을 클릭한다.
디자인 요소의 순서를 변경하는 방법은 다음과 같다.
보고서 템플릿 디자인 탭을 클릭한다.
디자인 요소 목록 오른쪽 하단의 [정렬] 버튼을 클릭한다.
정렬 팝업 창에서 디자인 요소의 순서를 변경한다.
디자인 요소 목록에 있는 [보기] 링크를 통해서 해당 디자인 요소만을 실행할 수도 있다.
텍스트
디자인 요소의 하나로 텍스트를 추가할 때 사용한다. 텍스트 디자인 요소 필드 정보는 다음과 같다.
필드 | 설명 |
---|---|
내용 | 화면에 표시할 텍스트 내용을 입력한다. ${}를 이용해서 사용자 파라미터를 함께 표시할 수 있다. |
유형 | 유형으로 제목 1, 제목 2, 제목 3, 본문 등을 선택할 수 있으며, 유형에 따라서 화면에 표시되는 방식이 달라진다. |
테이블
디자인 요소의 하나로 테이블을 추가할 때 사용한다. 테이블 디자인 요소 필드 정보는 다음과 같다.
필드 | 설명 |
---|---|
제목 | 테이블 제목 |
데이터셋 | 테이블을 표시하는데 사용할 데이터셋을 선택한다. |
필드 | 선택한 데이터셋 중에서 화면에 표시할 필드를 선택한다. 하단에 있는 위 아래 버튼을 통해서 테이블 칼럼 순서를 변경할 수 있다. |
그룹 | 특정 필드를 기준으로 그룹으로 묶어서 반복적으로 표시할 수도 있다. |
라인 차트
디자인 요소의 하나로 라인 차트를 추가할 때 사용한다. 라인 차트 디자인 요소 필드 정보는 다음과 같다.
필드 | 설명 |
---|---|
제목 | 라인 차트 제목 |
데이터셋 | 라인 차트를 표시하는데 사용할 데이터셋을 선택한다. |
X | 라인 차트 X 축으로 사용할 필드를 선택한다. 문자 유형 필드만을 선택할 수 있다. |
Y | 왼쪽 축을 기준으로 라인을 표시할 데이터 필드들을 선택한다. 숫자 유형 필드만을 선택할 수 있다. |
Z | 오른쪽 축을 기준으로 라인을 표시할 데이터 필드들을 선택한다. 숫자 유형 필드만을 선택할 수 있다. |
넓이 | 차트 넓이를 설정한다. |
높이 | 차트 높이를 설정한다. |
유형 | 라인 차트 유형을 선택한다. X 축으로 선택한 필드에 따라서 TIME LINE 혹은 SIMPLE LINE을 선택하면 된다. 일반적으로 막대 차트로 표시한 데이터를 라인차트로 보여주고 싶을 때는 SIMPLE LINE을 선택한다. |
범례 표시 | 범례 표시 여부를 설정한다. |
선 두께 선 | 두께를 설정한다. |
선 색(Y) | 왼쪽 축을 기준으로하는 선 색을 RGB 형식으로 설정한다. |
최대(Y) | 왼쪽 축 최대 값을 설정한다. 실제 값이 최대 값보다 큰 경우에는 실제 값을 기준으로 왼쪽 축이 표시된다. |
선 색(Z) | 오른쪽 축을 기준으로하는 선 색을 RGB 형식으로 설정한다. |
최대(Z) | 오른쪽 축 최대 값을 설정한다. 실제 값이 최대 값보다 큰 경우에는 실제 값을 기준으로 오른쪽 축이 표시된다. |
막대 차트
디자인 요소의 하나로 막대 차트를 추가할 때 사용한다. 막대 차트 디자인 요소 필드 정보는 다음과 같다.
필드 | 설명 |
---|---|
제목 | 막대 차트 제목 |
데이터셋 | 막대 차트를 표시하는데 사용할 데이터셋을 선택한다. |
X | 막대 차트 X 축으로 사용할 필드를 선택한다. 문자 유형 필드만을 선택할 수 있다. |
Y | 막대 차트로 표시할 데이터 필드를 선택한다. 숫자 유형 필드만을 선택할 수 있다. |
넓이 | 차트 넓이를 설정한다. |
높이 | 차트 높이를 설정한다. |
막대 색상 | 막대 색상을 RGB 형식으로 설정한다. |
3D 표시 | 막대를 3D로 표시할지 여부를 선택한다. |
값 표시 | 값 표시 여부를 설정한다. None을 선택하면 값을 표시하지 않고, All을 선택하면 모든 값을 표시하며, Only Max를 선택하면 최대 값만을 표시한다. |
최대 | 최대 값을 설정한다. 실제 값이 최대 값보다 큰 경우에는 실제 값을 기준으로 표시된다. |
파이 차트
디자인 요소의 하나로 파이 차트를 추가할 때 사용한다. 파이 차트 디자인 요소 필드 정보는 다음과 같다.
필드 | 설명 |
---|---|
제목 | 파이 차트 제목 |
데이터셋 | 파이 차트를 표시하는데 사용할 데이터셋을 선택한다. |
X | 파이 차트 X 축으로 사용할 필드를 선택한다. 문자 유형 필드만을 선택할 수 있다. |
Y | 파이차트로 표시할 데이터 필드를 선택한다. 숫자 유형 필드만을 선택할 수 있다. |
넓이 | 차트 넓이를 설정한다. |
높이 | 차트 높이를 설정한다. |
범례 표시 | 범례 표시 여부를 설정한다. |
3D 표시 | 파이를 3D로 표시할지 여부를 선택한다. |
값 표시 | 값 표시 여부를 선택한다. |
시작 각도 | 파이 시작 각도를 설정한다. 0, 90, 180, 270 중에서 선택할 수 있다. |
표시 | 각 파이 영역별로 의미 있는 값을 보여줄 때 사용한다. 예를 들어, X로 선택한 필드의 값이 C, E, W라면 이를 다음과 같이 슬러시[/]를 구분자로 설정한다. C=심각/E=예외/W=경고 |
사이 색상 | 파이 색상을 RGB 형식으로 설정한다. |
서브보고서
디자인 요소의 하나로 서브보고서를 추가할 때 사용한다. 서브보고서 디자인 요소 필드 정보는 다음과 같다.
필드 | 설명 |
---|---|
제목 | 서브보고서 제목 |
서브보고서 | 서브보고서로 사용할 보고서 템플릿을 선택한다. |
파라미터 | 서브보고서로 전달할 사용자 파라미터를 선택한다. |
바인딩 파라미터 | 위에서 선택한 파라미터를 바인딩할 서브보고서 사용자 파라미터를 선택한다. |
서브보고서를 사용하려면 다음 조건을 충족해야 한다.
사용자 파라미터에 도메인 목록 혹은 에이전트 목록 유형이 있어야 한다. 따라서 서브보고서 디자인 요소 입력 폼 파라미터 필드에서는 도메인 목록 혹은 에이전트 목록 유형만을 선택할 수 있다.
서브보고서로 사용되는 보고서 템플릿의 사용자 파라미터에 도메인 혹은 에이전트 유형이 있어야 한다. 따라서 서브보고서 디자인 요소 입력 폼 바인딩 파라미터 필드에서 는 도메인 혹은 에이전트 유형만을 선택할 수 있다.
바인딩 파라미터를 제외한 서브보고서로 사용되는 보고서 템플릿의 사용자 파라미터와 동일한 사용자 파라미터가 서브보고서를 포함하는 보고서 템플릿에 존재해야 한다.
실행
실행 탭을 클릭하면 사용자 파라미터 탭에서 정의한 사용자 파라미터 입력 폼이 상단에 표시된다.
보고서 템플릿을 실행하려면 사용자 파라미터 입력 폼 하단 오른쪽에 있는 [실행] 버튼을 클릭한다. 이 때 [실행] 버튼 오른쪽에 있는 드랍다운 박스를 통해서 보고서 결과 유형을 선택할 수 있다.
보고서 결과 유형은 다음과 같다.
HTML - HTML 형식으로 보고서가 화면에 표시된다.
PDF - PDF 파일 보고서를 다운로드 할 수 있다.
RTF - RTF 파일 보고서를 다운로드 할 수 있다.
CSV - CSV 파일 보고서를 다운로드 할 수 있다. 단, 이 경우에는 테이블 디자인 요소만이 표시된다.
보고서 결과 유형으로 PDF를 선택한 경우에 영어가 아닌 다른 언어는 PDF 파일에 올바르게 표시되지 않는다. 이 문제를 해결하려면 제니퍼 서버의 ui_report_pdf_font 옵션으로 해당 언어를 처리할 수 있는 폰트 파일 위치를 명시적으로 설정해주어야 한다. 예를 들어, 윈도우에서 한글을 지원하는 굴림 폰트를 사용하려면 다음과 같이 설정한다.
ui_report_pdf_font = c:/windows/fonts/gulim.ttc,0
리눅스나 유닉스에서는 사용할 폰트를 제니퍼 서버를 설치한 서버에 복사한 후에 해당 위치를 설정해주면 된다.
보고서 템플릿 Export와 Import
보고서 템플릿을 XML 파일로 Export하고 Import할 수 있다.
보고서 템플릿을 Export하는 방법은 다음과 같다.
[통계 분석 | 보고서 | 보고서 템플릿 2] 메뉴로 이동한다.
보고서 템플릿 목록 중에서 Export할 보고서 템플릿의 [템플릿 다운로드] 버튼을 클릭한다.
보고서 템플릿을 Import하는 방법은 다음과 같다.
[통계 분석 | 보고서 | 보고서 템플릿 2] 메뉴로 이동한다.
Import할 보고서 템플릿을 지정한 후 [업로드] 버튼을 클릭한다.
서브보고서가 포함된 보고서 템플릿은 서브보고서로 사용하는 보고서 템플릿도 개별적으로 Export하고, Import 해야 한다. 그리고 Import를 한 후에 서브보고서 디자인 요소에서 이를 명시적으로 다시 설정해주어야 한다.
성능데이터 추이 분석(PTA)
성능데이터 추이 분석이란 제니퍼4.1에서 새롭게 추가된 기능으로 여러가지 서로 다른 성능 데이터를 비교 분석하는 기능을 말한다.
임의의 날짜에 대한 다양한 성능 통계 데이터를 상호 비교함으로써 현 시스템의 성능 데이터들의 상호 연관성이나 변화들을 쉽게 파악하는 수단이다. 이것을 통해서 최선의 성능관리 방안을 도출하기 위한 도움을 얻을 수 있다.
애플리케이션 성능 모니터링을 통해 수집되는 데이터는 크게 자원, 사용자, 그리고 서비스 성능데이터로 구분될 수 있다. 많은 사용자가 사용할 수록 서비스의 요청건수는 늘어나고 그에 따른 시스템의 리소스를 필요로 한다.
하지만 이들간의 상관관계는 단순하거나 수학적으로 명확하게 정의되기 어렵다.혹자들은 계산식에 의해 요청에 따른 자원 사용량을 계산하려고 하지만 거의 불가능에 가깝다. 따라서 산업계에서는 기본 부하량 계산식에 과거의 경험을 접목 시켜 시스템의 필요용량을 산정하고 관리하고 있다.
여기서 경험이라는 것이 성능 관리에 있어 부인할 수 없는 한축이라면 이 성능 관리 경험을 강화하고 보다 명확히 이해할 수 있는 수단이 필요하다.
제니퍼의 PTA 기능은 수집되는 성능데이터의 변화 추이를 일자단위로 상호 비교분석할 수 있는 기능이다. 어제 오늘의 처리량 변화 혹은 처리량과 CPU사용량의 상관관계들을 비교함으로써 각 성능데이터의 연관도를 인지하고 개선 포인트를 잡아가는데 도움을 된다.
PTA 데이터는 다른 성능데이타와 별도의 관리와 저장주기를 갖는다.
통계적 PTA 활용
성능데이터 추이분석 기능은 제니퍼 4.1.0 정식버전을 설치했다면 자동으로 enable된다. 그러나 만약 이전 버전을 업그레이드 했다면 명시적으로 메뉴를 등록해 주어야 한다.
stat_pta.jsp
사용법은 직관적이며 아래와 같다. 먼저 [복합분석] 메뉴 화면에서 상단의 입력내용을 선택한다. 추가 버튼을 클릭하면 해당 그래프가 화면에 표시된다.
날짜선택 --> 검색 --> 선택박스 --> 추가
그래프의 전체 스케일은 데이터에 따라 자동으로 변경된다. 하지만 고정 시키고자하면 “MAX”값을 설정할 수 있다.
추이분석 기능의 기본 목적은 서로 다른 성능데이터에 대한 자유로운 비교분석이다. 따라서 데이터의 성격상 전혀 다른 값의 범위를 가질 수 있다. 이런 경우 개별 그래프의 스케일을 변경할 수 있다.
개별 그래프를 임시로 감추거나 불필요한 그래프를 화면에서 제거할 수 있다.
마지막으로 우측상단의 버튼을 클릭하면 그래프 좌표상의 데이터들을 엑셀로 받을 수 있다.
실시간 PTA 활용
어떤 성능데이터의 일자단위 성능 추이를 실시간으로 모니터링 할 때 사용한다.
여러가지 서로 다른 성능데이터를 한 화면에서 비교할 수 있다.
그래프에 표현하고자 하는 데이터는 key0~key99까지 연속된 이름으로 설정한다. 즉 key0, key1,,, 이런식으로 설정하며 만약 중간에 결번에 발생하면 거기까지만 화면에 표현된다.
key0 = yesterday:appl/biz01/service_count key1 = today:appl/biz01/service_count
아래 옵션을 설정하고 그래프의 타이틀을 입력하면,
ENABLE_POPUP = true
실시간 PTA 그래프의 오른쪽 상단에는 상세 보기 버튼이 활성화된다. 이 버튼을 클릭하면 팝업창을 통해 실데이터를 확인하고 엑셀로 다운로드 할 수 있다.
복합데이터 생성하기
실시간 모니터링 시 다른 여러개를 연산하여 하나의 성능 지표를 만들어 낼 수 있다. 서버 옵션에 다음과 같이 설정한다.
pta_items.a1=today:appl/biz01/service_count pta_items.a2=today:appl/biz02/service_count pta_items.a3=today:appl/biz03/service_count pta_items.a4=today:appl/biz04/service_count pta_items.a5=today:appl/biz05/service_count pta_items.a6=today:appl/biz06/service_count pta_items.a7=today:appl/biz07/service_count pta_items.a8=today:appl/biz08/service_count pta_items.a9=today:appl/biz09/service_count pta_compose.biz_h= (a7+a8+a9)/(a1+a2+a3) pta_compose.biz_l = (a4+a5+a6)/(a1+a2+a3)
Composed PTA 데이터를 생성하려면 pta_items.xxx 옵션으로 연산에 참여할 아이템을 설정한다.
그리고 새로 생성할 key이름을 pta_compose.xxx를 이용하여 연산식을 등록한다.
이값을 모니터링 할 때는 사용자 정의 화면의 차트 옵션에 다음 값을 입력한다.
key0 = today:ext/comp/biz_h key1 = today:ext/comp/biz_l
PTA 데이터 관리
다양한 성능 추이를 신속하게 비교 분석하기 위해서 제니퍼는 별도의 저장 방식을 구현하고 있다.
저장 경로
데이터 저장 위치는 제니퍼 서버 옵션으로 설정할 수 있다.
pta_dir=../../data/pta/
각 데이터는 “pta_dir”에 설정된 경로에 아래에 파일 단위로 관리된다.
백업과 복구
성능 추이 데이터에 대한 백업및 복구는 제니퍼의 기본 백업기능을 이용한다. 하지만 디렉토리 복사를 통해서도 백업되거나 복구될 수 있다.
저장 주기
배포되는 제니퍼 서버 설정 파일에는 아래와 같이 저장 주기가 1년을 기본값으로 셋팅되어 있다. 하지만 원칙적으로 디스크량이나 백업 정책에 따라 재설정 해야 한다.
time_actor_16 = com.javaservice.jennifer.server.timeactor.CleanerActor 02 PTA MONTH 12
직접 디렉토리에서 데이터를 삭제할 수도 있다.
PTA데이타 빌드
이전버전의 제니퍼에서 v4.5버전업을 하거나 다른 이유로 PTA데이터를 다시 생성해야 하는 경우를 위해 리빌드 기능 추가되었다
PTA 리빌드를 위해서는 [Tools] 의 [Rebuild PTA Data]를 사용한다.
일자별 빌드
날짜를 선택하고 [BuildDaily] 를 클릭하면 해당 일자에 대한 PTA데이터를 생성한다. 에이전트별 데이터는 Database의 PERF_X테이블에서 복사하고 업무별 데이터는 X-View 파일 데이터를 복사한다.
PerfX 모두 빌드
이제니퍼4.5로 업그레이드되면 PTA데이타거 없는데 하루 단위로 생성하면 매우 귀찮다 그런 경우에 [BuildPerfAll]을 실행한다.
이버튼이 클릭되면 화면에서 지정한 에이전트에 대해 모든 PerfX(에이전트별 성능 테이블)에 저장된 성능 정보를 복사하여 PTA데이터를 만든다
기간별 MAX데이터 생성하기
성능 데이터를 비교분석할때는 지정한 일자 뿐만 아니라 그해의 최대나 그달의 최대 값들과 비교하고자할때가 있다. 이경우에 사용하는 것이 [Build PTA Period MAX Data] 메뉴이다.
최대 값을 구하기 위한 기간을 선택하고 구하고자하는 데이터를 선택하고 실행한다.
Period: 2010-01-01 ~ 2010-10-29 Key: perf/TOT/active_service [Yearly Max] 2010 : 20101012 Success. [Monthly Max] 201001 : 20100118 Success. [Monthly Max] 201002 : 20100206 Success. [Monthly Max] 201003 : 20100306 Success. [Monthly Max] 201004 : 20100413 Success. [Monthly Max] 201005 : 20100518 Success. [Monthly Max] 201006 : 20100615 Success. [Monthly Max] 201007 : 20100706 Success. [Monthly Max] 201008 : 20100811 Success. [Monthly Max] 201009 : 20100930 Success. [Monthly Max] 201010 : 20101012 Success. Valid data count: 288
위 예에서는 perf/TOT/active_service에 대한 최대 일자를 찾아서 “2010” 이라는 대표일자에 입력하고 마찬가지로 각 달의 최대 데이터를 찾아서 “2010XX” 에 복사한다.
이값은 PTA화면에서 조회할때 날짜 부분에 “2010”이라고 입력하면 조회가 된다.
기간별 MAX데이터를 위한 스케줄러
TimeActor를 이용하여 매일 월간 최대 값을 업데이트할 수 있다.
time_actor_22 = com.javaservice.jennifer.server.timeactor.PtaFindMax 02 perf/TOT/active_service
제니퍼 서버 설정에 위와 같이 기술하면 매일 새벽2시에 perf/TOT/active_service에 대한 당월 MAX와 당해MAX인 일자 데이터를 복사한다.
J-SCORE
J-SCORE는 여러가지 서로 다른 성능 관련 데이터를 조합하며 시스템을 위한 하나의 통합된 수치로 환산하여 표준 성능 지표를 만든다.
J-SCORE는 서로 다른 이질적인 수치를 하나의 표준 성능 수치로 변환하는데 의미가 있다. 여러가지 서로 다른 이질적인 비즈니스를 위한 시스템이 존재하는 상황에서 두 시스템간의 차이를 분석하고 그것을 적절하게 보정하여 J-SCORE를 산출하면 모든 관련 당사자들이 일관된 관점에서 성능 현황을 이해할 수 있다.
실행하기
J-SORE는 기능적으로는 단순하다. 화면을 열고 날짜와 시간을 선택하고 실행하면 결과를 확인할 수 있다.
제니퍼 화면 좌측의 [Tools | J-Score] 메뉴를 클릭하면 아래와 같은 화면이 열린다.
날짜를 입력하고 오른쪽 아래의 “Execute” 버튼을 클릭하면 결과를 확인할 수 있다.
설정파일 작성 및 등록
J-SCORE에 사용될 성능 지표들과 계산 식을 등록한다. 아래 파일에 샘플 설정이 있다.
JENNIFER_SERVER/bin/score.xml
샘플 설정내용은 다음과 같다.
<?xml version="1.0" encoding="utf-8" ?> <jscore> <rule> <id>perf/TOT/active_service</id> <name>Active Service</name> <score point="0"><![CDATA[ avg >20 ]]></score> <score point="1"><![CDATA[ 20>= avg && avg >5 ]]></score> <score point="2"><![CDATA[ 5>=avg ]]></score> </rule> ... <rule> <id>perf/TOT/visit_hour</id> <name>Visit Hour</name> <score point="0"><![CDATA[ max < 1000 ]]></score> <score point="1"><![CDATA[ 10000 >= max && max > 1000 ]]></score> <score point="2"><![CDATA[ 10000 < max ]]></score> </rule> </jscore>
PTA에 등록된 모든 데이터는 J-SCORE에 사용할 수 있다.
설정파일 작성법은 다음과 같다.
<jscore>에는 여러개의 <rule>이 정의 될 수 있다.
하나의 <rule>에는 <id>와 <name> 테그가 필수로 정의되어 있어야 한다.
<score>는 하나 이상 존재해야 한다.
<score>에는 속성으로 point가 설정되어야 하는데 하나의 룰에는 동일한 point를 가진 <score>를 설정할 수 없다.
각 <score>를 위해 하나의 수식이 설정되는데 이때 설정되는 수직은 계산결과가 Boolean 값이어야 한다.
수식을 작성할 때는 파라미터를 사용할 수 있는데 사용 가능한 파라미터는 다음과 같다
이름 | 설명 |
---|---|
cnt | 선택한 시간의 데이터 중에서 0 이상인 값의 개수, 한시간의 데이터 수는 12개이다.(고정) |
max | 선택한 시간대 데이터 중에서 최대값 |
min | 선택한 시간대 데이터 중에서 최소값 |
avg | 선택한 시간대 데이터의 평균값 |
sum | 선택한 시간대 데이터의 합 |
설정파일을 JENNIFER_SERVER/bin/score.xml이 아닌 다른 곳에 두려면 JENNIFER SERVER설정에 다음 옵션을 설정한다.
score_filename=/jennifer/server/myscore.xml
보고서(웹리포트)
제니퍼에 추가된 웹리포트는 순수한 웹 기반 리포팅 모듈이다. 제니퍼에서 수집되는 각종 성능데이터를 손쉽게 출력할 수 있도록 해준다.
웹 기반 WYSIWYG 을 지원 하며, 별도의 솔루션 없이 보고서를 디자인하고 출력할 수 있어 편리하다.
보고서를 디자인 하기 위해 Component 개념을 체용하고 있다. 즉 보고서 Item은 별도로 수정되고 배포될 수 있으며, 사용자에 의해서도 생성 및 수정 될 수 있다.
html/css/javascript 만으로 보고서를 생성하고 수정 한다. 차트나 내용은 서버 모듈이 담당하지만 출력될 출력물 자체는 모두 웹기반으로 처리된다. 그 만큼 유연하고 편리하며 웹이 가질 수 있는 장점을 모두 수용 한다. 브라우저만으로 출력이 가능하다.
빠른 시작
제니퍼4.5 배포본에는 샘플 보고서가 포함되어있다. 리스트에서 샘플을 오픈하면 아래와 같이 보고서 탬플릿을 확인할 수 있다.
원본 템플릿을 수정하면 복구할 수 없으니 템플릿을 복사하여 작업을 한다. 리스트에서 [copy]를 클릭하면 템플릿이 복사된다.
복사된 템플릿을 클릭하여 오픈한다.
Preview 버튼을 클릭하면 현재 페이지에 대한 출력화면을 확인할 수 있다.
다시 이전화면으로 돌아가서 [view]버튼을 클릭하면 아래와 같이 입력화면을 볼 수 있다.
파라미터를 입력하고 Submit을 클릭하면 아래와 같은 출력할 수 있는 인쇄 화면이 나타난다.
화면 설명
제니퍼의 웹리포트 템플릿 디자인화면은 크게 3개의 영역으로 구분할 수 있다.
Items
차트나 테이블을 생성하는 보고서 컴포넌트이다. 리포트 아이템은 개별로 작성되고 배포될 수 있다. 버전업 될 때 임의로 추가 될 수 있다. 또한 사용자도 자신이 원하는 아이템을 만들어 추가 할 수 있다.
Report Designer
보고서 템플릿을 작성하는 곳이다. 페이지 단위로 디자인한다. 빈 페이지에는 Items에서 아이템 하나를 드레그하여 편집한다. 하나의 아이템을 클릭하면 오른쪽 Properties 영역에서 해당 요소에 대한 속성 값들을 수정 할 수 있다.
Properties
각 요소에 대한 속성 값을 설정하는 곳이다.
리포트 속성 : 리포트 전체에서 사용할 수 있는 속성으로 파라미터를 추가 설정 할 수 있으며, 페이지를 나타내는 탭이 있는 부분을 클릭하여 설정 할 수 있다.
페이지 속성 : 한페이지에서 사용할 속성 값으로 탭의 페이지 이름(글자 부분)을 클릭하여 설정 한다.
아이템 속성 : 아이템 하나가 사용할 속성 값들을 입력/수정 한다. 각 아이템을 클릭하면 설정 할 수 있다.
웹리포트 메뉴
페이지 추가 : 새로운 페이지를 추가 한다.
미리보기 : 현재 페이지에 입력 결과를 적용 하여 출력 결과를 미리 보기 한다.
저장 : 작성한 보고서 템플릿을 저장 한다.
출력보기 : 현재 작성된 보고서 템플릿을 출력 전 단계로 실행 한다. 만약 사용자 입력 파라미터를 설정 하였을 경우 입력 파라미터에 대한 입력 창이 실행 된다.
발표(PT) : 보고서 템플릿을 PT(presentation) 모드로 실행 한다.(구현 예정)
보정 : 보고서 디자이너를 이용한 템플릿과 실제 출력 될 출력물 간의 비율을 보정 한다.(구현 예정)
입력 파라미터 설정
웹 리포트는 속성 값에 대한 파라미터 처리가 가능 하다. 파라미터는 일반적으로 자주 변경되거나 반복되는 속성 값을 지정 할 때 사용 하는데 보고서 디자이너 부분을 클릭하여 정의 할 수 있다.
웹 리포트에서 사용하는 파라미터는 다음 3가지가 있다.
디폴트 파라미터 : 기본적으로 적용 되는 파라미터로 ${agent}, ${date}, ${time} 가 정의되어 있다.
시스템 파라미터 : 시스템 파라미터에 정의 된 파라미터는 “출력보기” 할 경우 기본으로 적용되는 파라미터 이다.
사용자 파라미터 : 사용자 파라미터는 “출력보기” 할 경우 사용자가 그 값을 입력하거나 수정 할 수 있는 파라미터 이다.
동일한 이름의 파라미터를 지정 하였을 경우 적용되는 우선 순위는 사용자 파라미터, 시스템 파라미터, 디폴트 파라미터 이다.
파라미터를 정의 하는 방법은 사용자 파라미터를 적용 할 경우 Label 부분에 화면상에 표시될 라벨명을 입력하고 Key 부분에는 아이템에서 사용할 key(영어와 숫자를 허용)를 정의 하면 된다. (key에 이미 정의되어 있는 디폴트 파라미터나 시스템 파라미터와 동일하게 key를 정의 하면 디폴트 값이 해당 값으로 입력 된다.)
사용자 파라미터에 value 대신 Label이 있는 이유는 사용자 파라미터는 사용자로 부터 입력 받아 처리되는 파라미터 이기 때문이다.
시스템 파라미터를 정의 하는 방법은 key를 정의 하고, value 값에 해당 key가 가질 값을 입력 하면 된다.(보통 상수 값으로 보면 된다.)
key가 정의된 파라미터는 아이템의 속성에서 “${key}” 형식으로 사용할 수 있다.
설정된 파리미터는 - “출력보기” 버튼을 클릭하여 아래와 같이 확인 할 수 있다.(보고서를 저장 후 출력보기 버튼을 클릭 하여야 한다.)
사용자 파라미터만 “출력보기” 에서 입력 받을 수 있는 폼으로 변환 되어 사용자로 부터 값을 입력 받아 적용 할 수 있다.
리포트 작성하기
보고서 템플릿 목록에서 추가(Add) 버튼을 선택 하여 보고서 디자이너를 통해 템플릿 작업을 시작 한다.
아이템을 디자인 영역(페이지)으로 드래그 하여 배치 한다. 화면에서는 BarImage 아이템을 배치 하였다.
페이지에 배치된 아이템을 클릭하여 속성 설정을 한다.
추가 하고 싶은 몇 개의 아이템을 더 추가 한 다음 (미리보기) 버튼을 클릭하여 배치된 아이템들이 원하는 대로 배치가 되었는지 확인 한다.
아이템을 추가 한 후 바로 미리보기 하면 아이템 속성의 기본 값들이 적용된다. 추가한 아이템(화면에서는 AgentPF)을 선택하여 속성 값을 변경 한다.
미리보기에서는 페이지 단위로 출력이 가능 하다. 현재 선택되어 있는 페이지를 출력 할 수 있다.
변경된 값이 잘 적용되었는지 확인 한다.
추가 버튼을 클릭 페이지를 추가한다.
이지는 최대 10페이지 까지 추가 가능 하다.
이전 페이지와 동일하게 원하는 아이템들을 배치하고 속성 들을 설정하여 페이지를 작성한다.
보고서 템플릿을 다 작성 한 후 저장 버튼을 클릭하여 작성한 템플릿을 저장 한다.
출력보기 버튼을 클릭하여 작성된 템플릿을 실행한다. 실행된 템플릿의 결과를 확인 한 후 프린트 한다.
아이템 설명
기본적으로 추가되는 아이템은 8개 이다.(아이템 들은 우선순위에 따라 지속적으로 추가될 예정이다.)
아이템들은 공통적인 속성으로 ItemID, Width, Height를 가진다.
ItemID는 현재 보고 있는 속성이 어떤 아이템인지 구분하기 위해 사용하고, Width, Height는 화면에 출력될 아이템의 크기를 조절 하기 위해 사용한다.
Text
Text 아이템으로 일반적인 텍스트를 입력 하기 위한 아이템 이다. 기본적인 Text와 Html이 입력 가능하나 Html은 잘못 사용할 경우 원하는 화면이 나오지 않을 수도 있으니 간단한 Html 만 사용하기를 권한다.
Text 아이템은 다음과 같은 속성을 가진다.
Font : Text의 폰트를 설정한다.
FontSize : Text의 크기를 설정한다.
Text : 페이지에 표시될 텍스트를 입력한다.
AgentPF
에이전트별 성능 정보를 차트로 표현한다. AgentPF 아이템은 다음과 같은 속성을 가진다.
ChartTitle : 챠트에 표시될 제목을 의미한다.
Agent : 조회할 데이터의 에이젼트를 의미한다.
ServiceName : 조회할 데이터를 선택한다.
Date : 조회할 데이터의 날짜를 입력한다.
- 선택할 수 있는 ServiceName
active_service : 에이전트별 액티브서비스
active_user : 에이전트별 액티브 유저
arrival_rate : 에이전트별 Arrival Rate
concurrent_user : 에이전트별 동시 사용자
db_active : 에이전트별 액티브 DB연결(TOT 제외)
db_alloc : 에이전트별 사용중인 DB연결
db_idle : 에이전트별 비사용중인 DB연결
downtime : 5분당 에이전트별 다운타임(최대 300초)
heap_total : 에이전트별 최대 HEAP 메모리
heap_used : 에이전트별 HEAP 메모리 사용량
process_cpu : 에이전트별 프로세스 CPU사용량(%)
process_mem : 에이전트별 프로세스 메모리 사용량(MB)
response_time : 에이전트별 평균 응답시간(ms)
service_rate : 에이전트별 초당 처리율(TPS)
sys_cpu : 에이전트가 수행된 시스템 전체 CPU사용량
sys_mem_used : 에이전트가 수행되는 시스템 전체 메모리 사용량
hit : 에이전트별 5분당 처리건수
visit_hour : 에이전트별 시간당 방문자 수
think_time :에이전트별 Think Time
BizPF
BizPF 아이템은 업무별 성능 정보를 시간당 막대 차트로 출력한다. BizPF 아이템은 다음과 같은 속성을 가진다.
ChartTitle : 챠트에 표시될 제목을 의미한다.
Business : 조회할 데이터의 비지니스를 설정한다.
ServiceName : 조회할 데이터를 선택한다.
Date : 조회할 데이터의 날자를 의미한다.
- 선택할 수 있는 ServiceName
service_count : (SUM)업무별 5분당 호출 건수
service_time : (Average)업무별 평균 응답시간(ms)
sql_time : (Average)업무별 SQL 평균 수행시간(ms)
error_count : (SUM)업무별 5분당 에러 건수
etx_time : (Average)업무별 외부 트랜잭션 평균 수행시간(ms)
sla_fail : (SUM)업무별 5분당 SLA 기준값(업무 그룹에서 설정)을 초과한 서비스 수
client_time : (Average)최종 사용자 응답시간(브라우저 응답시간 설정시만 사용가능)
turnaround_count ; (SUM)최종사용자 응답 건수(브라우저 응답시간 설정시만 사용가능)
PerHour
PerHour 아이템은 에이전트별 성능 정보를 시간당 막대 그래프로 출력한다. PerHour 아이템은 다음과 같은 속성을 가진다.
ChartTitle : 챠트에 표시될 제목을 의미한다.
Agent : 조회할 데이터의 에이젼트를 의미한다.
ServiceName : 조회할 데이터의 서비스명을 의미한다.
Date : 조회할 데이터의 날자를 의미한다.
선택할 수 있는 ServiceName 항목은 AgentPF과 동일하다 단 시간당 데이터로 변경할때 “hit”와 “down_time”은 시간당 SUM을 visit_hour는 해당 시간의 최대값을 사용한다.
AgentPF2
AgentPF2 아이템은 두개의 에이전트별 성능데이터를 비교하는 차트를 출력한다. AgentPF2 아이템은 다음과 같은 속성을 가진다.
ChartTitle : 챠트에 표시될 제목을 의미한다.
ServiceName : 조회할 데이터를 선택한다.
Agent : 조회할 데이터의 에이젼트를 의미한다.
Label : 챠트에 표시될 데이터의 라벨을 의미한다.
선택할 수 있는 ServiceName 은 AgentPF과 동일하다 “Data1”과 “Data2”를 위한 데이터를 입력한다.
BarImage
BarImage 아이템은 주로 보고서의 제목이나 머리말, 꼬릿말 등에 사용할 수 있는 이미지 아이템이다.
BarImage 아이템은 다음과 같은 속성을 가지고 있다.
Bar Image : 이미지를 선택 하면 페이지에 등록한 아이템에 적용 된다.
ApplTopN
ApplTopN 아이템은 지정한 기간에 수행된 서비스 중에서 느린 것부터 N개를 출력한다. ApplTopN 아이템은 다음과 같은 속성을 가지고 있다.
Agent : 조회할 데이터의 에이젼트를 입력한다.(TOT는 전체)
From : 조회할 데이터의 시작일를 입력한다.
To : 조회할 데이터의 종료일를 입력한다.
TopN : 상위 몇 개 까지 조회 할 지를 입력한다.
SqlTopN
SqlTopN 아이템은 지정한 기간에 지정한 에이전트에서 수행된 SQL중에서 느린 순서로 N개를 출력한다. SqlTopN 아이템은 다음과 같은 속성을 가지고 있다.
Agent : 조회할 데이터의 에이젼트를 입력한다.(TOT는 전체)
From : 조회할 데이터의 시작일를 입력한다.
To : 조회할 데이터의 종료일를 입력한다.
TopN : 상위 몇 개 까지 조회 할 지를 입력한다.
보고서 템플릿 관리하기
보고서는 템플릿단위로 복사되고 수정될 수 있다.
보고서 이름 : 보고서를 편집하는 화면이 열린다.
[View] : 해당 보고서 출력을 위한 파라미터 화면이 열리고 파라미터를 입력하고 클릭하면 보고서가 출력된다.
[Copy] : 해당 보고서를 복사한다.
[Delete] : 보고서를 삭제한다.
Add버튼 : 새로운 보고서를 작성한다.
고급 통계
제니퍼4.5이후에 새롭게 추가된 통계 기능에 대해서 사용법을 설명한다.
기간 X-View
일정 기간동안의 XView를 조회하는 기능이다. 장기간에 걸쳐 일정조건의 서비스의 성능을 분석할때 사용한다.
단 너무 많은 데이터를 조회하는 경우 메모리 에러가 발생할 수 있음으로 적절하게 조회조건을 설정해야 한다.
조회조건 설정
From/To: 검색을 원하는 시간을 설정한다.
Agent : 에이전트를 지정한다.
Applications : 필터링할 애플리케이션 서비스명을 설정한다. 설정 방법은 아래와 같다
*AAA* : AAA를 포함한 서비스 명 BBB* : BBB로 시작하는 서비스 명 *CCC : CCC로 끝나는 서비스 명 AA*DD : AA로 시작해서 DD로 끝나는 서비스 명
IP : 필터링하고자 하는 클라이언트 IP
IP Mask : 필터링 하고자 하는 클라이언트 IP 대역을 설정 설정 방법은 아래와 같다
192.168.0.255 : 192.168.0으로 시작하는 모든 IP 192.168.255.255 : 192.168로 시작하는 모든 IP 192.255.255.255 : 192로 시작하는 모든 IP
월별 성능 추이 분석(Monthly PTA)
시스템의 성능을 월 단위로 분석한다. 한달동안 특정시간대에 어떤 값을 갖는지를 표현한다. X축에는 1부터 31까지 일자로 표현된다.
월을 입력하고 [Search]버튼을 클릭하면 오른쪽에 사용가능한 값에 대한 선택박스가 나타난다. perf/TOT/service_rate 와 같이 값을 차례로 선택한 후에 시간 범위를 선택한다.
예를 들어 초당 처리량에 대한 9시부터 12시 사이의 평균값에 대한 한달동안 추의를 보기위해서는 9시부터 10시를 선택하고 Mode에 Average 선택하고 [Add] 를 클릭하면 화면에 그래프가 추가된다.
브라우저 접속 통계(Browsers)
사용자가 어떤 브라우저를 사용하여 접속하는지 혹은 모바일에서 접속하는지 아니면 PC에서 접속하는지에 대한 통계를 산출한다.
날짜를 선택하고 시간을 선택하면 해당 시간대에서 수행된 서비스를 기반으로 업무별 호출건수와 방문 사용자의 수를 브라우저 별로 계산하여 출력한다.
만약 [Summary] Check를 해제하고 수행하면 Http User-Agent 정보를 파싱하지 않고 통계를 생성한다