제니퍼 닷넷 에이전트 운영 관리

닷넷 에이전트 설정 파일

모니터링 수준과 방법, 네트워크 포트 번호 지정 등을 포함한 대부분의 설정은 제니퍼 에이전트 옵션을 통해서 이루어진다. web.config 파일의 appSettings/add[@key='Jennifer.FileName'] 설정에 value 속성으로 지정한 파일이 제니퍼 에이전트 설정 파일이다.

설정 파일 형식

제니퍼 에이전트 옵션은 텍스트 형식의 설정 파일에 기록된다. 이 파일은 다음과 같은 특징을 갖는다.

설정 변경

설정 파일은 에디터를 통해서 직접 수정하거나, [구성 관리 | 구성 설정 ] 메뉴에서 수정할 수 있다. 단, 제니퍼 클리이언트에서는 관리자 그룹에 속한 사용자만이 옵션을 수정할 수 있다.

제니퍼 옵션 설정 화면

  1. 에이전트 선택 영역 - 제니퍼 에이전트 옵션 내용을 확인하거나 수정하려면 해당 제니퍼 에이전트를 선택한다.

  2. 현재 설정 내용 - 왼쪽에 있는 현재 설정 내용에서 제니퍼 에이전트 옵션을 확인한다.

  3. 설정 내용 변경 - 오른쪽에 있는 설정 내용 변경 입력 폼에서 기존 옵션을 수정하거나 새로운 옵션을 추가한 후에, 하단에 있는 [수정] 버튼을 클릭한다.

새로운 설정 파일 만들기

새로운 제니퍼 에이전트 설정 파일을 만들려면 JENNIFER_HOME/agent 디렉토리에 있는 기존 설정 파일(예, w11.conf)을 복사하여 다음의 옵션 값을 수정한다.

agent_pool =[agent1 id]:[agent1 port], [agent2 id]:[agent2 port] ……

예를 들어, “A” 웹 사이트에서 “app_A_pool.conf” 파일을, “B” 웹 사이트에서 “app_B_pool.conf”파일을 만들었다고 가정할 때 개별 conf 파일에서는 아래와 같이 서로 다른 식별자와 포트를 지정해야 한다.

[app_A_pool.conf 파일]
agent_pool = N10:9000
[app_B_pool.conf 파일]
agent_pool = T10:9100

닷넷 에이전트 기본 설정 및 관리

제니퍼 에이전트를 설치하고 기본적으로 변경해야 하는 제니퍼 에이전트 옵션들과 설치 과정에서 발생할 수 있는 예외 현상들을 설명한다.

제니퍼 에이전트 아이디 풀

하나의 제니퍼 서버는 여러 개의 제니퍼 에이전트로부터 성능 데이터를 수집할 수 있다. 그래서 제니퍼 서버가 수집한 성능 데이터를 제니퍼 에이전트 별로 식별할 수 있도록 제니퍼 에이전트 아이디는 유일해야 한다. 이는 제니퍼 에이전트의 agent_pool 옵션으로 설정한다.

agent_pool = N10:9000

제니퍼 에이전트 아이디는 영어와 숫자만으로 구성되어야 하여, 글자 수는 반드시 3자이어야 한다.

응용 프로그램이 한 개의 인스턴스(EXE)만 실행되는 경우라면 위에서와 같이 한 개의 “[식별자]:[포트번호]” 만을 지정하는 것이 가능하다. 하지만, 해당 웹 응용 프로그램이 속한 “AppPool”의 속성에서 “Web Garden”의 값을 2 이상으로 설정하면 그 수에 따라 w3wp.exe 프로세스가 다중으로 실행되어 웹 응용 프로그램을 호스팅 하게 된다.

이 때문에 Web Garden의 수에 따라 에이전트 아이디와 포트 번호가 대응되도록 입력해 두어야 한다. 예를 들어, 아래는 “Web Garden”의 설정값이 2일 때 해당한다.

agent_pool = N10:9000,N11:9001

