[Centos 7] process management tools (프로세스 관리 도구) - htop, monit, Nmon

2022. 11. 21. 16:49리눅스(Linux)

$ htop

   - https://www.tecmint.com/htop-linux-process-monitoring/

   - HTOP는 가장 유용한 real-time interactive Linux Process Monitoring Tool

   - Windows의 작업관리자와 비슷한 개념

   - top보다 향상된 GUI와 편리한 기능

   - 리눅스에서 시스템 사용량 즉 CPU사용량, 메모리 사용량 등을 어느 정도 GUI로 보여주는 프로그램

   - HTOP third-party tool, 리눅스 시스템에서 제공하지 않기에 Package Manager를 이용하여 별도로 설치

   - 대부분의 리눅스 시스템에서 Default Package Manager로 설치가 가능

 

설치 및 실행 CentOS7/8

# sudo yum install epel-release
# sudo yum install htop
# htop

 

기능

   - 프로세스 선택을 커서나, 마우스를 사용

   - pstree, top을 함께 보는 기능

   - 선택된 프로세스를 죽이거나 우선순위를 변경

   - 특정 프로세스 이름으로 검색, 필터링하여 현황을 볼 수 있음

   - 선택된 프로세스의 ‘Isof’ 명령 결과를 볼 수 있다

 

- 왼쪽 상단에 CPU, swap 메모리, 메모리 사용률이 표현.

1초마다 한번 갱신

F1 ~ F10까지 단축키가 있고 단축키 마다 기능이 정해져 있다.

 

단축키별 기능

F1 htop의 도움말을 볼 수 있으며, 단축키의 기능을 알 수 있다.
F2 설정, 설정에서는 상단에 보여줄 CPU 메모리에 대한 정보를 추가/제거 할 수 있으며, 디스플레이 옵션 설정도 가능하다.
F3 F3 또는 “ / ” 눌러 해당 프로세스를 검색할 수 있다.
F4 원하는 프로세스만 모니터링 할 수 있는 기능 (grep과 유사)
F5 pstree 명령어와 같은 기능으로 프로세스의 부모 자식 관계를 트리 형태로 보여주는 기능이며, 한 번 더 키를 입력하면 트리를 보여 주거나 그 반대 기능을 합니다.“+”.”-” 키를 이용해 트리를 펼치거나 접을 수 있다.
F6 프로세스를 CPU 메모리,사용자,우선순위, 프로세스 이름 등 원하는 방식으로 정렬하여 보다 쉽게 모니터링 할 수 있다.
F7 프로세스의 우선 순위을 바꾸는 단축키
F8
F9 프로세스를 종료 시키는 단축키입니다. 보통 프로세스를 종료 시키려면ps명령어로 해당 PID를 찾아 kill -9 PID 명령어로 종료 시킵니다. htop에서 해 당 프로세스를 선택 후 F9 또는 “k”키를 입력하여 해당 프로세스를 종료시킬 수 있다.
F10 htop을 종료
l 그 프로세스가 열고 있는 파일들을 볼 수 있다.
u 특정 사용자의 프로세스만 볼 수 있다.
k 현재 또는 선택된 프로세스를 종료
M 메모리 사용량으로 프로세스를 정렬
P CPU 사용량으로 프로세스를 정렬
 

프로세스 정보

프로세스 명령어 설명
PID 프로세스의 프로세스 ID 번호
USER 프로세스의 소유자
PR 프로세스의 우선순위
NI 우선순위에 영향을 주는 프로세스의 nice
VIRT 프로세스가 사용 중인 가상 메모리 양
RES 프로세스가 사용 중인 물리 RAM의 양 (단위는 킬로바이트)
SHR 프로세스가 사용 중인 공유 메모리 양
S 프로세스의 현재 상태
(zombied, sleeping, running, uninterrupredly sleeping, traced)
%CPU 프로세스가 프로세서를 사용한 시간의 백분율
%MEM 프로세스가 사용 중인 물리 RAM의 백분율
TIME+ 프로세스가 프로세서를 사용한 시간
 

# F1 - 각 단축키 별 기능을 설명해준다.

# F2

 

<Meters>

Left Column == 상단 왼쪽에 있는 속성 ( CPU, Mem Swp )

Right column == 상단 오른쪽에 있는 속성 ( Task counter, Uptime, Clock )

속성을 추가하고 싶으면 Available meters에서 가져와 사용하면 됨.

< Left column에 Battery 추가장면 캡쳐 >
<배경색 지정>
 
 

# F3 - 원하는 프로세스를 찾아서 검색할 수 있다.

 

# F4 - htop을 제외한 나머지 실행 중인 파일을 Filtering 한다.

 

# F5

  - 정렬 방식을 정한다

  - pstree구조로 보거나 Sorted된 구조로 정렬한다. ‘+’ ‘-’ 키를 사용해서 트리를 펼치거나 접을 수 있다.

# F6 - 프로세스를 원하는 방식으로 정렬하여 보기 쉽게 모니터링 할 수 있다.

 

# F7, F8

   - F7, F8 - NI(Nice) : 프로세스의 우선 순위를 바꾸는 단축키

   - F7 = NI(Nice) 값을 줄여 우선순위를 올리는 기능

   - F8 = NI(Nice) 값을 올려 우선순위를 내리는 기능

     즉 해당 프로세스를 선택하여 F7 또는 “]” 키를 사용하여 높이며,

    ‘F8’ 키 또는 ‘]’를 사용하여 우선 순위를 내릴 수 있음.

 
 
 

# F9 - sleep 프로세스를 검색해서 찾은 후 SIGKILL으로 프로세스를 종료해준다.

 

 

