2006년 4월 5일자 테크 팁, 웹 서비스 모니터링하기에서 이미 Java EE 5의 오픈 소스 애플리케이션 서버 구현의 하나인 GlassFish를 이용하여 웹 서비스를 모니터하는 방법에 관해 설명한 바 있다. 하지만 GlassFish에는 이 외에도 유용한 모니터링 및 관리 기능이 더 있다. GlassFish의 중요한 기능 중 하나인 Call Flow는 애플리케이션 서버에 배치된 애플리케이션을 모니터할 수 있게 해주는데, 개발자는 개발 시 이 기능을 이용하여 애플리케이션의 동작을 살펴볼 수 있으며 관리자는 배치된 애플리케이션의 런타임 동작을 모니터할 수 있다.

Call Flow는 다양한 컨테이너에서 소요된 시간이나 애플리케이션 코드에서 소요된 시간과 같은 애플리케이션에 관한 런타임 정보를 입수할 수 있는데, 이 정보는 성능 튜닝과 애플리케이션 디버깅에 상당한 도움이 된다. 애플리케이션 호출이 애플리케이션 서버에 있는 다양한 컨테이너와 애플리케이션 코드를 통과하는 동안 모니터링된다. 예를 들어, 엔터프라이즈 빈의 메소드를 호출하는 애플리케이션 내의 서블릿을 생각해보자. 이 시나리오에서 Call Flow는 요청이 웹 컨테이너로 들어갈 때 모니터하고, 요청이 서블릿의 서비스 메소드로부터 EJB 컨테이너로 이동하여 마침내 엔터프라이즈 빈 메소드로 전달되는 과정을 계속해서 모니터한다. 이어서 Call Flow는 수집된 정보를 영구 저장장치에 기록하고,

그런 다음 사용자는 기록된 정보를 조사할 수 있다. 사용자는 또한 '드릴 다운(drill down)'하여 특정 애플리케이션 요청에 관한 추가 정보를 얻을 수도 있다.

본 테크 팁은 GlassFish Administration Console에서 Call Flow를 이용하여 엔터프라이즈 애플리케이션을 모니터하는 방법을 보여준다.

1단계: 시작하기

GlassFish 커뮤니티 다운로드 페이지에서 다운로드한하여 설치 할 수 있다.

그런 다음 아래와 같이 환경변수를 설정한다.
  • GLASSFISH_HOME: GlassFish의 설치 장소(가령 C:\Sun\AppServer)를 표시해야 한다.
  • JAVA_HOME: 사용자 시스템에서의 JDK 5.0 위치를 표시해야 한다.

2단계: GlassFish 시작하기

다음 명령어를 입력하여 GlassFish를 시작한다.
   <GF_install_dir>/bin/asadmin start-domain domain1
이 때, <GF_install_dir>은 GlassFish가 설치된 디렉토리를 나타낸다.

3단계: Administration Console 시작하기

GlassFish가 시작된 후 각자의 브라우저를 http://localhost:4848로 포인트하여 Administration Console을 연다.
   http://localhost:4848
호스트 ID localhost는 기본값 호스트 ID이며 4848은 Administration Console을 위한 기본값 포트 번호이다. 필요에 따라 각자의 구성에 맞게 이 값을 변경한다.

그런 다음 해당 관리자의 사용자명과 비밀번호를 이용하여 로그인한다(기본값 사용자명은 admin, 기본값 비밀번호는 adminadmin임).

4단계: Call Flow 인에이블하기

사용자는 Administration Console이나 명령어를 통해 Call Flow를 인에이블할 수 있다.

Administration Console에서 Call Flow를 인에이블하려면 다음 작업을 수행한다.
  1. 트리 컴포넌트에서 Application Server 노드를 선택한다.
  2. Monitor 탭을 클릭한다.
  3. Call Flow 탭을 클릭한다. Call Flow 페이지가 표시된다.
  4. 페이지의 Configuration 섹션에 있는 Enabled 체크박스를 체크하여 서버에 대한 Call Flow 모니터링을 개시한다.
  5. 옵션으로, 모니터링을 인에이블하고자 하는 클라이언트 호스트 IP 주소와 사용자 ID를 지정할 수도 있는데, 이 방법은 제작 시스템에서 특정 종류의 요청에 대한 흐름(그리고 가능한 성능 문제)을 추적하는 데 매우 유용하다.
  6. Save를 클릭한다.