자바 버전의 제니퍼 에이전트와는 달리 닷넷 버전의 에이전트에서는 아이디 변경은 실시간 반영되지 않는다. 즉, 변경 후 w3wp.exe가 재 시작(Recycle) 되어야 반영된다.

로그 파일

제니퍼 에이전트의 로그 파일은 logfile 옵션으로 설정한다.

logfile = jennifer_{0}.log

“{0}” 포맷은 제니퍼 에이전트에서 응용 프로그램의 성격에 따라 다음과 같이 자동으로 설정한다.

웹 응용 프로그램: Jennifer_[App Pool 이름]_[에이전트 식별 ID]_[오늘날짜].log
일반 응용 프로그램: Jennifer_[에이전트 식별 ID]_[오늘날짜].log

오늘 날짜가 2010년 3월 16일인 경우, 기본적으로 JENNIFER_HOME/agent.net/log/jennifer_DefaultAppPool_N10_20100316.log 파일에 로그가 기록된다. 이 로그 파일에는 애플리케이션에서 발생한 예외, 서비스 덤프, 디버그 내용 등이 기록된다. 로그 파일을 일자 별로 기록하지 않으려면 제니퍼 에이전트의 enable_logfile_daily_rotation 옵션을 false로 설정한다.

enable_logfile_daily_rotation = false

라이센스키 파일

제니퍼 에이전트 라이센스키는 제니퍼 에이전트의 license_filename 옵션으로 설정한 텍스트 파일에 저장된다.

license_filename = license.txt

기본 설정의 경우에는 JENNIFER_HOME/agent.net/license.txt 파일에 라이센스키가 저장된다.

라이센스 키와 제니퍼 에이전트 활성

IP 주소의 변경과 유효 기간 경과 등의 이유로 라이센스 키가 유효하지 않게 되거나 제니퍼 에이전트의 enable 옵션을 false로 설정하면 제니퍼 에이전트는 다음과 같이 동작한다.

애플리케이션 재 시작 여부와 상관없이 모든 제니퍼 에이전트의 기능은 동작하지 않는다. 즉, 모든 데이터 수집과 전송 기능이 정지한다. (단, 애플리케이션의 요청/응답 프로파일링과 관계없는 CPU, DB 연결 수, 메모리 등의 데이터는 수집된다.) 물론 애플리케이션의 동작에는 영향을 주지 않는다.

그러나 내부적으로 여전히 프로파일링 관련 코드는 활성화되어 있다. 따라서 프로파일링 코드까지도 비활성화하고 싶다면 제니퍼 프로그램을 등록해제하고 응용 프로그램을 재시작해야 한다. 왜냐하면, 닷넷 프로파일링은 모듈이 로딩 시에 IL(Intermediate Language)코드를 변경하는 방식으로 동작하기 때문이다. 즉, 이미 로딩된 모듈은 IL코드가 변경되었으므로 변경되기 이전의 코드로 실행될 수는 없다.

네트워크 설정

제니퍼 에이전트는 수집한 성능 데이터를 제니퍼 서버에 전송한다. 다음은 이를 위한 네트워크 설정에 대한 설명이다.

TCP 네트워크 설정

제니퍼 서버가 제니퍼 에이전트의 TCP 포트로 역방향 연결을 하기도 한다. 주로 액티브 서비스 목록, 10분간 애플리케이션 처리 현황 통계 등과 같이 데이터의 크기가 크고 데이터베이스나 파일에 저장되지 않는 데이터를 조회하는데 TCP 역방향 연결을 사용한다. 그래서 제니퍼 에이전트의 agent_pool 에 에이전트 ID와 함께 포트 번호를 설정한다. (처음 설치했을 때 제공되는 app_pool.conf 설정 파일에 기본 설정된 포트는 7800번이다.)

agent_pool=N10:7800

