top of page

30가지 리눅스 (Linux) 시스템 모니터링 관리자 툴을 알아보자

이 포스팅에서는 리눅스 시스템의 정보와 성능 모니터링을 돕는 30가지의 툴들을 알아보겠습니다. 이 툴들은 다음과 같은 시스템의 성능 문제점을 찾는데 도움을 줍니다.


  • 시스템 병목현상

  • 디스크 (저장공간)의 병목현상

  • CPU와 메모리의 병목현상

  • 네트워크의 병목현상


1. top – 프로세스 액티비티 모니터링 커맨드

top 커맨드는 리눅스 프로세스들을 보여줍니다. 다이나믹한 리얼타임 뷰를 이용해 현재 구동중인 프로세스의 내역을 볼 수 있습니다. 기본적으로 CPU를 가장 많이 소비하는 프로세스 순으로 보여주고 데이터는 5초에 한번씩 리프레시 됩니다.


image

top 커맨드의 핫키 (Hot Keys):

Hot Key Usage

t 요약정보를 보여주거나 숨김

m 메모리 정보를 보여주거나 숨김

A 각 시스템 리소스 분야에서 가장 많이 소비하고 있는 프로세스를 카테고리마다 보여줌

f 상단의 인터랙티브 컨픽 스크린을 활성화 함

o 순차를 변경

r renice 커맨드를 구동함 (renice는 프로세스의 priority를 지정하는 커맨드)

k kill 커맨드를 구동함

z 컬러화면을 보여주거나 숨김


2. vmstat – 가상 메모리 정보

vmstat 커맨드는 프로세스, 메모리, 페이징, 블록 IO, 트랩과 CPU 정보를 보여줍니다.

vmstat 3

출력 예제:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ 
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 2540988 522188 5130400    0    0     2    32    4    2  4  1 96  0  0
 1  0      0 2540988 522188 5130400    0    0     0   720 1199  665  1  0 99  0  0
 0  0      0 2540956 522188 5130400    0    0     0     0 1151 1569  4  1 95  0  0
 0  0      0 2540956 522188 5130500    0    0     0     6 1117  439  1  0 99  0  0
 0  0      0 2540940 522188 5130512    0    0     0   536 1189  932  1  0 98  0  0
 0  0      0 2538444 522188 5130588    0    0     0     0 1187 1417  4  1 96  0  0
 0  0      0 2490060 522188 5130640    0    0     0    18 1253 1123  5  1 94  0  0

메모리 이용 정보

vmstat -m

액티브, 인액티브 메모리 페이지 정보

vmstat -a

스왑 공간을 사용하는 프로세스 정보

smem

또는

pgrep memcached
grep --color VmSwap /proc/48440/status

image

3. w – 로그인 한 유저와 유저가 사용하는 프로세스 정보

w 커맨드는 로그인 한 유저와 그 유저가 사용하는 프로세스 정보를 볼 수 있습니다.

w username
w vivek

출력 예제:

17:58:47 up 5 days, 20:28,  2 users,  load average: 0.36, 0.26, 0.24
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.1.3.145       14:55    5.00s  0.04s  0.02s vim /etc/resolv.conf
root     pts/1    10.1.3.145       17:43    0.00s  0.03s  0.00s w

4. uptime – 리눅스 시스템이 얼마동안 가동되고 있는지 알려주는 커맨드

서버가 얼마나 오랫동안 가동이 되고 있는지 알려주는 커맨드입니다. 현재 시간, 가동시간, 로그인한 유저수, 그리고 지난 1분, 5분, 15분 평균 시스템 로드도 보여 줍니다.

uptime

출력 예제:

 18:02:41 up 41 days, 23:42,  1 user,  load average: 0.00, 0.00, 0.00

1의 로드 값은 최적의 값입니다. 로드 값은 시스템마다 다를 수 있습니다. 1 CPU의 시스템은 1~3, 그리고 SMP 시스템은 6~10 로드 값이 받아들일수 있는 값입니다.


5. ps – 리눅스 프로세스 정보를 보여줌

ps 커맨드를 이용하면 현재 가동되는 프로세스의 정보를 스냅샷 리포트로 볼 수 있습니다. 모든 프로세스를 보려면 -A 파라미터를 다음과 같이 입력합니다:

ps -A

출력 예제:

  PID TTY          TIME CMD
    1 ?        00:00:02 init
    2 ?        00:00:02 migration/0
    3 ?        00:00:01 ksoftirqd/0
    4 ?        00:00:00 watchdog/0
    5 ?        00:00:00 migration/1
    6 ?        00:00:15 ksoftirqd/1