명령어로 Call Flow를 인에이블하려면 다음 명령어를 (한 행에) 입력한다.
   <GF_install_dir>/bin/asadmin asadmin 
   start-callflow-monitoring server

5단계: 예제 아카이브 다운로드하여 배포하기

팁 전용 예제 아카이브를 다운로드한다. 이 때, 예제 아카이브는 Call Flow로 모니터할 엔터프라이즈 애플리케이션을 위해 배포 가능한 아카이브이다.

예제 아카이브를 다운로드한 후에 이를 배포한다. 이 작업은 다양한 방법으로 수행할 수 있는데, 예를 들어 예제 아카이브를 GlassFish autodeploy 디렉토리(<GF_install_dir>/domains/domain1/autodeploy)에 복사하거나, Administration Console을 이용하여 예제 아카이브를 배포할 수 있다.

6단계: 애플리케이션 실행하기

Administration Console을 실행중인 창 이외의 브라우저 창에서 URL http://localhost:8080/helloworld를 입력하여 배포된 애플리케이션을 실행한다. 이 때, "Hello World Sample Application"이라는 내용을 담고 있는 페이지가 표시되어야 하고, 이와 더불어 이름을 입력하라는 프롬프트가 표시되어야 한다.

이름(가령 "Duke")을 입력하고 Process 버튼을 클릭한다. 이에 대한 응답으로 아래와 유사한 내용의 페이지가 표시되어야 한다.
   Hello World ! 
   Good morning, Duke. Enjoy your morning. 

7단계: Call Flow 데이터 디스플레이하기

Administration Console을 이용하여 Call Flow에 의해 기록된 데이터를 열람한다. 호출 흐름 데이터를 모니터하고 기록하려면 Call Flow가 인에이블되어야 하지만 이미 기록한 데이터를 열람하기 위해서는 Call Flow가 인에이블되지 않아도 된다. 따라서, 데이터를 열람하기 전에 옵션에 따라 Call Flow를 디스에이블할 수 있다. (Call Flow를 디스에이블하는 방법에 관해서는 "8단계: Call Flow 디스에이블하기"를 참조할 것.)

호출 흐름 데이터는 Administration Console에 있는 Call Flow 페이지의 Call Flow Data 섹션에서 찾을 수 있다. 데이터는 테이블 형태로 디스플레이되며, 테이블의 각 열은 특정 요청에 대한 데이터를 디스플레이한다. 또한 사용자가 실행한 Hell World 예제 애플리케이션에 대한 데이터의 열이 표시되어야 한다.

테이블에는 애플리케이션 서버에 의해 요청이 처리된 타임 스탬프, 요청 전송에 사용되는 principal(사용자 principal이 없는 호출은 테이블에 'anonymous'로 표시된다), 요청이 전송된 애플리케이션의 이름 등과 같은 데이터가 포함된다.

테이블에 기재된 요청에 대한 데이터를 삭제하고 싶으면 해당 열의 체크박스를 체크하거나 Delete 버튼을 클릭한다. 이렇게 하면 데이터가 영구적으로 삭제된다. 또한 요청을 필터링할 수 있게 해주는 드롭다운 메뉴가 있다. 기본값으로, 서버에 대한 모든 요청과 관련된 데이터가 디스플레이되는데, 다음 사항을 기준으로 디스플레이된 데이터를 필터링할 수 있다.
  • 최종 요청 상태, 즉 Success 또는 Failure
  • 시작 컨테이너, 즉 요청이 발생한 컨테이너. 컨테이너는 WEB, Web Service, EJB, Timer EJB, Asynchronous Message 등으로, 애플리케이션 서버로 디렉트된 JMS 메시지는 비동기 메시지로 플래그된다는 점에 유의할 것. 따라서, JMS 메시지에 관한 데이터를 디스플레이하고 싶으면 Asynchronous Message를 시작 컨테이너로 선택하고, 아울러 IIOP 메시지에 관한 데이터(또한 EJB 요청에 관한 데이터)를 디스플레이하려면 EJB를 시작 컨테이너로 선택한다.
