ELEVISOR for J2EE

에이전트 관리

에이전트 관리

Previous topic Next topic  

에이전트 관리

Previous topic Next topic  

 


기동/종료

 

Elevisor for J2EE 에이전트는 WAS에 Plug-in 되어 기동 되기 때문에 별도의 기동/종료가 필요하지 않다.

 

 


환경 설정

 

에이전트 환경 설정은 Elevisor 서버 콘솔에서 수정하는 방법과 환경설정 파일을 직접 수정하는 두가지 방법이 있다.

환경 설정 항목을 수정하면 즉시 반영되는 항목과 WAS 재기동시 반영되는 항목이 있다.

 

v Elevisor 서버 콘솔에서의 환경설정

메인 메뉴 > COMMON > Common > Configuration > Instance > Instance Management > J2EE 메뉴에서 에이전트 환경 설정을 할수 있다.

콘솔에서 환경 설정할 경우 에이전트 와 TCP/IP 통신을 통하여 관리되기 때문에 WAS 가 기동중인 상태여야 하며 방화벽에서 해당 포트를 차단할 경우 관리가 불가능하다

 

v 에이전트 환경설정 파일 직접 수정

   서버와 에이전트 간의 TCP/IP 통신이 불가능하나 WAS가 Down 상태일때에는 환경설정 파일을 직접 수정하여 반영할수 있다.  

 


환경 설정 항목 설명

 

v Server Info

           - server_info.ip

             Elevisor 서버가 설치된 IP

 

           - server_info.udp.port.common

              Elevisor 서버에서 Agent로의 성능데이터 전송용 UDP 포트

 

            - server_info.udp.port.trace

              Elevisor 서버에서 Agent로의 트레이스 데이터 전송용 UDP 포트

 

v Agent Info

            - agent_info.name

              에이전트명( 영문 4글자 )

 

            - agent_info.port

             서버에서 에이전트로의 접속을 위한 TCP/IP 포트

 

            - agent_info.file.encoding

             에이전트에서 수집한 성능데이터를 서버로 전송시 인코딩

 

            - agent.enable

             에이전트 동작 여부를 설정

 

            - agent.license

            에이전트 라이센스

 

