웹 서비스 모니터링

Java EE 2006/03/03 16:54 Posted by Sun

J2EE 1.4에서 새로 소개된 기술 중 하나가 바로 J2EE Management, JSR 77이었다. J2EE Mnagement는 J2EE 컴포넌트를 위한 관리 정보, 오퍼레이션, 속성 공개 및 액세스를 위한 표준 관리 모델을 제공할 뿐 아니라 JMX(Java Management Extensions)와 같은 기술과 더불어 개발자들에게 J2EE 서버 상에서의 리소스 관리 및 모니터링을 위한 벤더 중립적 방식을 제공한다. (JMX에 관한 자세한 내용을 보려면 테크팁 JMX 기술 이해하기를 참조할 것.) 이런 기술들을 통해 관리하고 모니터할 수 있는 리소스의 하나가 바로 웹 서비스이다. 하지만, 그동안 웹 서비스의 관리와 모니터링의 용이성을 높이기 위해 이런 기술들을 활용하는 툴을 찾아보기란 거의 불가능했다. 최근의 예외 중 하나가 바로 Java EE 5의 오픈소스 애플리케이션 서버 구현인 GlassFish인데, GlassFish에서 웹 서비스는 모니터 및 관리가 용이한 1차 클래스 객체이다. 이제 여러분은 본 팁에서 이 GlassFish 기능을 이용하여 웹 서비스를 모니터할 수 있는 기회를 갖게 될 것이다.

시작하기

먼저 초기 설정 작업부터 시작해보도록 하자. GlassFish를 아직 구하지 못했다면 GlassFish 다운로드 페이지에서 다운로드한 다음, 아래와 같이 환경 변수를 설정한다.

  • GLASSFISH_HOME. GlassFish의 설치 장소(가령 C:\Sun\AppServer)를 표시해야 한다.
  • ANT_HOME. ant의 설치 장소를 표시해야 한다. ant는 다운로드한 GlassFish 번들에 함께 포함되어 있다. (Windows에서는 lib\ant 서브디렉토리에 있음.) 또는 Apache Ant 프로젝트 페이지에서 ant를 다운로드할 수도 있다. 본 예제의 경우 Apache ant 1.6.5를 필요로 한다.
  • JAVA_HOME. 사용자 시스템에서의 JDK 5.0 위치를 표시해야 한다.

아울러, ant 위치를 각자의 PATH 환경 변수에 추가한다.

본 팁은 테크팁 JAX-WS를 이용하여 웹 서비스 개발하기에서 설명한 Calculator라는 이름의 웹 서비스를 이용한다 . 해당 웹 서비스가 배치되어 있지 않을 경우 해당 테크팁에서 웹 서비스의 구축 및 배치를 위한 지침 사항을 따르도록 한다.

1차 클래스 객체로서의 웹 서비스

대부분의 J2EE 준수 애플리케이션 서버는 배치된 아카이브, 즉 ear, war, jar, rar 파일을 리스트하지만, 배치된 웹 서비스는 리스트하지 않는 것이 일반적이다 -- 적어도, 도메인 내에 배치된 모든 웹 서비스 엔드포인트를 쉽게 찾을 수 있는 방식으로 리스트하지는 않는다. 이러한 유형의 애플리케이션 서버에서 웹 서비스를 관리하기 위해서는 해당 웹 서비스에 대한 배치 서술자를 검토해야 한다. 한편, 이와는 대조적으로 GlassFish에서는 모든 웹 서비스 엔드포인트가 명확하게 표시된다. 모든 웹 서비스는 EJB(Enterprise JavaBeans) 컴포넌트 및 서블릿과 같은 다른 엔터프라이즈 리소스와 더불어 GlassFish 관리 콘솔에 리스트되는데, 이는 웹 서비스를 쉽게 관리할 수 있게 해준다.

예시를 위해 다음 명령어를 입력하여 GlassFish 애플리케이션 서버를 시작한다.

     <GLASSFISH_HOME>\bin\asadmin start-domain domain1