필터링을 하더라도 기록된 데이터는 삭제되지 않으며 단지 테이블에 표시되는 내용을 관리하게 될 뿐이다.

Time Stamp 칼럼의 요청 엔트리를 클릭하면 요청에 관한 더 상세한 데이터를 디스플레이할 수 있다. 이에 대한 응답으로, 요청에 대한 응답 시간이나 각 컨테이너에서 요청이 소요한 시간 등과 같은 정보를 디스플레이하는 Call Flow Details 페이지가 표시되어야 한다. 이와 더불어, 컨테이너를 통과하는 요청의 호출 흐름을 순서대로 제시하는 테이블이 표시되는데, 호출 시퀀스의 각 단계에 대해 테이블은 해당 컨터이너, 컴포넌트, 메소드 등을 디스플레이한다.

View Tree 버튼을 클릭하면 호출 흐름에서 호출된 메소드의 부모-자녀 뷰를 디스플레이할 수 있다.

8단계: Call Flow 디스에이블하기

Call Flow를 인에이블할 경우와 마찬가지로 Administration Console이나 명령어를 통해 Call Flow를 디스에이블할 수 있다. Administration Console에서 Call Flow를 디스플레이하려면 Call Flow 구성 페이지의 Enabled 체크박스에서 체크 표시를 해제한다.

명령어로 Call Flow를 디스에이블하려면 다음 명령어를 (한 행에) 입력한다.
   <GF_install_dir>/bin/asadmin asadmin 
   stop-callflow-monitoring server

애플리케이션 서버를 중단하면 Call Flow가 자동으로 디스에이블된다는 점에 유의할 것. 다음에 애플리케이션 서버를 시작한 후에는 Call Flow 구성 페이지의 Eanabled 체크박스에 다시 체크 표시를 하여 Call Flow를 다시 인에이블할 수 있다.

Call Flow에 관한 추가 정보

Call Flow에 관한 자세한 내용을 보려면 GlassFish 프로젝트 CallFlow 홈페이지를 참조할 것.

글쓴이 소개

Harpreet Singh은 썬 마이크로시스템즈 Sun Java System Application Server 그룹 멤버로서, 지난 7년간 J2EE 개발에 참여해 왔다. 그는 현재 호출 흐름 모니터링과 웹 서비스 관리에 특히 관심을 가지고 있으며, 과거에는 Application Server의 보안 인프라 발전에 크게 기여하기도 했다.

Anissa Lam은 썬 마이크로시스템즈 Sun Java System Application Server 그룹 멤버로서, 지난 5년간 J2EE 그룹에 몸담으면서 Sun Java Studio를 비롯한 다양한 IDE와 배포 툴을 중점적으로 다루어 왔다. Anissa는 또한 Application Server의 Administration Console 기능 개발에도 크게 기여한 바 있다.

"Java EE" 카테고리의 다른 글

2006/06/16 17:14 2006/06/16 17:14

TRACKBACK :: http://blog.sdnkorea.com/blog/trackback/319

댓글을 달아 주세요

  1. 이우철  수정/삭제  댓글쓰기

    늘 좋은 글 감사합니다

    2007/09/07 20:18
  2. 김문경  수정/삭제  댓글쓰기

    데이터 디스플레이하기..많은 도움 되었읍니다^^

    2007/09/15 21:53
  3. 박정숙  수정/삭제  댓글쓰기

    좋은 정보 감사해요~

    2007/09/19 04:23
[로그인][오픈아이디란?]

◀ Prev 1  ... 563 564 565 566 567 568 569 570 571  ... 806  Next ▶