v Trace Config

           - trace.enable

             트레이스 동작 여부를 설정한다.

 

           - trace.jdbc.enable

             JDBC 관련 항목에 대한 트레이스 여부를 설정한다.

 

           - trace.jdbc.datasource.enable

             Datassource에 대한 트레이스 여부를 설정한다.

 

           - trace.jdbc.datasource.cache.enable

             Hybernate와 같은 Framework에서 DataSource를 Caching 하는 경우에도 성능정보 수집이 가능하도록 개선 Datassource에 대한 트레이스 여부를 설정한다.

 

           - trace.jdbc.debug.enable=false

             DataSource.lookup(String) 이나 DriverManager.getConnection(String) 호출시 Agent 로그에 아래와 같이 로깅함.

             ( DataSource명 및 JDBC 커넥션 URL 확인 가능) 
             ex)  [2012-11-15,10:50:00] [Debug] DriverManager.getConnection url=jdbc:apache:commons:dbcp:REPO

             * 주의 : 설정시 Agent 로그가 급증함.

 

           - trace.jdbc.debug.stacktrace.enable=false

             DataSource.lookup(String) 이나 DriverManager.getConnection(String) 호출시 Stack Trace 정보를 Agent 로그에 아래와 같이 로깅여부를 설정한다.

             ( 호출 소스 위치 확인용으로 최초 JDBC Trace 설정시에만 사용 권장 )

             ex)

              [2012-11-15,10:50:00] [Debug] java.lang.Exception

              at java.sql.DriverManager.getConnection(DriverManager.java:518)

                at java.sql.DriverManager.getConnection(DriverManager.java:203)

     at com.elevizer.common.db.DBCPUtil.getConnection(DBCPUtil.java:186)

     at com.elevizer.oracle.db.dao.InstanceCurrentDAO.getInstanceCurrentData(InstanceCurrentDAO.java:49)

     at com.elevizer.oracle.main.thread.InstanceMonitorThread.run(InstanceMonitorThread.java:98)

             * 주의 : 설정시 Agent 로그가 급증함.

 

           - trace.jdbc.application.info

             오라클 DB에 대하여 SQL 수행시 Application 정보 설정 여부를 설정한다.

             true로 설정하면 DB와 연계 분석 기능이 활성화 된다.

 

           - trace.jdbc.connection.leak.trace

             JDBC 커넥션 미반환 트레이스 여부를 설정한다.

 

           - trace.jdbc.connection.enable

             JDBC Connection을 Trace(Wrapping) 할지 여부를 설정한다.

 

           - trace.jdbc.preparedstatement.enable

             JDBC PreparedStatement를 Trace(Wrapping) 할지 여부를 설정한다.

 

           - trace.jdbc.callablestatement.enable

             JDBC CallableStatement를 Trace(Wrapping) 할지 여부를 설정한다.

 

           - trace.jdbc.statement.enable

             JDBC Statement를 Trace(Wrapping) 할지 여부를 설정한다.

 

           - trace.jdbc.resultset.enable

             JDBC ResultSet을 Trace할지 여부를 설정한다.

 

           - trace.jdbc.drivermanager.poolname.prefixes

             DriverManager를 사용하여 JDBC 커넥션풀에서 커넥션을 획득하는 경우 Trace하기 위한 PoolName에 대한 prefix를 지정한다.

            커넥션풀을 사용하지 않고 매번 직접 접속하는 AP의 경우 "jdbc:oracle:thin"으로 prefix를 지정하면 JDBC Trace가 가능하다.

             ※ 하지만 아래와 같이 OracleConnectionPoolDataSource를 사용하는 경우 JDBC Driver 내에서 ClassCastException이 발생하니 주의가 필요하다.

                  java.lang.ClassCastException: com.elevizer.j2ee.agent.jdbc.wrapper.ConnectionWrapper

                    at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java(Compiled Code))

                    at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java(Inlined Compiled Code))

 

           - trace.max.length

             최대 트레이스 길이를 설정한다.  트레이스중 이 값을 초과하면 트레이스를 중단하여 과도한 트레이스에 따른 성능저하를 방지한다.

 

           - trace.truncate.threshold

             트레이스시 지정된 응답시간 이하의 트레이스는 트레이스에서 제외시킨다. 이를 통하여 불필요한 트레이스 및 성능저하를 방지할수 있다.

 

           - trace.truncate.querystring.length

             URL의 Query String의 길이를 지정된 값으로 제한하는 기능으로서 과도한 Query String 수집을 방지한다.

 

           - trace.io.socket.enable

             TCP/IP 기반의 Socket I/O 트레이스 여부를 설정한다.

 

           - trace.io.socket.jdbc.enable

             DB와의 Socket I/O 정보를 트레이스 할지 여부를 설정한다.

             Socket I/O 트레이스가 설정 되어 있어야 동작한다.  

 

           - trace.io.file.enable

             File I/O 트레이스 여부를 설정한다.

 

           - trace.apc.enable

             AP Class에 대한 트레이스 여부를 설정한다.

 

           - trace.exception.enable

             Exception/Error 발생에 대한 트레이스 여부를 설정한다.

 

           - trace.exception.ignore

             의미 없는 Exception일 경우 등록하여 트레이스에서 제외 시킨다.

 

           - trace.ignore.url

             등록된 URL 패턴에 대하여 정보를 수집하지 않는다.

 

           - trace.key.ip.header

                 클라이언트의 IP가 HttpServletRequest의 Header의 값을 읽어야 하는 경우 Header의 키 값을 입력한다.

 

           - trace.capture.method.parameter.value.enable

             메소드 호출시의 첫번째 파라미터 값에 대한 캡쳐 여부를 설정한다.

 

           - trace.capture.method.return.value.enable

             메소드 수행후 리턴되는 값에 대한 캡쳐 여부를 설정한다.

 

           - trace.capture.method.truncate.value_len

             캡쳐되는 파라미터나 리턴값에 대한 과도한 캡쳐를 방지하기 위하여 길이를 제한하는 값이다.

 

 