$ Monit

   - https://www.tecmint.com/how-to-install-and-setup-monit-linux-process-and-services-monitoring-program/

   - Monit은 웹 기반의 프로세스 관리 도구이고 오픈 소스이다

   - 자동으로 프로세스, 프로그램, 파일, 디렉터리, 허가, 체크섬, 파일 시스템 등을 관리 및 모니터링 한다

   - Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH 같은 리눅스 기반 시스템 | 서비스를 모니터링 하는데 사용하며 시스템 관리자에게 정확하고 유용한 모니터링 기능을 제공한다

   - 모니터링 정보는 CLI나 기본 HTTP(S)를 사용한 Web Interface를 통해 확인이 가능하다

   - Web Interface를 사용하기 위해선 기본적으로 ApacheNginx 같은 시스템이 설치되어 있어야 한다

 

기능

   - Monit은 프로세스를 시작할 수 있으며, 반응이 없을 시 Restart, 리소스 사용량이 증가할 시 종료도 가능

   - 또한 파일, 디렉터리, 파일 시스템, Checksum, 파일 크기, TimeStamp 등의 변화를 모니터링 하는 데에도 사용 가능

   - 원격지 HostTCP/IP Port, Server Protocol, Ping 통신 상태를 실시간 확인이 가능

   - Monit은 특이사항을 log file의 모두 저장하고, 치명적 에러 발생시 경보를 주고 이를 회복

 

설치 CentOS7/8

# yum install epel-release  
# yum install monit
 

monit 설정

   - Monit 설정파일은 가독성이 높고 사용자 친화적으로 제작되어서 설정 난이도는 상당히 쉬운 편

   - log 파일은 /var/log/monit에 저장된다.

   - Web interface를 사용하기 위해 port2812로 사용된며 Web Interface기능을 사용하기 위해서 설정 파일을 수정, 메인 설정파일은 /etc/monitrc -> CentOS7 기준

#vi /etc/monitrc

#vi /etc/monitrc

   - 이후 해당 영역을 활성화 시키고, IP address, domain name, allow user, change user info 등의 영역을 수정한다.

# /etc/init.d/monit start
   - 해당 명령어로 monit 실행 후, "http://localhost:2812"로 접근이 가능하다.
   - user name 은 "admin" 비밀번호는 "monit"으로 접속할 수 있다. -> 160번 라인에서 수정 가능
   - 이후 모니터링 할 프로그램은 /etc/monitrc 파일 하단에 추가하여 관리가 가능하다.
   
EX )
Apache :
check process httpd with pidfile /var/run/httpd.pid
group apache
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host 127.0.0.1 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout

MySQL :
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
   - 프로그램 소스 추가 이후 # monit –t 명령어를 통해 에러 유무를 확인 가능하다
   
 # monit -t
 New Monit id: bd0592dde14cccfc9adac243bef374df
 Stored in '/root/.moint.id'
Control file syntax OK
   - 에러 없음을 확인하고 monit을 재 시작한다.

# etc/init.d/monit restart
   - monit 서비스가 시작되면 log 파일을 확인 가능하다
 
# tail  /var/log/monit

 

$ Nmon

   - https://www.tecmint.com/nmon-analyze-and-monitor-linux-system-performance/

   - Nmon(Nigel's performance Monitor)CPU, Memory, DiskUsage, Network, Top Processes, NFS, Kernel 등과 같은 퍼포먼스 관련 요소들을 모니터링하는데 사용하는 유틸리티, Online Mode Capture 모드가 있다

   - Online Mode는 실시간 모니터링을 하는데 사용

   - Capture Mode는 추후 작업을 위해 csv파일을 저장할 때 사용

 

설치 및 실행 CentOS7/8

# yum install epel-release
# yum install nmon
# nmon
 

- 해당 화면에서 하단의 키 정보를 통해 원하는 정보를 확인 가능하다

 

 

 

: CPU

- 'c' 키를 통해 CPU performance statistics를 확인 가능하다

 

 

 
 : Network Statistics

- 'n' 키를 통해 네트워크 상태를 확인 가능하다

 
: Disk I/O Graphs

- 'd' 키를 통해 디스크 정보를 확인 가능하다.

 

: Top Process

- 't' 키를 통해 현재 실행중인 top process 정보를 확인 가능하다.
- 기존 리눅스의 'top' 명령어와 유사하다.
 

 

: Kernel Information

- 'k' 키를 통해 System 커널 정보를 간략하게 확인할 수 있다.

 

: System Information

- 'r' 키를 통해서 시스템 정보를 확인할 수 있다

- 해당 화면에서는 하드웨어 구조, 운영체제 버전, 리눅스 버전, CPU 와 같은 정보를 확인 가능하다.

 

 
: File System Statistics

 

- 'j' 키를 통해 파일 시스템 정보를 확인 가능하다.

- 해당 화면을 통해 파일 시스템의 사이즈, 사용 공간, 파일 시스템 유형, 마운트 포인트를 확인 가능하다.

 
 

: NFS

- 'N' 키를 통해 NFS 데이터를 수집 및 확인할 수 있다

 

Data Capture Mode

# nmon –f –s 13 –c 30
   - 원하는 정보를 화면에 출력하는 것이 아닌, 파일로 저장하는 기능
   - 해당 명령어 실행 후 작업 디렉토리에 .nmon 확장자를 가진 파일이 생성된 것을 확인 가능
 
 * option Explanation
-f : 데이터를 출력하는 것이 아닌 파일로 저장하라는 의미
-s [n] : n 초 마다 데이터를 캡쳐하는 것을 의미
-c [n] : n 개의 data points / snap shots을 생성한다는 의미