....
.....
 4881 ?        00:53:28 java
 4885 tty1     00:00:00 mingetty
 4886 tty2     00:00:00 mingetty
 4887 tty3     00:00:00 mingetty
 4888 tty4     00:00:00 mingetty
 4891 tty5     00:00:00 mingetty
 4892 tty6     00:00:00 mingetty
 4893 ttyS1    00:00:00 agetty
12853 ?        00:00:00 cifsoplockd
12854 ?        00:00:00 cifsdnotifyd
14231 ?        00:10:34 lighttpd
14232 ?        00:00:00 php-cgi
54981 pts/0    00:00:00 vim
55465 ?        00:00:00 php-cgi
55546 ?        00:00:00 bind9-snmp-stat
55704 pts/1    00:00:00 ps

ps 커맨드는 top과 비슷하지만 더 많은 정보를 보여줍니다. 다음의 예제를 보겠습니다.

더 많은 정보 출력

ps -Al

엑스트라 풀 정보 모드 (각 프로세스에 보내어진 커맨드라인 파라미터 정보들까지 보여줌):

ps -AlF

Thread 정보 (LWP 와 NLWP)

ps -AlFH

프로세스 후 Thread 정보

ps -AlLm

모든 프로세스를 출력

ps ax
ps axu

프로세스 트리 (process tree) 정보 출력

ps -ejH
ps axjf
pstree

리눅스 프로세스 보안 정보

ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM

Vivek이라는 유저 이름으로 가동되는 모든 프로세스 정보

ps -U vivek -u vivek u

ps 커맨드의 출력 포맷 수정

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan

Lighttpd라는 프로세스의 Process ID 출력

ps -C lighttpd -o pid=

또는

pgrep lighttpd

또는

pgrep -u vivek php-cgi

프로세스 ID 55977의 이름

ps -p 55977 -o comm=

메모리를 가장 많이 사용하는 Top 10 프로세스

ps -auxf | sort -nr -k 4 | head -10

CPU를 가장 많이 사용하는 Top 10 프로세스

ps -auxf | sort -nr -k 3 | head -10

6. free – 리눅스 서버 메모리 사용 정보

free 커맨드는 남은 메모리, 사용되고 있는 메모리, swap 메모리, 그리고 커널이 사용하고 있는 버퍼의 총량을 보여줍니다.

free

출력 예제:

            total       used       free     shared    buffers     cached
Mem:      12302896    9739664    2563232          0     523124    5154740
-/+ buffers/cache:    4061800    8241096
Swap:      1052248          0    1052248

7. iostat – 평균 CPU 사용량과 디스크 활동 정보를 모니터

iostat 커맨드는 CPU와 디스크의 정보를 볼수 있습니다.

iostat

출력 예제:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 	06/26/2009
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.50    0.09    0.51    0.03    0.00   95.86
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              22.04        31.88       512.03   16193351  260102868
sda1              0.00         0.00         0.00       2166        180
sda2             22.04        31.87       512.03   16189010  260102688
sda3              0.00         0.00         0.00       1615

8. sar – 시스템 활동을 모니터와 리포트

네트워크 카운터를 보려면:

sar -n DEV | more

실시간 사용 정보:

sar 4 5

RHEL 5 출력 예제:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 		06/26/2009
06:45:12 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
06:45:16 PM       all      2.00      0.00      0.22      0.00      0.00     97.78
06:45:20 PM       all      2.07      0.00      0.38      0.03      0.00     97.52
06:45:24 PM       all      0.94      0.00      0.28      0.00      0.00     98.78
06:45:28 PM       all      1.56      0.00      0.22      0.00      0.00     98.22
06:45:32 PM       all      3.53      0.00      0.25      0.03      0.00     96.19
Average:          all      2.02      0.00      0.27      0.01      0.00     97.70

9. mpstat – 멀티 프로세서 사용 정보

mpstat 커맨드는 멀티 프로세서 정보를 보여줍니다 (0번이 첫번째 프로세서)

각 프로세서당 평균 사용 정보:

mpstat -P ALL

출력 예제:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)	 	06/26/2009
06:48:11 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
06:48:11 PM  all    3.50    0.09    0.34    0.03    0.01    0.17    0.00   95.86   1218.04
06:48:11 PM    0    3.44    0.08    0.31    0.02    0.00    0.12    0.00   96.04   1000.31
06:48:11 PM    1    3.10    0.08    0.32    0.09    0.02    0.11    0.00   96.28     34.93
06:48:11 PM    2    4.16    0.11    0.36    0.02    0.00    0.11    0.00   95.25      0.00
06:48:11 PM    3    3.77    0.11    0.38    0.03    0.01    0.24    0.00   95.46     44.80
06:48:11 PM    4    2.96    0.07    0.29    0.04    0.02    0.10    0.00   96.52     25.91
06:48:11 PM    5    3.26    0.08    0.28    0.03    0.01    0.10    0.00   96.23     14.98
06:48:11 PM    6    4.00    0.10    0.34    0.01    0.00    0.13    0.00   95.42      3.75
06:48:11 PM    7    3.30    0.11    0.39    0.03    0.01    0.46    0.00   95.69     76.89