이 때, <GLASSFISH_HOME>은 GlassFish가 설치된 디렉토리를 나타낸다.

다음과 같은 내용이 표시되어야 한다.

   Starting Domain domain1, please wait.
   Log redirected to 
   <GLASSFISH_HOME>/domains/domain1/logs/server.log.
   Domain domain1 started.

GlassFish가 시작된 후 각자의 브라우저를 http://localhost:4848로 포인트하여 Administration Console을 연 다음, 해당 관리자의 사용자명과 비밀번호를 이용하여 로그인한다(기본 사용자명은 admin, 기본 비밀번호는 adminadmin임). Welcome 화면이 표시된다. Welcome 화면에서 좌측 탐색창의 Applications 폴더를 확장하고 Web Services를 선택하면 Web Services 창이 열린다. 이 때, Calculator 서비스를 위한 엔트리가 표시되어야 한다. 엔트리에는 서비스가 속한 애플리케이션(jaxws-webservice-web), 관련 WSDL 파일(CalculatorService.wsdl), 서비스 구현 방식(서블릿) 등과 같이 서비스에 관한 기본 정보가 디스플레이된다는 점에 유의할 것.

Web Services window

Calculator 엔드포인트를 클릭하면 해당 엔드포인트의 URI, 웹 서비스가 패키지로 포함된 모듈의 이름, 관련 서술자 파일의 리스트 등과 같은 해당 웹 서비스에 관한 상세 정보가 표시되어야 한다.

General - Calculator window

웹 서비스 모니터링하기

GlassFish는 초당 요청 수, 평균 응답 시간, 쓰루풋 등과 같은 웹 서비스의 운영 통계를 추적하고 그래픽 형식으로 표시해주는 기능을 갖추고 있으며, 사용자는 애플리케이션 내의 개별 웹 서비스에 대한 모니터링을 인에이블("사용함")시킬 수 있다. 모니터링은 다음과 같은 세 가지 레벨을 지원한다.

  • LOW. 응답 시간, 쓰루풋, 요청과 장애의 총수를 모니터한다.
  • HIGH. LOW와 동일한 모니터링을 수행하며 Message Trace(컨텐츠 시각화)를 인에이블시킨다.
  • OFF. 모니터링 데이터를 수집하지 않는다.

(LOW 또는 HIGH를 지정하여) 웹 서비스에 대한 모니터링 기능을 작동시키면, 해당 웹 서비스에 의해 수행되는 모든 연산에 대해 모니터링이 인에이블된다.

모니터링 정보를 디스플레이하려면 웹 서비스에 관한 상세 정보가 표시되는 창에서 Monitor 탭을 클릭한다. 모니터링 기능은 OFF로 기본 설정되어 있으므로 처음에는 "No Statistic is available for this web service"라는 메시지가 표시된다. 이 때, 창의 Configuration 탭을 클릭하면 모니터링이 작동된다. 통계와 메시지의 수집을 시작하려면 모니터링 레벨을 HIGH로 설정하고 Save를 클릭한다.

Calculator - Monitoring Configuration window

이제 "JAX-WS를 이용하여 웹 서비스 개발하기" 테크팁의 "클라이언트 실행(Run the Client)" 섹션의 지시사항에 따라 Calculator 웹 서비스에 SOAP 요청을 전송한다. 다음과 유사한 출력이 표시되어야 한다.

   runtest-jaxws:
        [echo] Executing appclient with client class as 
        client.JAXWSClient
        [exec]  Retrieving port from the service 
        com.techtip.jaxws.sample.CalculatorService@162522b
        [exec]  Invoking add operation on the calculator port
        [exec]  Adding : 0 + 10 = 10
        [exec]  Adding : 1 + 10 = 11
        [exec]  Adding : 2 + 10 = 12
        [exec]  Adding : 3 + 10 = 13
        [exec]  Adding : 4 + 10 = 14
        [exec]  Adding : 5 + 10 = 15
        [exec]  Adding : 6 + 10 = 16
        [exec]  Adding : 7 + 10 = 17
        [exec]  Adding : 8 + 10 = 18
        [exec]  Adding : 9 + 10 = 19
 
   all: 
   BUILD SUCCESSFUL
   Total time: 6 seconds

