본문 바로가기

Programming Practice/Shell & Server Management

모니터링 tool

1. NMON

1) NMON 이란?

 - Nigel's performance MONitor

 - A free tool to analyze AIX and Linux performance

 - nmon is a tool for viewing & collecting system data

   * AIX :  Closed source / Built in as part of topas

   * Linux : Open Source / Download and install from / get the right one for your distribution

cf. 종료 시 다음 record를 저장하고 종료되도록 설정

   * AIX : kill -s SIGUSR2 <pid>

     Linux : kill -s USR2 <pid>

※ kill -s 시그널명 <pid>

kill 할 때 signal 주기

- software interrupts / inter-process communication

- interrupts normal flow of process and delivers notification

- signals 에 대한 handler 

  등록 O : that routine is executed

  등록 X : process execute the default process handler

- signals can be sent with the kill command


2) 활용

ㄱ. On screen

   : console, telnet, putty / every 2 seconds / nmon 치고, 이후 옵션 주기 (옵션은 여러개를 동시에 줄 수 있다)

   ex) nmon 엔터 cl

       => 현재 CPU 사용 현황과 long term CPU 모니터링

 

ㄴ. Save the data to a comma seperated file for analysis and longer term data capture

   a. download & install

       Linux 의 경우 nmon 을 download 받아서 install 한다. install 위치는 보통 /usr/bin/nmon 


   b. setting

   : crontab 에서 nmon 을 실행하며, 파일저장위치, 파일별 기록 주기(초단위), 기록 횟수 설정 (기록 횟수는 생성되는 nmon 파일 사이즈를 고려해서 설정한다. 보통 12시간 단위로, 하루 당 2개의 파일이 생성되도록 설정한다.)

   ex) /usr/bin/nmon -ft -m /home/nmon -s 20 -c 2160

       - 파일저장위치 : /home/nmon

       - 파일별 기록 주기 : 60초

       - 기록 횟수 : 2160 (=2160*20/ (60*60) = 12시간)

       * crontab 에서 설정한 시작 시각이 nmon data 기록 시작 시각이 된다. 중복해서 2개의 파일에 기록되지 않도록, crontab 시작 시각을 잘 설정해야 함. 예를 들어 12시간 동안 기록되게 한다면, crontab 설정에서 9,21 * * * * nmon data 생성 shell (9시, 21시에 수행. 9시와 21시는 12시간 차)


   c. analyze

     - ftp 로 nmon 파일을 local 로 내리고, nmon analyzer를 통해 분석한 결과를 excel 파일로 생성 (nmon analyzer 는 excel macro 파일과 java swing 파일이 있으며, 인터넷에서 무료로 다운로드 가능)


2. Visualvm

1) 사용

어플리케이션에 JMX port 가 열려있을 때, java 관련 사항 모니터링 가능

2) Visualvm프로그램 사용

https://visualvm.java.net/ 에서 무료로 다운로드가 가능하다.


3. Core dump 분석

1) 생성 시기

프로그램에 crash 가 발생하거나, 비정상적으로 종료됐을 때 Core Dump 가 생성된다. 

2) 용도

diagnosing, debugging

3) 구성

시스템에서 어떤 프로그램이 구동 중이었고, 또 어떤 환경일 때 프로그램 내 crash 발생 혹은 프로그램 비정상 종료가 됐는지 확인할 수 있는 사항

ㄱ. recorded state of working memory

ㄴ. program state (processor registers) : program counter, stack pointer, memory management information, other processor, operating system flags


4. TCP dump 분석

1) TCP dump 설정

* 기본적으로 TCP dump 파일은 TCP packet이 들어올 때마다 파일에 누적해서 작성을 하기 때문에 계속 프로세스가 떠있어야 하고, 적절한 파일 관리 및 삭제 정책이 있어야 한다. 

예시 설정을 가지고 의미를 분석해보고자 한다.

 nohup tcpdump -i bond0 -n -nn -C 200 -W 60 -w /root/pcap/호스트명_bond0_ -z root 'host IP 주소 and tcp port port번호' > /dev/null 2>&1 &

ㄱ. 계속해서 프로세스를 수행하게 하기 위해서 nohup 으로 TCP dump 파일 생성 명령 수행

ㄴ. 파일 삭제 및 관리 정책 설정

 옵션

의미 

-C 200 

파일 사이즈가 200MB가 넘을 경우, 기존 파일을 닫고 새 파일을 연다.

-W 60 

총 TCP dump 파일 개수를 60개로 설정. 60개가 넘어갈 경우 맨 처음 만들어진 파일을 overwrite

-w /root/pcap/호스트명_bond0_ 

w 옵션 뒤의 위치에 숫자 00, 01, 02 ... 등을 붙여 생성 

-Z root 

root 계정으로 접속했을 때만 접근 가능 

ㄷ. tcp dump 관련 tcp 정보 설정

 옵션

의미 

-i bond0

listen on interface bond0

: bond0 interface 에 arrive/depart 하는 패킷을 기록한다. 

참고로, 서버의 여러 NIC (Network Interface Card)를 묶어 bond로 만든다. bond 는 bandwidth를 증가시키지 위한 목적이다.

-'host IP주소 and tcp port port번호'

총 TCP dump 파일 개수를 60개로 설정. 60개가 넘어갈 경우 맨 처음 만들어진 파일을 overwrite

* 일반적으로 평상 시에는 네트워크 장비(ex. L4 스위치)에서만 TCP dump를 떨어뜨리고, 업무 서버에서는 TCP dump를 떨어뜨리지 않는다. 많이 부하가 발생하고, TCP dump 가 장애를 유발할 수 있기 때문이다. 업무 서버에서는 꼭 필요할 때만 TCP dump를 떨어뜨린다.

ㄹ. 성능 향상

 옵션

의미 

- n

address 를 hostname으로 전환하지 않는다. (DNS 조회하지 않음으로 성능 향상)

- nn

port 와 protocol을 name으로 전환하지 않는다.