10. pmap – 메모리 사용 정보

pmap 커맨드는 프로세스의 메모리 맵을 보여주는 커맨드입니다. 이 커맨드를 이용하면 메모리의 병목현상을 발견하는데 도움을 받을 수 있습니다.

pmap -d PID

프로세스 ID 47394의 메모리 정보를 보려면 다음의 커맨드를 입력합니다:

pmap -d 47394

출력 예제:

47394:   /usr/bin/php-cgi
Address           Kbytes Mode  Offset           Device    Mapping
0000000000400000    2584 r-x-- 0000000000000000 008:00002 php-cgi
0000000000886000     140 rw--- 0000000000286000 008:00002 php-cgi
00000000008a9000      52 rw--- 00000000008a9000 000:00000   [ anon ]
0000000000aa8000      76 rw--- 00000000002a8000 008:00002 php-cgi
000000000f678000    1980 rw--- 000000000f678000 000:00000   [ anon ]
000000314a600000     112 r-x-- 0000000000000000 008:00002 ld-2.5.so
000000314a81b000       4 r---- 000000000001b000 008:00002 ld-2.5.so
000000314a81c000       4 rw--- 000000000001c000 008:00002 ld-2.5.so
000000314aa00000    1328 r-x-- 0000000000000000 008:00002 libc-2.5.so
000000314ab4c000    2048 ----- 000000000014c000 008:00002 libc-2.5.so
.....
......
..
00002af8d48fd000       4 rw--- 0000000000006000 008:00002 xsl.so
00002af8d490c000      40 r-x-- 0000000000000000 008:00002 libnss_files-2.5.so
00002af8d4916000    2044 ----- 000000000000a000 008:00002 libnss_files-2.5.so
00002af8d4b15000       4 r---- 0000000000009000 008:00002 libnss_files-2.5.so
00002af8d4b16000       4 rw--- 000000000000a000 008:00002 libnss_files-2.5.so
00002af8d4b17000  768000 rw-s- 0000000000000000 000:00009 zero (deleted)
00007fffc95fe000      84 rw--- 00007ffffffea000 000:00000   [ stack ]
ffffffffff600000    8192 ----- 0000000000000000 000:00000   [ anon ]
mapped: 933712K    writeable/private: 4304K    shared: 768000K

마지막 행이 가장 중요합니다:

  • mapped: 933712K 맵된 메모리 총량

  • writeable/private: 4304K 프라이빗 주소 공간의 양

  • shared: 768000K 다른 프로세스들과 공유되는 메모리 양


11. netstat – 네트워크 정보와 모니터링 툴

netstat 커맨드를 이용하여 네트워크 커넥션, 라우팅 테이블, 인터페이스 정보, 마스커레이드 커넥션, 멀티캐스트 멤버쉽 정보를 볼수 있습니다. 이제는 사용을 안하는 커맨드입니다. 그대신에 다음의 ss 커맨드를 이용합니다.

커멘드 예제:

netstat -tulpn
netstat -nat

12. ss – 네트워크 정보

ss 커맨드로 소켓 정보를 불러올수 있습니다. netstat과 비슷하지만 netstat은 오래된 툴이라 이제는 사용을 안합니다.

TCP 정보

ss -t -a

UDP 정보

ss -u -a

13. iptraf – 실시간 네트워크 정보

이 커맨드는 인터랙티브하면서도 컬러가 있어서 사용하기 편한 툴입니다. TCP, UDO, ICMP, OSPF, ethernet 로드, 노드, IP checksum 에러등의 유용한 정보를 볼 수 있습니다. 다음과 같은 정보가 있습니다:

  • TCP 커넥션에 따른 네트워크 트래픽 정보

  • 네트워크 인터페이스에 따른 IP 트래픽 정보

  • 프로토콜에 따른 네트워크 트래픽 정보

  • TCP / UDP 포트와 패킷 사이즈에 따른 네트워크 트래픽 정보

  • Layer2 주소에 따른 네트워크 트래픽 정보


image
네트워크 인터페이스에 따른 IP 트래픽 정보

image
TCP 커넥션에 따른 네트워크 트래픽 정보

14. tcpdump – 디테일한 네트워크 트래픽 분석