Monitor 창의 Statistics 탭을 클릭하면 Calculator 웹 서비스와 관련하여 수집된 다음의 통계가 표시되어야 한다.

Calculator - Monitoring Statistics window

다음의 CLI 명령어를 이용해도 동일한 결과를 얻을 수 있다(명령어는 한 행에 입력해야 함).

   <GLASSFISH_HOME>\bin\asadmin get -m --port 4848 
   "server.applications.jaxws-webservice-web.Calculator.
   webservice-endpoint.*"

다음과 유사한 출력이 표시되어야 한다.

   server.applications.jaxws-webservice-web.Calculator.
   webservice-endpoint.averageresponsetime-count = 9
   server.applications.jaxws-webservice-web.Calculator.
   webservice-endpoint.averageresponsetime-description 
   = Average response time measured in milliseconds
   server.applications.jaxws-webservice-web.Calculator.
   webservice-endpoint.averageresponsetime-lastsampletime 
   = 1136835037801
   server.applications.jaxws-webservice-web.Calculator.
   webservice-endpoint.averageresponsetime-name 
   = AverageResponseTime
   ...

결과물에는 Administration 콘솔에 표시된 것보다 더 많은 정보가 포함된다는 점에 유의할 것. 예를 들어, CLI 결과에는 각 통계와 그 측정 단위에 대한 설명이 모두 포함되어 있다.

Message Trace 사용하기

모니터링 레벨이 HIGH인 경우에는 웹 서비스 엔드포인트에 대한 마지막 n개의 메시지를 디스플레이할 수 있다(기본값은 25). 메시지는 각 서버 인스턴스의 해당 메모리에 보관된다. 메시지는 SOAP 요청의 세부사항과 더불어 응답 및 HTTP 헤더 정보를 표시하는데, 메시지를 디스플레이하려면 Monitor 창의 Messages 탭을 클릭한다.

Calculator - Messages window

Messages 창에서 메시지를 클릭하면 메시지에 대한 추가 세부사항을 볼 수 있으며, 디스플레이된 세부사항에도 XML 포맷의 세부사항을 요청하는데 사용되는 버튼이 포함되어 있다.

필자 소개

Satish Viswanatham은 썬 Application Server 팀 소속 엔지니어로, 초창기부터 J2EE 기술에 참여해 왔다. 그는 현재 J2EE 애플리케이션 서버를 서비스 지향 아키텍처(SOA) 엔진으로 만드는 작업에 적극적으로 참여하고 있으며, JDBC/EJB 트랜잭션 및 관리 기술 분야에서 풍부한 경력을 쌓은 바 있다. 썬에 합류하기 전에 Satish는 Kiva 애플리케이션 서버와 Netscape 웹 서버 같은 pre-J2EE 애플리케이션 서버 작업에 참여했으며, 썬에 재직하는 동안 3개의 특허를 출원하기도 했다.

Nazrul Islam은 Application Server의 Administration & Management 팀의 고참 멤버로서 지난 5년 동안 J2EE 그룹에 꾸준히 참여해 왔다. 그는 Application Server Enterprise Edition 설계와 구현에 크게 기여했으며, 썬에 재직하는 동안 8개의 특허를 출원했다.

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

2006/03/03 16:54 2006/03/03 16:54

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

댓글을 달아 주세요

  1. 박정숙  수정/삭제  댓글쓰기

    좋은 정보 감사해요~

    2007/09/19 04:45
  2. 김문경  수정/삭제  댓글쓰기

    모니터링 하기,많은 도움 되었읍니다

    2007/09/19 13:31
  3. 김문경  수정/삭제  댓글쓰기

    모니터링 하기,많은 도움 되었읍니다

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

◀ Prev 1  ... 426 427 428 429 430 431 432 433 434  ... 626  Next ▶