제니퍼 에이전트(java) 설치 및 구성

제니퍼 에이전트를 일반적으로 설치하는 방법을 설명한다. 제니퍼 에이전트 설치는 웹 애플리케이션 서버 혹은 독립 실행형 자바 데몬에 설치가 가능하다.

에이전트 디렉토리 설명

제니퍼 패키지 압축을 해제하면 agent.java 디렉토리가 생성된다. agent.java 내의 디렉토리에 대한 설명이다.

디렉토리 설명

디렉토리 명

설명

conf

에이전트 설정파일들이 있는 디렉토리

upgrade

에이전트 업그레이드 파일을 저장할 디렉토리

logs

에이전트 로그파일들이 있는 디렉토리

libs

에이전트에서 필요한 라이브러르를 포함한 디렉토리

에이전트 파일 설명

agent.java 디렉토리에는 두개의 jar파일이 버전별로 존재한다. jennifer.jar 파일은 interface만 존재하며, 에이전트가 기동되면서 가장 최신 버전의 파일을 로딩한다. 아래는 해당 파일들에 대한 설명이다.

파일 설명

파일명

설명

jennifer.impl-x.x.x.jar

BCI 코드와 에이전트를 트레이스할 수 있는 코드들을 포함하고 있다.

jennifer.jar

제니퍼 에이전트의 공통 인터페이스를 포함하고 있다.

jennifer.jdk8.jar

Java 9 모듈 시스템을 지원하기 윈한 에이전트로 jennifer.jar 와 마찬가지로 공통 인터페이스와 일부 구현 코드를 포함하고 있다.

conf/jennifer.conf

에이전트의 기본 설정파일

conf/dot_xxx.conf

에이전트의 모든 설정을 저장하는 파일로 애플리케이션 시작시 적용되어야 하는 옵션이 필요한 경우 사용하기 위한 파일로 재시작시 한번만 적용되는 설정파일

하나의 서버에 여러개의 모니터링 대상(에이전트)이 있는 경우, 설정파일을 복사해서 사용한다.

에이전트 구성 및 설정

제니퍼 에이전트 설치는 정확한 의미로는 모니터링 대상의 자바 옵션 설정을 변경하는 작업을 말한다.

제니퍼 에이전트 설정을 위한 자바 옵션

웹애플리케이션에 제니퍼 에이전트 구성을 위해서는 아래에 있는 두개의 옵션을 넣으면 된다.

에이전트의 홈이 /home/jennifer5/agent.java 라고 가정할때, 아래와 같이 옵션을 추가하면 된다.

구성 옵션

옵션

-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf

-javaagent:/home/jennifer5/agent.java/jennifer.jar

에이전트 버전이 5.3.3.x 까지만 JDK 1.5를 지원하며, 에이전트 버전이 5.4.0.x 부터는 1.6 이상만을 지원한다.

에이전트 필수 옵션

에이전트를 초기화 하기 위해서는 필수적으로 들어가야 하는 옵션이 있다. 아래에 필수적으로 필요한 옵션들을 설명한다.

필수적으로 들어가는 에이전트 옵션

옵션

기본값

설명

server_address

127.0.0.1

데이터 서버의 IP

server_port

5000

데이터 서버의 PORT

domain_id

1000

도메인 ID

log_dir

../logs

로그 파일을 저장할 폴더

log_encoding

UTF-8

로그 파일의 encoding 방식

log_rotation

true

매일 새로운 로그파일을 생성할지, 하나의 파일에 이어서 작성할지를 결정한다. true인 경우에 매일 새로운 로그 파일 생성

Domain ID의 유효범위는 1~32767까지의 정수이다. Domain ID는 Data Server와 View Server에서 모두 참조하는 값임으로 다수의 Data Server를 운영하더라도 별개의 값으로 운영해야 한다.


또한, Domain당 최대 100개의 Instance 접속이 가능하다. 100개의 Instance가 목록에 등록되어 있는 경우, 새로운 에이전트는 접속이 거부된다.

domain_id 는 데이터서버 내에서도 유일해야하지만, 여러개의 도메인을 묶어주는 뷰서버 내에서도 유일한 값을 부여해야한다. 즉 제니퍼 전체적으로 유일한값을 사용해야하며, 중복을 절대 허용하지 않는다.

inst_id (Instance ID) 수동설정