TCP/IP 프로토콜을 이해한다면 유용한 툴입니다.

DNS 트래픽 정보:

tcpdump -i eth1 'udp port 53'

포트 80의 IPv4 HTTP 패킷 정보:

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

202.54.1.5의 FTP 세션 정보:

tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'

192.168.1.5으로의 모든 HTTP 세션 정보 출력:

tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'

wireshark를 이용하여 파일 정보 출력:

tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

15. iotop – 리눅스 I/O 모니터

리눅스의 커널을 이용하여 I/O 사용 정보를 보여주는 커맨드입니다.

sudo iotop

image


16. htop – 인터랙티브 프로세스 뷰어

htop은 무료에 오픈소스 뷰어입니다. top 보다 사용하기 편리하고 쉽습니다.

htop

image


17. atop – 고급 리눅스 시스템 & 프로세스 모니터

atop은 리눅스와 유닉스 시스템의 인터랙티브하고 강력한 모니터링 툴입니다. 성능면으로 중요한 하드웨어 리소스의 정보를 보여줍니다. 쉽고 빠르게 CPU, 메모리, 디스크와 네트워크 성능을 점검할수 있습니다

atop

image

18. ac 와 lastcomm

로그인 활동 정보를 모니터 하는 커맨드입니다. psacct이나 acct 패키지에 있는 이 커맨드는 다음과 같은 정보를 볼 수 있습니다:

  • ac command : 유저의 커넥트 시간 정보

  • lastcomm command : 마지막으로 가동된 커맨드 정보

  • sa command : 어카운팅 요약 정보


19. monit – 프로세스 관리

monit은 무료에 오픈소스 소프트웨어로 프로세스 관리를 도와주는 툴입니다. 실패한 프로세스를 다시 시작할 수도 있습니다. Systemd나 daemontools등의 툴과 비슷합니다.


20. nethogs - 가장 많은 bandwidth를 사용하는 PID를 찾는 커맨드

sudo nethogs

image

21. iftop – bandwidth 사용 내역을 호스트 단위로 보여주는 커맨드

sudo iftop

image

22. vnstat – 콘솔 기반의 네트워크 트래픽 모니터

시간별, 일별 그리고 월별로 네트워크 트래픽을 기록및 저장을 하는 툴입니다.

vnstat

image

23. nmon – 리눅스 시스템 관리자, 튜닝과 벤치마킹 툴

nmon 는 리눅스 시스템 관리자의 튜닝 툴입니다. CPU, 메모리, 네트워크, 디스크, 파일 시스템, NFS 등의 정보를 관리합니다.

nmon

image

24. glances – 리눅스 관리 툴

클라이언트 / 서버 모드가 가능한 관리 툴입니다.

glances

image

25. strace – 시스템 서버 콜 관리

이 커맨드는 웹서버를 디버깅시에 도움이 되는 툴입니다.


26. /proc/ 파일 시스템 – 다양한 리눅스 커널 정보

/proc 파일 시스템은 디테일하고 다양한 하드웨어 정보를 볼 수 있습니다.

몇 가지 예제:

cat /proc/cpuinfo
cat /proc/meminfo
cat /proc/zoneinfo
cat /proc/mounts

27. Nagios – 리눅스 서버와 네트워크 모니터링

알림기능이 갖추어진 호스트, 네트워크 장비와 서비스를 관리할 수 있는 툴입니다.


28. Cacti – 웹 기반의 리눅스 모니터링 툴

네트워크, CPU, 메모리, 로그인 한 유저, 아파치, DNS 서버등을 웹 기반으로 관리할 수 있는 툴입니다.


29. KDE System Guard – 실시간 리눅스 시스템 리포팅과 그래핑

SSH세션을 이용하여 KDE 데스크탑을 관리할 수 있는 애플리케이션입니다. 클라이언트 / 서버 아키텍쳐이고 다양한 센서 정보를 시각화 해주는 툴입니다.


image

30. Gnome 리눅스 시스템 모니터

KDE System Guard 같이 파워풀하지는 않지만 유용하고 기본적인 정보를 보여주는 툴입니다.


  • 시스템 하드웨어와 소프트웨어 정보

  • 리눅스 커널 버전

  • GNOME 버전

  • 하드웨어

  • 설치된 메모리

  • 프로세서와 스피드 정보

  • 시스템 스테이터스

  • 현재 디스크 사용량 정보

  • 프로세스 내역

  • 메모리와 swap space

  • 네트워크 사용 정보

  • 파일 시스템


image

참고:


pngegg (11)_result.webp

<Raank:랑크 /> 구독 하기 : Subscribe

감사합니다! : Thanks for submitting!

bottom of page