그리고 제니퍼 에이전트 포트로 들어오는 제니퍼 서버의 요청을 처리하는 제니퍼 에이전트의 쓰레드를 Agent TCP Worker라고 한다. Agent TCP Worker의 숫자는 제니퍼 에이전트의 number_of_tcp_workers 옵션으로 설정한다. 기본 값은 5이다.

number_of_tcp_workers = 5

TCP 네트워크 설정과 관련한 옵션을 수정하는 경우에는 제니퍼 에이전트를 설치한 애플리케이션을 재시작해야 한다.

UDP 네트워크 설정

제니퍼 에이전트는 제니퍼 서버의 UDP 포트로 성능 데이터를 전송한다. 우선 제니퍼 에이전트의 udp_server_host 옵션으로 제니퍼 서버의 IP 주소를 설정한다.

udp_server_host = 127.0.0.1

그리고 제니퍼 서버에 설정한 UDP 포트 번호와 동일하게 제니퍼 에이전트에도 해당 옵션을 설정한다.

server_udp_runtime_port = 6901
server_udp_listen_port = 6902
server_udp_lwst_call_stack_port = 6703

이 두 옵션을 수정하는 경우에는 제니퍼 에이전트를 설치한 애플리케이션을 재시작할 필요가 없다.

네트워크 테스트

제니퍼 서버와 제니퍼 에이전트는 UDP와 TCP 연결을 모두 사용한다. 그런데 방화벽과 같은 네트워크 장비로 인한 제약으로 통신이 정상적으로 이루어지지 않는 경우가 있다. 이러한 문제를 해결하기 위해서 네트워크가 정상인지를 확인할 필요가 있다.

TCP 연결은 간단한 텔넷 프로그램으로 해당 포트가 열려 있는지를 확인할 수 있다.

telnet 127.0.0.1 7750

그러나 UDP 연결은 제니퍼 서버가 데이터를 올바르게 받는지를 확인해야 한다. 이를 테스트할 수 있는 JENNIFER_HOME/agent.net/Utility/udptest.exe 유틸리티를 제공한다. 제니퍼 에이전트를 설치한 하드웨어에서 이 유틸리티를 실행하면 UDP 연결 테스트를 위한 임의의 데이터를 제니퍼 서버에 전송한다.

udptest.sh [jennifer_server_ip] [port] [datalen]
ex) udptest.sh 127.0.0.1 6901 100

만약 제니퍼 서버의 콘솔에 다음과 같은 메시지가 출력되면 UDP 연결이 정상적임을 의미한다.

RECV(6901) from=127.0.0.1 data=100 bytes

제니퍼 에이전트 설치 과정에서 발생할 수 있는 예외 현상

제니퍼 설치 후 애플리케이션 쿠키 정보 유실

제니퍼 에이전트는 방문자 수와 동시단말 사용자 수를 수집하기 위해서 쿠키를 사용한다. 그런데 사용할 수 있는 쿠키의 숫자와 크기에는 제한이 있기 때문에, 기존 웹 애플리케이션에서 많은 쿠키를 사용하고 있으면 쿠키 정보가 유실될 수가 있다. 이 경우에는 제니퍼 에이전트의 hotfix_remote_address_for_wmonid 옵션을 true로 설정한다.

hotfix_remote_address_for_wmonid = true

이 옵션이 true로 설정되면 remote address를 사용자 구분으로 사용한다.

hotfix_remote_address_for_wmonid 옵션을 true로 설정하면 인트라넷 시스템에서만 방문자 수와 동시단말 사용자 수가 의미를 갖는다.

제니퍼 에이전트 이름 설정

제니퍼 에이전트 아이디는 N10과 같이 3자로 제한되어 있기 때문에, 차트를 포함한 제니퍼 클라이언트에서 제니퍼 에이전트 아이디로는 업무와 관련한 의미를 전달하는데 한계가 있다. 이 문제를 해결하려면 제니퍼 에이전트에 임의의 이름을 부여하고, 그 이름을 제니퍼 클라이언트에서 사용하면 된다.