설정파일(jennifer.conf)에 inst_id 를 임의로 추가하여 설정할 수 있다.

inst_id = 999

최초 설치시 inst_id가 없으면 inst_id를 데이터서버로 부터 자동으로 할당받으며, 해당 inst_id는 10000 부터 순차적으로 생성된다.

inst_id의 범위 1 ~ 32767 까지의 정수이다.

제니퍼 에이전트 설치

이 장에서는 Web Application Server 별로 설치하는 방법을 설명한다. 설치라고 하면 자바 옵션에 두가지 옵션만 추가하면 된다.

제니퍼 에이전트 설정을 모니터링 대상 자바기동옵션에 추가한다.

-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf
-javaagent:/home/jennifer5/agent.java/jennifer.jar

제니퍼가 처음에 설치된 이후에 반드시 재기동이 필요하다.

다음은 각 Web Application Server별로 기본적으로 설치하는 방법을 간략하게 설명한다.

WebSphere 에 제니퍼 에이전트 설치

WebSphere 관리콘솔에서 [ 애플리케이션 서버 선택 | 프로세스정의 | 자바 가상 시스템 ] 메뉴를 선택한다.

WebSphere 6.1 이상만 지원한다. ( JDK 1.5 이상만 지원한다.)

  1. 일반 JVM 인수에 아래의 값을 입력한다.

-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf
-javaagent:/home/jennifer5/agent.java/jennifer.jar
  1. 해당 설정값을 저장한다.

  1. 설치한 애플리케이션 서버를 재시작한다.

  1. 제니퍼 에이전트가 정상적으로 적용이 되면 에이전트 로그에 아래와 같은 로그를 확인할 수 있다.