v Service control

           - service.dump.enable

       액티브 서비스 임계치 초과시 서비스 덤프를 수행할지 여부를 설정한다.

 

           - service.dump.thread.enable

       액티브 서비스 임계치 초과시 스레드 덤프를 수행할지 여부를 설정한다.  ( JDK 1.5 이상에서 지원 )

 

           - service.dump.limit

       덤프를 위한 액티브 서비스의 임계치를 설정한다.

 

           - service.dump.interval

       덤프 임계치 초과시 덤프 수행 주기 설정(단위:초)

 

 

v Instrument

           - instrument.apc.webapps.classes.enable

                 JAR파일 내의 클래스가 아닌 "WEB-INF/classes" 에서 로딩되는 클래스에 대한 Instrument 여부를 설정한다.

                  Instrument 대상 클래스는 트레이스 대상 클래스가 된다.

 

           - instrument.apc.filter.classes.pattens

                 Instrument 대상에서 제외할 패턴을 지정한다.     

                 Util나 XML 파싱관련 클래스의 경우 루핑 작업이 많기 때문에 모니터링 대상에서 제외하는 것이 좋다. 

 

           - instrument.jsp-servlet.classes

                 WAS 별 JSP/Servlet 클래스들을 등록하는 항목으로 벤더사에서 지정하므로 임의로 수정하면 안된다.

 

 

v Logging

           - logging.accesslog.enable

                 액세스 로그를 기록할지 여부를 설정한다.

                 "$ElEVISOR_AGENT_HOME/log/access" 경로에 "인스턴스명_access_yyyymmdd.log" 파일에

                 "YYYY/MM/DD HH:MM:SS, Client IP, Responce Time, Cpu Time, URL" 포멧으로 로깅된다.

 

           - logging.loading.class.list.enable

                로딩되는 클래스 목록을 로깅할지 여부를 설정한다.

                 "$ElEVISOR_AGENT_HOME/log/class" 경로에 "YYYY-MM-DD_hh--mm-ss_load_classes_인스턴스명.txt" 파일에

                "클래스명, 클래스로더" 포멧으로 로깅된다.

 

           - logging.loading.class.list.ignore.pattens

                클래스 목록에 로깅하지 않을  패턴을 설정한다.

                패키지명의 prefix 형태의 패턴을 등록하며 에이전트 환경설정 파일을 열어 직접 편집해야 한다.

 

           - logging.performancelog.enable

                 성능정보를 파일로 로깅할지 여부를 설정한한다.

 


로그 관리

 

Agent는 크게 4가지 종류의 로그가 있으며 이중 Dump 로그는 콘솔에서 조회가 가능하다.

 

설 명

디렉터리

Access Log

$ELEVISOR_HOME/log/access/<AGENT_NAME>_access_yyyymmdd.log

Agent Log

$ELEVISOR_HOME/log/access/<AGENT_NAME>_yyyymmdd_hhmiss.log

Dump Log

$ELEVISOR_HOME/log/yyyymmdd_hhmiss_<AGENT_NAME>_service.dmp

$ELEVISOR_HOME/log/yyyymmdd_hhmiss_<AGENT_NAME>_thread.dmp

Class Log

$ELEVISOR_HOME/log/yyyy-mm-dd_hh-mi-ss_load_classes_<AGENT_NAME>.txt

performance Log

$ELEVISOR_HOME/log/<HOSTNAME>_<AGENT_NAME>_perf_yyyy-mm-dd.log