제니퍼 에이전트 이름을 부여하는 방법은 다음과 같다. 우선, [구성 관리 | 구성 설정 | 도메인 관리] 메뉴로 이동하여 도메인 정보를 입력한다.

도메인은 제니퍼 서버를 의미한다. 따라서 도메인 정보에 제니퍼 서버와 관련한 정보를 입력하면 된다.

도메인 목록 하단에 있는 [추가] 버튼을 클릭하면, 도메인 입력 폼이 나타난다. 도메인 입력 폼에 내용을 입력하고 하단에 있는 [저장] 버튼을 클릭한다.

도메인 입력 화면

다음은 도메인 입력 폼의 필드에 대한 설명이다.

필드

설명

아이디

해당 제니퍼 서버를 지칭하는 고유한 아이디로, 띄어쓰기 없이 영어와 숫자만을 사용하여 입력한다.

이름

해당 제니퍼 서버의 이름

IP

해당 제니퍼 서버의 IP 주소

HTTP 포트

해당 제니퍼 서버의 HTTP 포트 번호

TCP 포트

해당 제니퍼 서버의 server_tcp_port 옵션으로 설정한 포트 번호

버전

해당 제니퍼 서버의 버전으로 4.0을 입력한다. 제니퍼 4.0 이하의 버전은 도메인을 통해서 통합 할 수 없다.

상태

Inactive로 설정한 제니퍼 서버는 사용하지 않는다.

그러면 도메인 목록에 새로 추가한 도메인 정보가 나타나고, 도메인 정보의 아이디를 클릭하면 하단에 도메인 정보가 나타난다. 여기서 하단 오른쪽에 있는 [불러오기] 버튼을 누르면 제니퍼 에이전트 목록이 나타난다.

제니퍼 에이전트 불러오기

[불러오기] 버튼을 클릭하면 현재 운영 중인 제니퍼 에이전트만이 나타난다. 추후에 제니퍼 에이전트를 추가한 경우에는, [불러오기] 버튼을 다시 클릭하면 추가된 제니퍼 에이전트가 목록에 나타난다.

기본적으로 제니퍼 에이전트 이름은 제니퍼 에이전트 아이디와 동일하다. 제니퍼 에이전트 이름 칼럼에서 이름을 수정한 후에 [저장] 버튼을 클릭하면, 제니퍼 에이전트의 이름이 변경된다.

제니퍼 에이전트 목록

제니퍼 에이전트 목록 하단에 있는 [정렬] 버튼을 통해서 제니퍼 에이전트가 화면에 나타나는 순서를 설정할 수 있다. 기본 정렬 기준은 제니퍼 에이전트 아이디이다.

다시 로그인을 해야 수정된 제니퍼 에이전트 이름이 제니퍼 클라이언트에 나타난다.

제니퍼 에이전트 유틸리티

제니퍼 에이전트 설치 과정에서 유용하게 사용할 수 있는 유틸리티에 대해서 설명한다.

유틸리티

JENNIFER_HOME/agent.net/sample, JENNIFER_HOME/agent.net/utility 디렉토리에는 제니퍼 에이전트 설치와 관련한 오류를 파악하는데 사용할 수 있는 유틸리티 파일이 존재한다. 확장자가 aspx 인 경우에는 IIS 의 웹 응용 프로그램 폴더에 복사하여 실행시킨다.

다음은 각각의 유틸리티 파일에 대한 설명이다.

유틸리티

파일

설명

env.aspx

IIS가 실행중인 컴퓨터의 환경 변수를 조회한다. 제니퍼가 정상적으로 설치되었는지 등을 검사할 때 유용하다.

comTest.aspx

제니퍼 닷넷 에이전트의 프로파일러 모듈이 활성화되었는지 검사한다.

ipchecker.exe

실행 중인 컴퓨터의 IP 목록을 보여준다. 라이선스 키를 받을 때 알려주어야 할 IP를 구할 수 있다.

udptest.exe

제니퍼 서버가 설치된 컴퓨터로의 UDP 포트가 열려 있는지 확인할 수 있다.