2020-09-01/16:35:05 [I023] Agent own advanced option is found : domain_id = [1000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : inst_id = [10000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_encoding = [UTF-8]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_rotation = [true]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_level = [1]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_address = [192.168.0.31]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_port = [5000]
2020-09-01/16:35:05 [I001] Agent initialized
2020-09-01/16:35:05 [I001] loading control module : /Users/nomin/jennifer5/agent/agent.java/jennifer.impl-5.5.2.2.jar
2020-09-01/16:35:05 [I001] Agent Enable : true
2020-09-01/16:35:05 [I001] Agent Base Version 5.5.2
2020-09-01/16:35:05 [I001] Agent Implementation Version 5.5.2.2
...
2020-09-01/16:35:09 [I001] Runtime Module initialized

WebLogic 에 제니퍼 에이전트 설치

WebLogic 의 기본적인 자바 옵션을 설정하는 파일은 $DOMAIN_HOME/bin/startWebLogic.sh(bat) 이다.

WebLogic 9.x 이상만 지원한다. ( JDK 1.5 이상만 지원한다. )

  1. 웹로직의 $DOMAIN_HOME/bin/startWebLogic.sh(bat) 파일에서 JAVA_OPTIONS 항목에 아래의 두 옵션을 넣는다.

하나의 도메인에서 여러개의 인스턴스를 실행하면 모든 인스턴스들은 startWebLogic.sh 을 통해 기동이 된다. 이 경우에 -Djennifer.conf 옵션에 서로 다른 설정파일들이 적용될 수 있도록 해야한다. 예를들어 설정파일을 server.name 변수로 받던지 startWebLogic.sh(bat) 를 호출하는 스크립트 즉 인스턴스별 기동 스크립트에 적절하게 넣어줘야 한다.

-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf
-javaagent:/home/jennifer5/agent.java/jennifer.jar
  1. 설치한 애플리케이션 서버를 재시작한다.

  1. 제니퍼 에이전트가 정상적으로 적용이 되면 에이전트 로그에 아래와 같은 로그를 확인할 수 있다.

2020-09-01/16:35:05 [I023] Agent own advanced option is found : domain_id = [1000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : inst_id = [10000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_encoding = [UTF-8]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_rotation = [true]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_level = [1]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_address = [192.168.0.31]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_port = [5000]
2020-09-01/16:35:05 [I001] Agent initialized
2020-09-01/16:35:05 [I001] loading control module : /Users/nomin/jennifer5/agent/agent.java/jennifer.impl-5.5.2.2.jar
2020-09-01/16:35:05 [I001] Agent Enable : true
2020-09-01/16:35:05 [I001] Agent Base Version 5.5.2
2020-09-01/16:35:05 [I001] Agent Implementation Version 5.5.2.2
...
2020-09-01/16:35:09 [I001] Runtime Module initialized

Tomcat 에 제니퍼 에이전트 설치

Tomcat 의 기본적인 설정파일은 $CATALINA_HOME/bin/catalina.sh(bat) 이다.

tomcat 5.0 이상만 지원한다. ( JDK 1.5 이상만 지원한다. )

  1. Tomcat 의 $CATALINA_HOME/bin/catalina.sh(bat) 파일에서 JAVA_OPTS 항목에 아래의 두 옵션을 넣는다.

-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf
-javaagent:/home/jennifer5/agent.java/jennifer.jar
  1. 설치한 애플리케이션 서버를 재시작한다.

  1. 제니퍼 에이전트가 정상적으로 적용이 되면 에이전트 로그에 아래와 같은 로그를 확인할 수 있다.

2020-09-01/16:35:05 [I023] Agent own advanced option is found : domain_id = [1000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : inst_id = [10000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_encoding = [UTF-8]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_rotation = [true]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_level = [1]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_address = [192.168.0.31]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_port = [5000]
2020-09-01/16:35:05 [I001] Agent initialized
2020-09-01/16:35:05 [I001] loading control module : /Users/nomin/jennifer5/agent/agent.java/jennifer.impl-5.5.2.2.jar
2020-09-01/16:35:05 [I001] Agent Enable : true
2020-09-01/16:35:05 [I001] Agent Base Version 5.5.2
2020-09-01/16:35:05 [I001] Agent Implementation Version 5.5.2.2
...
2020-09-01/16:35:09 [I001] Runtime Module initialized

Resin 에 제니퍼 에이전트 설치

Resin 의 경우에 기본적인 설정파일은 버전별로 다르다.

Resin 3.1.x 은 $RESIN_HOME/conf/resin.conf 파일이다.

Resin 4.x 은 $RESIN_HOME/conf/resin.xml 파일이다.

Resin 3.1 이상만 지원한다. ( JDK 1.5 이상만 지원한다. )

  1. Resin 의 $RESIN_HOME/conf/resin.conf 혹은 $RESIN_HOME/conf/resin.xml 파일에서 아래와 같이 <jvm-arg> 항목에 두 옵션을 넣는다.

<jvm-arg>-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf</jvm-arg> 
<jvm-arg>-javaagent:/home/jennifer5/agent.java/jennifer.jar</jvm-arg>
  1. 설치한 애플리케이션 서버를 재시작한다.

  1. 제니퍼 에이전트가 정상적으로 적용이 되면 에이전트 로그에 아래와 같은 로그를 확인할 수 있다.

2020-09-01/16:35:05 [I023] Agent own advanced option is found : domain_id = [1000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : inst_id = [10000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_encoding = [UTF-8]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_rotation = [true]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_level = [1]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_address = [192.168.0.31]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_port = [5000]
2020-09-01/16:35:05 [I001] Agent initialized
2020-09-01/16:35:05 [I001] loading control module : /Users/nomin/jennifer5/agent/agent.java/jennifer.impl-5.5.2.2.jar
2020-09-01/16:35:05 [I001] Agent Enable : true
2020-09-01/16:35:05 [I001] Agent Base Version 5.5.2
2020-09-01/16:35:05 [I001] Agent Implementation Version 5.5.2.2
...
2020-09-01/16:35:09 [I001] Runtime Module initialized

JEUS 에 제니퍼 에이전트 설치

JEUS 의 기본적인 자바 옵션을 설정하는 파일은 $JEUS_HOME/config/$hostname/JEUSMain.xml 이다.

JEUS는 4.2 이상만 지원한다. ( JDK 1.5 이상만 지원한다. )

  1. JEUS 의 $JEUS_HOME/config/$hostname/JEUSMain.xml 파일에서 <command-option></command-option> 항목에 두 옵션을 추가한다.

<command-option>
  -Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf
  -javaagent:/home/jennifer5/agent.java/jennifer.jar 
</command-option>
  1. 설치한 애플리케이션 서버를 재시작한다.

  1. 제니퍼 에이전트가 정상적으로 적용이 되면 에이전트 로그에 아래와 같은 로그를 확인할 수 있다.

2020-09-01/16:35:05 [I023] Agent own advanced option is found : domain_id = [1000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : inst_id = [10000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_encoding = [UTF-8]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_rotation = [true]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_level = [1]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_address = [192.168.0.31]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_port = [5000]
2020-09-01/16:35:05 [I001] Agent initialized
2020-09-01/16:35:05 [I001] loading control module : /Users/nomin/jennifer5/agent/agent.java/jennifer.impl-5.5.2.2.jar
2020-09-01/16:35:05 [I001] Agent Enable : true
2020-09-01/16:35:05 [I001] Agent Base Version 5.5.2
2020-09-01/16:35:05 [I001] Agent Implementation Version 5.5.2.2
...
2020-09-01/16:35:09 [I001] Runtime Module initialized

JBoss 에 제니퍼 에이전트 설치

JBoss 는 community 버전과 EAP 버전 두가지의 종류가 존재한다. 여기서는 EAP버전을 기준으로 설명한다. JBoss 의 경우에 기본적인 설정파일은 버전별로 다르다.

JBoss-EAP 4 와 5 는 $JBOSS_HOME/bin/run.conf 파일이다.

JBoss-EAP 6 은 $JBOSS_HOME/bin/standalone.conf 파일이다. (domain 버전의 경우 domain.conf )

JBoss-eap 4 (JBoss 5 community version) 이상만 지원한다. ( JDK 1.5 이상만 지원한다. )

  1. JBoss 의 설정파일에서 JAVA_OPTS 옵션에 아래의 두 옵션을 추가한다.

-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf
-javaagent:/home/jennifer5/agent.java/jennifer.jar

JBoss-EAP 6 이상의 버전에서는 아래와 같이 설정파일 일부중에 jboss.modules.system.pkgs 이 있는데 그 뒤에 aries 를 추가한다. 데이터소스와 JDBC Connection 관련한 에러가 발생할 경우 추가적으로 javax.naming, javax.sql 패키지를 추가해준다.

if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
   JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,aries"
fi
  1. 설치한 애플리케이션 서버를 재시작한다.

  1. 제니퍼 에이전트가 정상적으로 적용이 되면 에이전트 로그에 아래와 같은 로그를 확인할 수 있다.

2020-09-01/16:35:05 [I023] Agent own advanced option is found : domain_id = [1000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : inst_id = [10000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_encoding = [UTF-8]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_rotation = [true]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_level = [1]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_address = [192.168.0.31]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_port = [5000]
2020-09-01/16:35:05 [I001] Agent initialized
2020-09-01/16:35:05 [I001] loading control module : /Users/nomin/jennifer5/agent/agent.java/jennifer.impl-5.5.2.2.jar
2020-09-01/16:35:05 [I001] Agent Enable : true
2020-09-01/16:35:05 [I001] Agent Base Version 5.5.2
2020-09-01/16:35:05 [I001] Agent Implementation Version 5.5.2.2
...
2020-09-01/16:35:09 [I001] Runtime Module initialized

GlassFish 에 제니퍼 에이전트 설치

GlassFish 의 자바 옵션 설정은 관리화면에서 [ Configurations | JVM Settings | JVM Options ] 메뉴이다

GlassFish 3 이상만 지원한다. ( JDK 1.5 이상만 지원한다. )

  1. 관리콘솔 화면 [ Configurations | JVM Settings | JVM Options ] 에서 Add JVM Option 을 클릭하여 각각 아래의 두 옵션을 추가하고 설정값을 저장한다.

-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf
-javaagent:/home/jennifer5/agent.java/jennifer.jar
  1. $GLASSFISH_HOME/config 디렉토리에 osgi.properties 파일에서 org.osgi.framework.bootdelegation 옵션에 아래와 같이 추가한다.

org.osgi.framework.bootdelegation=${eclipselink.bootdelegation}, \
                                  com.sun.btrace, com.sun.btrace.*, \
                                  aries, aries.*, \
                                  org.netbeans.lib.profiler, org.netbeans.lib.profiler.*
  1. 설치한 애플리케이션 서버를 재시작한다.

  1. 제니퍼 에이전트가 정상적으로 적용이 되면 에이전트 로그에 아래와 같은 로그를 확인할 수 있다.

2020-09-01/16:35:05 [I023] Agent own advanced option is found : domain_id = [1000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : inst_id = [10000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_encoding = [UTF-8]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_rotation = [true]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_level = [1]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_address = [192.168.0.31]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_port = [5000]
2020-09-01/16:35:05 [I001] Agent initialized
2020-09-01/16:35:05 [I001] loading control module : /Users/nomin/jennifer5/agent/agent.java/jennifer.impl-5.5.2.2.jar
2020-09-01/16:35:05 [I001] Agent Enable : true
2020-09-01/16:35:05 [I001] Agent Base Version 5.5.2
2020-09-01/16:35:05 [I001] Agent Implementation Version 5.5.2.2
...
2020-09-01/16:35:09 [I001] Runtime Module initialized

Jetty 에 제니퍼 에이전트 설치

Jetty 의 기본 자바 옵션 설정파일은 jetty.sh 이다.

Jetty 6 이상만 지원한다. ( JDK 1.5 이상만 지원한다. )

  1. $JETTY_HOME/bin 디렉토리에 jetty.sh 파일에서 두개의 옵션 설정값을 추가한다.

-Djennifer.config=/home/jennifer5/agent.java/conf/jennifer.conf
-javaagent:/home/jennifer5/agent.java/jennifer.jar
#####################################################

# Add jetty properties to Java VM options.
#####################################################
JAVA_OPTIONS+=("-Djetty.home=$JETTY_HOME" "-Djava.io.tmpdir=$TMPDIR" "-Djennifer.config=/home/j5/jennifer5/agent.java/conf/jennifer.conf" "-javaagent:/home/j5/jennifer5/agent.java/jennifer.jar" )
  1. 설치한 애플리케이션 서버를 재시작한다.

  1. 제니퍼 에이전트가 정상적으로 적용이 되면 에이전트 로그에 아래와 같은 로그를 확인할 수 있다.

2020-09-01/16:35:05 [I023] Agent own advanced option is found : domain_id = [1000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : inst_id = [10000]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_encoding = [UTF-8]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_rotation = [true]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : log_level = [1]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_address = [192.168.0.31]
2020-09-01/16:35:05 [I023] Agent own advanced option is found : server_port = [5000]
2020-09-01/16:35:05 [I001] Agent initialized
2020-09-01/16:35:05 [I001] loading control module : /Users/nomin/jennifer5/agent/agent.java/jennifer.impl-5.5.2.2.jar
2020-09-01/16:35:05 [I001] Agent Enable : true
2020-09-01/16:35:05 [I001] Agent Base Version 5.5.2
2020-09-01/16:35:05 [I001] Agent Implementation Version 5.5.2.2
...
2020-09-01/16:35:09 [I001] Runtime Module initialized

Azure App Service에 제니퍼 에이전트 설치

Azure에 올릴 수 있는 JAVA Web App Service는 크게 다음의 유형으로 나눌 수 있다.

우선, Windows 호스팅 환경에 설치된 Java Web App의 경우 아래의 화면과 같이 "Extensions" 설정으로 들어가 "Add" 버튼을 누르면 나오는 확장 목록에서,

Azure 확장 설치 메뉴

"JENNIFER Java Agent" 항목을 선택해 설치를 진행한다.

설치가 완료된 후 다시 "App Services" 관리 화면의 "Application Settings" 화면에서,

환경 변수 설정

위의 환경처럼 4개의 환경 변수를 각각 아래와 같은 설정으로 등록한다.

윈도우 호스팅 환경의 Azure Web App을 위한 환경 변수 설정

변수 이름

설명

ARIES_SERVER_ADDRESS

[제니퍼 데이터 서버의 접속 주소]

가변값 (예: 192.168.0.100)

ARIES_SERVER_PORT

[제니퍼 데이터 서버의 접속 포트]

가변값 (예: 5000)

ARIES_DOMAIN_ID

[제니퍼 데이터 서버의 관리 도메인 ID]

가변값 (예: 1000)

JAVA_OPTS 또는 CATALINA_OPTS

-Djennifer.config=%home%\SiteExtensions\JenniferJavaAgentExtension\agent.java\conf\azure.conf -javaagent:%home%\SiteExtensions\JenniferJavaAgentExtension\agent.java\jennifer.jar

만약 기존에 같은 이름의 환경 변수를 정의하고 있다면 값을 추가 (이후 제니퍼 에이전트를 제거하면 반드시 이 옵션도 제거를 해야만 함)

설정 후 App Services를 재시작하면 설정이 반영되어 모니터링이 시작된다.

변면 리눅스 환경의 호스팅이라면 해당 App Service에 다음과 같이 메뉴를 이용해 SSH 접속을 하고,

Azure Portal에서 Web App Service의 SSH 메뉴

/home/site/wwwroot/apm 디렉터리를 만들어 Java Agent ZIP 파일을 다운로드한다.

/home# cd site
/home/site# cd wwwroot
/home/site/wwwroot# mkdir apm
/home/site/wwwroot# cd apm
/home/site/wwwroot/apm# wget https://.../jennifer-agent-java-5.5.3.8.zip

동일한 디렉터리에 zip 파일을 압축 해제하면,

/home/site/wwwroot/apm# unzip jennifer-agent-java-5.5.3.8.zip

/home/site/wwwroot/apm/agent.java 디렉터리가 생성된다. 마지막으로 Azure App Service 관리 화면에서 CATALINA_OPTS 또는 JAVA_OPTS를 포함한 환경 변수 4개를 다음과 같이 추가하고 변경 사항을 반영하기 위해 Web App을 재시작하면 에이전트의 모니터링 기능이 작동한다.

리눅스 호스팅 환경의 Azure Web App을 위한 환경 변수 설정

변수 이름

설명

ARIES_SERVER_ADDRESS

[제니퍼 데이터 서버의 접속 주소]

가변값 (예: 192.168.0.100)

ARIES_SERVER_PORT

[제니퍼 데이터 서버의 접속 포트]

가변값 (예: 5000)

ARIES_DOMAIN_ID

[제니퍼 데이터 서버의 관리 도메인 ID]

가변값 (예: 1000)

JAVA_OPTS 또는 CATALINA_OPTS

-Djennifer.config=/home/site/wwwroot/apm/agent.java/conf/azure.conf -javaagent:/home/site/wwwroot/apm/agent.java/jennifer.jar

만약 기존에 같은 이름의 환경 변수를 정의하고 있다면 값을 추가 (이후 제니퍼 에이전트를 제거하면 반드시 이 옵션도 제거를 해야만 함)

만약 Azure Web App의 "Scale-Out"을 이용해 인스턴스를 2개 이상 운용하는 경우라면 데이터 서버의 도메인 설정에서 "Instance ID 중복 시 신규 ID 자동 발급" 옵션을 켜고 데이터 서버의 실행 스크립트에 비공식 옵션 -Djennifer.unofficial.enable.reuse.generated.instance.id=true 를 추가해야 한다.

시스템 리소스(CPU, Memory) 사용량 수집을 위한 JNI 모듈 등록

JNI 모듈을 통해 CPU, Memory 데이터를 수집하기 위한 방법은 다음과 같다.

  1. 에이전트 설치 디렉토리의 libs 디렉토리에서 에이전트 운영체제에 맞는 공유 라이브러리 파일을 찾는다. (ex : aix-7.1/libjennifer5-0.1.0-aix7.1_32.so)

  2. 찾은 공유 라이브러리 파일을 에이전트 설치 디렉토리의 libs 디렉토리로 복사 한다.

  3. enable_jmx_for_system_resource 고급옵션 값을 false로 변경한다.

  4. 에이전트를 재시작한다.

  5. JNI 모듈이 정상적으로 로드 되었는지 로그를 확인한다.

2014-03-19/15:35:29 native lib libjennifer5-0.1.0-aix7.1_32.so loaded

리눅스의 경우 JNI가 아니라 /proc 에서 가져온다.

제니퍼 에이전트 제거

제니퍼 에이전트를 제거하기 위해서는 설치 구성시에 적용한 두개의 옵션을 삭제하고 WAS를 재기동 한다.

제니퍼 에이전트 업그레이드

제니퍼 에이전트 업그레이드는 제니퍼 화면의 관리화면에서 업그레이드를 진행한다.

화면에서 업그레이드 한 후 반드시 에이전트를 재시작해야한다.

업그레이드시에 패치(patch) 이상인 경우에는 jennifer.jar 를 수동으로 복사해야한다.

예) 5.0.11.1 - major.minor.patch.hotfix

agent.java/upgrade/jennifer-agent-java-5.0.xx/agent.java 디렉토리에 복사해야할 파일이 존재하며, 이 디렉토리의 jennifer.jar 파일을 에이전트 디렉토리에 복사한다.