JMeter와 nmon 을 이용한 시스템/서비스 테스트 #2 / nmon 설치 및 사용
nmon, Nigel’s performance Monitor
IBM UK 의 Nigel Griffiths 가 개발한 툴로, 현 시점에서는 IBM 이 공식적으로 지원하는 (서포트 받을 수 있는) 툴은 아니다. 오리지널 nmon 은 IBM AIX 환경만 테스트하기 위해 자유롭게 다운로드 가능한 툴이었지만, 2009년 IBM 이 오픈소스화 함으로써 다양한 환경/Linux 에서 사용 가능하도록 확대 되었다.
바이너리 형태로 배포하기 때문에 별도의 컴파일이 불가능하지만, 최근 릴리즈된 Linux 에는 패키지에 포함되어 있어 설치가 간편하다. Ubuntu 의 경우 apt-get 으로, CentOS 의 경우 yum 으로 간편한 설치가 가능해 매우 편리하다. 만약 이들로 설치할 수 없다면 [이곳]을 통해 자신의 환경에 맞는 실행파일을 찾아 다운로드하자.
왜 nmon 을 사용할까? 이 글의 연계 게시물은 JMeter 이고, JMeter 의 Service Side Plug-in 을 설치하면 하나의 툴로 시스템 테스트 및 상태를 모니터링할 수 있기 때문이다. 하지만 시스템 부하 테스트를 진행하는데, ‘툴’ 자체가 모니터링에 영향을 미처 걸림돌이 되어선 곤란하기 때문에 ‘시스템’ 자체 모니터링 툴로 nmon 은 상당한 매력을 갖고 있기 때문이다.
nmon 은 두가지 형태의 모니터링을 지원한다.
- Online Mode : 실시간으로 갱신되는 시스템 환경을 모니터링하며, 필요한 값들을 제어할 수 있다.
- Capture Mode : CSV 형태로 저장되어 제공되는 엑셀 (nmon Consolidator Excel Spread-sheet Download)을 통해 그래프화 할 수 있는데, 실질적인 시스템 튜닝을 위해 많이 사용 된다.nmon이 모니터링 할 수 있는 대상 : CPU, memory, disks, adapters, networks, NFS, Kernel statistics, File-systems, Workload Manager (AIX), Workload Partitions (AIX), Top Processes (AIX 라 표시되어 있는 항목은 AIX 에서만 가능한 항목이다)
이 글은 JMeter 와 함께 시스템 부하 테스트를 진행하는데 주를 두기 때문에 Capture Mode를 먼저 다루고자 한다. 단순히 시스템 현 상황을 보는 용도 만으로는 Online Mode 도 충분하다. Capture Mode 는 nmon이 백그라운드 프로세스로 동작하며 시스템의 현재 상황을 확장자 “.nmon”을 갖는 CSV 파일이 저장되는데 주기와 횟수를 지정함으로써 일정 시간동안 시스템 변화량을 측정할 수 있다.
설치 방법은 apt-get/yum 등으로 가능하다.
sudo apt-get install nmon
1. Capture Mode
간단한 옵션으로 현재 시스템의 상황을 저장한다.
mkdir /tmp/nmon < 로그 저장폴더 nmon -s 주기 -c 횟수 -T -m /tmp/nmon -f
– s : interval (주기/초)
– c : count (횟수)
– n : Log 저장 폴더
– T : Top Process 포함 여부
10초단위로 1분간 저장한다면 -s 10 -c 6 과 같이 사용한다. (10*6=60 sec) 3초 주기로 10번 저장. 즉 30초의 데이터를 저장해 보자.
nmon -s 3 -c 10 -T -m /tmp/nmon -f ls -al /tmp/nmon ip-10-10-101-26_151110_0116.nmon
로그파일의 확장자는 .nmon으로, CSV 형식이다.
IP 와 동작 시점을 기록하기 때문에 파일 명 만으로 ‘어디서’ 언제’ 저장되었는지 구분 가능하며, 이 로그 파일은 엑셀을 통해 분석이 가능하며 VBScript로 작성된 이 엑셀 파일은 [이곳] 에서 다운로드 가능하다. 단, Excel 의 특징상 열이 65535가 한계이기 때문에 최종적으로 저장되는 데이터는 이 범주를 넘어서지 말아야 한다. 물론! 지속적으로 저장하는 방법이 있다. nmon 이 저장될 때 저장되는 시점이 파일 이름이 되기 때문에 crontab 에 적절하게 주는 것!
sudo crontab -e 0 0 * * * /usr/sbin/nmon -f -m /tmp/nmon -s 3 -c 9600 /* 3초 주기로 9600번 저장(총 28,800번)하며, 매일 0시 0분에 새로 시작한다. */
위에서 남은 로그 파일을 엑셀로 열어보자.
[Analyze nmon data] 버튼을 누르면 확장자가 기본 nmon 으로 지정되어 있고, 위에서 남긴 로그 파일 선택해 열어보자.
설명할 필요 없는 매우 직관적인 형태의 결과물을 얻을 수 있다.
2. Online Mode
리얼타임으로 현 시스템 상황을 모니터링 할 수 있다. 현재의 척도 확인용도로는 적합하나, 스트레스 테스트등에는 적합하지 않다. Capture Mode 에 비해 상대적으로 리소스를 더 차지하고(그렇다고 어마무시하게 크지는 않지만 ;; ) 네트워크 테스트를 한다면 중간에 끊길 수 있기 때문.
이 툴을 사용할 때 기본적으로 터미널의 크기는 최대 화면으로 보여주는 것이 좋다.
- 작은 화면은 내용이 잘릴 수 있다.
- 동시에 여러 내용을 표시할 수 있다.
기본적인 화면은 간단하다. c = CPU. c 는 단축키를 의미하는데, c 를 누르면 CPU 상태를 모니터링 할 수 있다. 미리 알아두면 편리한 핫키로는!
- -/+ 화면 갱신 속도를 조절한다
- V 가상메모리 상태를 보여준다
- v 힌트를 노출하거나 숨긴다.
- . 처리중인 프로세스를 보여준다
- q/x nmon 을 종료한다.
c 를 누르면 CPU 사용 상태를 보여주는데 이때 n 을 누르면 Network 상태를. V 를 누르면 가상 메모리 상태를 볼 수 있다.
이제 nmon 의 사용 방법을 익혔으니 JMeter 활용으로 넘어가자.