Ubuntu 8.04, Tomcat 5.5, MySQL 5.0 환경에서 Jennifer 3.2 설치

JENNIFER INSTALLATION
라이프발란스의 서버 성능이 좋지 않자 제일 먼저 떠오른것은 단연 제니퍼였습니다. 프로젝트때 몇번 접해본 경험때문이겠지요. 장애진단화면에서 성능이 않좋은 쿼리까지 뿌려줬을때의 그 감동이란. 암튼, 이놈을 한번 설치해봐야겠다는 생각이 들어서 트라이얼 라이센스로 설치해 보았습니다. 설치시 약간의 삽질이 있었지만 예상보다는 쉽게 설치 할 수 있었습니다.
1. 라이센스 키 신청, 프로그램 다운로드
다운로드링크 : http://www.jennifersoft.com/docs/8.html
웹상에서 바로 다운로드 할 수는 없고요, 일단 라이센스 키를 신청해야합니다. 라이센스 키는 관심있는 사람 모두에게 제공되고 있는것 같습니다. 양식을 꼼꼼히 작성해서 입력하시면 늦어도 다음날 안에는 메일이 도착하게 됩니다. 제 경우에는 신청 다음날 도착했는데, 라이센스 키 신청시 아이피를 잘못적어서 다시 신청을 했더니 1시간정도 뒤에 바로 도착하더군요. 라이센스 키 신청시 제니퍼가 설치될 서버의 아이피를 적게되는데 저처럼 잘못 적는 누를 범하지 않으시기 바랍니다.
2. 설치준비
설치가이드 : http://www.jennifersoft.com/docs/68.html
설치는 사이트에 WAS별로 설치가이드가 꼼꼼히 잘 작성되어져 있어서 그 곳을 참조해 따라하시면 됩니다. 여기서는 중간중간 제가 겪었던 피곤함을 이야기해보겠습니다.
3. 서버환경
WAS : Tomcat 5.5
DB : MySQL 5.0
제 서버의 환경은 위과 같습니다. 따라서 설치 가이드는 Tomcat가이드를 보시고 그 안에서도 UNIX쪽을 보시면 되겠네요.
제니퍼 Tomcat용 설치가이드 : http://www.jennifersoft.com:8080/man/viewer/DocumentViewer.jsp?id=2df4d391-b808-45fc-94c9-2d8499a57c9b
4. 설치시작
메뉴위치 : 제니퍼 서버 설치 및 구성 - ①번
/home/jennifer위치에 프로그램을 넣으라고 하는데요, 다음 명령으로 계정을 생성하여 디렉토리를 만듭니다.
메뉴위치 : 제니퍼 에이전트 설치 및 구성 - jennifer.jar의 설정
저의 경우 이부분이 잘 안되더군요. 시키는대로 해도 계속 javax.servlet.http.HttpServlet을 타서 결국 servlet-api.jar에 jennifer.jar를 밀어넣어버렸습니다. 저의 경우 servlet-api.jar파일은 /usr/share/java에 위치해 있었습니다.
메뉴위치 : 제니퍼 에이전트 설치 및 구성 - 제니퍼에이전트구성파일, jennifersys.jar, lwst30.jar설정(Tomcat4x,5x,6x공통사항)
저는 메뉴얼에 나와있는 catalina.sh를 수정하지않고, /etc/init.d/tomcat.sh 파일을 수정하였습니다.
파일의 윗부분에 다음과같이 추가하였습니다.
''-Xrunjennifer20'' 옵션은 가이드에 나와있지 않더군요. 제니퍼소프트Q/A게시판을 보니 OS가 Linux일 경우 넣어주라고 나와 있었습니다. 이걸 넣지 않으면 다음에 수행될 부분인 ''제니퍼 네이티브 라이브러리 테스트''에서 ./test.sh 스크립트 수행시 다음의 노란부분과 같은 기분나쁜 메시지가 나타나게 됩니다.
chanseok@cerver:/home/jennifer/agent/jni/linux$ sudo ./test.sh
get_nprocs_conf=1, get_nprocs(ncpu)=1, ncpu=1, _SC_CLK_TCK=100
Jennifer20 loaded successfully.You did not set "-Xrunjennifer20 " to get cpu utilization per thread
Jennifer TimeZoneOffset:32400000
Jennifer3.2.1.4(2008-07-11) libjennifer20.so(sl) shared library loaded successfully.
...
메뉴얼에도 설명을 넣어줬으면 좋겠다는 메일을 보내야겠네요.
여기까지 하시면 화면에 차트가 지이잉~하면서 그려질것입니다. 다음으로 라이센스 키등록이 있네요. 발급받은 라이센스 키를 에이전트에 등록해주어야 비활성된 기능들을 모두 보실 수 있습니다. 라이센스 키등록은 가이드에 좀 짧게 설명되어있어 한참 헤멘 부분입니다. 일단 제일 중요한 것은 키 발급시 입력했던 서버의 아이피 입니다. 먼저 다음 명령을 수행하여 어떤 아이피가 나타나는지 확인해봅시다.
여기서 결과값이 127.0.0.1이 떨어지면 hosts파일을 수정해 주어야 합니다.
<키발급받은아이피> cerver
#127.0.0.1 localhost
#127.0.1.1 cerver
위와같이 기존에 있던 localhost와 서버명의 아이피를 주석처리하시고 라이센스 키를 발급받을때 적었던 아이피로 대체하시기 바랍니다. 또한 라이센스 키 등록시 라이센스 파일을 찾을 수 없다는 메시지가 나타나는데요, 이건 참 이상한 부분입니다. 발급받은 라이센스 파일이 없거든요. 정식버전은 라이센스를 파일과 키로 관리하는지 모르겠지만 가이드에는 이와 관련된 내용이 없습니다. 그냥 무작정 licese.txt파일을 만들어 라이센스키를 넣었습니다. 라이센스 파일은 에이전트 설정파일인 w11.conf파일에 경로를 기술하는부분이 있습니다. 생성한 license.txt파일의 절대경로를 입력해 줍시다.
파일에 발급받은 키를 입력한 후 저장합니다.
w11.conf파일을 열어 다음과같이 license.txt파일의 경로를 지정합니다.(vi에서 /(슬래쉬)입력후 license_filename으로 검색)
이제 웹상의 구성관리-라이센스키관리 화면에서 라이센스를 입력하시면 됩니다. 제가 경험해보지 못해 라이센스 파일은 쓸데없는 짓일지도 모르겠네요. 라이센스 파일부분은 제일 마지막에 수행해 보시면 되겠네요. 이와 관련된 가이드 설명이 없어서 조금 아쉽네요.
자 이제 화면이 대부분 잘 나타날 것입니다. 저의경우엔 JDBC SQL 추적기능이 중요해서(다들 중요하시겠죠?) 추가적으로 넣은 부분이 있습니다. w11.conf파일에 DB Connection유형별로 설정하는 부분이 있는데요, 이부분을 설정하시면 커넥션이 닫히지 않았다던지, 쿼리수행시간이 너무 길다던지등의 고품질의 데이터를 얻으실 수 있습니다.(같은 디렉토리의 w11.conf.ko파일을 참고하시면 주석이 한글로 되어있어 쉽게 설정 하실 수 있을것입니다.) 제 경우엔 JDBC Connection Pool을 자체적으로 관리하고있어 [유형3]에 해당하더군요. 다음과같이 설정하였습니다. 아주 자~알 되더군요.
jdbc_connection_close = com.jwdf.databasePool.DBPoolImpl.releaseConnection(Connection);com.jwdf.databasePool.DBPoolImpl.releaseConnection(Connection, PreparedStatement, ResultSet);com.jwdf.databasePool.DBPoolImpl.releaseConnection(Connection, CallableStatement, ResultSet);com.jwdf.databasePool.DBPoolImpl.releaseConnection(Connection, Statement, ResultSet);com.jwdf.databasePool.DBPoolImpl.releaseConnection(Connection, PreparedStatement);com.jwdf.databasePool.DBPoolImpl.releaseConnection(PreparedStatement, ResultSet)
5. 인증샷
[##_1C|cfile29.uf.163FD4034BDEA3B76EE8D0.jpg" alt="" width="600" />
그래프가 1초정도 간격으로 왼쪽으로 움직입니다. 보고있으면 서버가 얼마나 열심히 운동을 하고있는지 바로 알 수 있습니다. 위 그림에는 보이지는 않지만 제 경우엔 DB로 인해 순간적으로 CPU부하가 심하게 나타나더군요. 이 놈을 어떻게 때려잡느냐가 관건인데...
[##_1C|cfile22.uf.136DF00B4BDEA3B5023C69.jpg" alt="" width="600" />
장애진단화면입니다. 개발자로서 제일 감동받았던 부분이죠. 로그인 처리 할 때 ResultSet을 Close하지 않은 메쏘드가 하나 있어 잽싸게 수정해 줬습니다. 땡큐~
6. 마무리
참으로 신통하고 방통한 툴입니다. 자바개발자로서, 또 사용자로서 화면 하나하나에 얼마나 많은 노력과 고민이 있었을지 짐작이 갑니다. 지난달 신제품 발표회때 살짝 접해본 제니퍼 4.0도 빨리 설치해보고 싶군요. 제니퍼로 벌써 라이프발란스의 몇가지 알지못했던 버그들을 수정했는데요, 앞으로 남은 트라이얼기간동안 열심히 이놈을 쳐다봐야 할 것같네요. 똥~똥~똥~ 실시간 경고음 너무 무서워요. T.T