Linux에서 CPU 및 메모리를 모니터링하는 방법은 무엇입니까?

개별 프로세스 또는 시스템 전체가 CPU 또는 메모리를 얼마나 소모하는지 파악합니다.

시스템 관리자는 높은 CPU/메모리/네트워크 사용률로 인해 애플리케이션이 느려지거나 응답하지 않는 사고를 처리해야 하는 경우가 많습니다. 서버가 하나의 프로세스만 호스트하는 경우 프로세스가 모든 리소스를 소비하는 시점을 쉽게 알 수 있습니다. 그러나 여러 서비스가 실행되고 있고 어떤 서비스가 모든 리소스를 먹고 있는지 찾아야 하는 공유 서버를 상상해 보십시오.

이를 즉시 수행할 수 있는 많은 모니터링 소프트웨어가 있습니다. 그러나 이러한 솔루션이 없거나 명령 기반 솔루션을 찾고 있다면 여기로 가십시오. 그들은 모두 무료입니다!

맨 위

프로세스 개요를 보기 위해 top 또는 htop 결과를 살펴보는 것으로 시작할 수 있습니다.

아래에서 볼 수 있듯이 모든 프로세스에서 무엇을 활용하고 있는지에 대한 훌륭한 아이디어를 제공합니다. 첫 번째 것을 보면 MySQL은 CPU의 11.9%와 CPU의 2.5%를 차지합니다.

top - 11:57:33 up 0 min,  1 user,  load average: 3.69, 0.96, 0.32
Tasks: 165 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s): 21.0 us,  5.5 sy,  0.0 ni, 70.5 id,  1.7 wa,  0.0 hi,  1.3 si,  0.0 st
KiB Mem :  7637308 total,  5802888 free,   849512 used,   984908 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6495648 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 1986 netdata   20   0 1738856 191560  22948 S  11.6  2.5   0:02.30 mysqld                                                                                                         
 3021 www-data  20   0  255288  78420  55484 S   6.6  1.0   0:01.55 php-fpm                                                                                                        
 3138 www-data  20   0  253096  79780  59228 S   6.6  1.0   0:00.92 php-fpm                                                                                                        
 3153 www-data  20   0  255116  79088  56472 S   5.0  1.0   0:00.70 php-fpm                                                                                                        
 3037 www-data  20   0  257200  81088  56216 S   4.3  1.1   0:01.50 php-fpm                                                                                                        
 3048 www-data  20   0  257088  78740  55380 S   4.3  1.0   0:01.46 php-fpm                                                                                                        
 3054 www-data  20   0  254160  72168  52108 S   3.7  0.9   0:01.32 php-fpm                                                                                                        
 3135 www-data  20   0  255084  75912  54836 S   3.7  1.0   0:00.91 php-fpm                                                                                                        
 3051 www-data  20   0  254096  73804  51964 S   3.0  1.0   0:01.38 php-fpm                                                                                                        
 2962 www-data  20   0   45280   7284   3488 R   2.0  0.1   0:00.22 openresty                                                                                                      
 1062 netdata   20   0  338748  76144   6720 S   1.0  1.0   0:01.31 netdata                                                                                                        
 1702 netdata   20   0   21852   4232   2352 S   1.0  0.1   0:00.34 apps.plugin                                                                                                    
 1729 netdata   20   0   18636   3280   2764 S   0.7  0.0   0:00.05 bash                                                                                                           
 1980 netdata   20   0   62008  12896   5796 S   0.7  0.2   0:00.14 redis-server                                                                                                   
   11 root      20   0       0      0      0 I   0.3  0.0   0:00.14 rcu_sched                                                                                                      
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:00.92 dockerd                                                                                                        
 1857 root      20   0   10600   5564   4276 S   0.3  0.1   0:00.03 containerd-shim                                                                                                
 2045 root      20   0    9948   6028   5016 S   0.3  0.1   0:00.14 forego                                                                                                         
 2934 root      20   0   13616   8760   5928 S   0.3  0.1   0:00.07 docker-gen                                                                                                     
 2966 systemd+  20   0   25784   7924   2340 S   0.3  0.1   0:00.06 nginx

top은 거의 모든 Linux 배포판에 설치됩니다.

  Apple Watch에서 성가신 알림을 빠르게 끄는 방법

용의자를 식별한 후에는 위에서 본 모든 것 대신 해당 프로세스에 집중할 수 있습니다. 여전히 top 명령을 사용할 수 있지만 일부 인수가 있습니다.

프로세스 ID(PID)를 알고 있다고 가정해 보겠습니다. 아래 명령을 사용할 수 있습니다.

상단 -p $PID

top -p 3102의 예 아래

top - 11:59:56 up 3 min,  1 user,  load average: 0.72, 0.70, 0.31
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.1 us,  2.9 sy,  0.0 ni, 89.1 id,  0.3 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  7637308 total,  5802024 free,   783672 used,  1051612 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6555636 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 3102 www-data  20   0  329500  82376  60640 S   0.0  1.1   0:03.35 php-fpm

top과 함께 grep을 사용할 수도 있습니다. 아래는 Docker 사용률을 확인하는 예입니다.

[email protected]:~# top | grep docker
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.38 dockerd                                                                                                        
 2934 root      20   0   14676   9652   5928 S   0.3  0.1   0:00.54 docker-gen                                                                                                     
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.39 dockerd                                                                                                        
 1007 root      20   0 1347424  74524  38872 S   1.0  1.0   0:01.42 dockerd                                                                                                        
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.55 docker-gen                                                                                                     
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.56 docker-gen

htop

상단과 유사하지만 더 많은 정보가 있습니다. 가능한 한 프로세스 경로를 식별하는 데 편리한 명령 열이 있습니다. 그리고 그것은 또한 다채롭다.

htop은 기본적으로 설치되어 있지 않을 수 있지만, 항상 아래와 같이 할 수 있습니다.

우분투에 htop 설치

apt-get install htop

CentOS/RHEL 8.x에 htop 설치

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop

시선

이름에서 알 수 있듯이 단일 화면에서 시스템 활용도를 볼 수 있습니다. 실행 중인 프로세스는 CPU 사용률에 따라 정렬됩니다.

  웹사이트에서 사용자의 실제 위치를 볼 수 있습니까?

아래와 같이 DNF를 사용하여 CentOS 8에 글랜스를 설치할 수 있습니다.

dnf install glances

CentOS7의 경우 YUM을 사용할 수 있습니다.

yum install glances

꼭대기

위에 나열된 것과 유사하지만 나중에 볼 수 있도록 출력을 파일에 기록하는 뛰어난 기능이 있습니다. 특정 시간대에 문제가 발생하는 패턴이 있다고 상상해 보세요. crontab 또는 기타를 통해 파일에 출력을 쓰도록 예약할 수 있으며 나중에 재생할 수 있습니다.

파일에 출력을 기록하려면:

atop -w filename

그리고 재생하려면:

atop -r filename

간격, 샘플 등과 같은 여러 인수를 지원하며 매뉴얼 페이지를 살펴보는 것이 좋습니다.

실시간 문제 해결에만 관심이 있는 경우 상단에서 실행하면 아래와 같이 표시됩니다.

아래와 같이 상단에 설치할 수 있습니다.

dnf install atop

추신

이제 ps 명령어를 확인해보자.

PID와 함께 ps 명령을 사용하여 CPU 및 메모리 사용률을 인쇄할 수 있습니다.

ps -p $PID -o %cpu,%mem

출력은 다음과 같아야 합니다.

[email protected]:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
[email protected]:~#

nmon

CPU, 메모리, 디스크, 네트워크, NFS 및 가상 메모리 활용에 대한 대화형 명령줄 모니터링 도구입니다. 상위 프로세스(활용도별)를 보려면 nmon을 실행하고 t 버튼을 누릅니다.

아래와 같이 nmon을 설치할 수 있습니다.

dnf install nmon

모니터

모니터 서버 리소스, 데몬, 파일, 디렉토리, 파일 시스템 등을 모니터링하는 웹 기반 및 명령줄 오픈 소스 솔루션입니다.

Monit도 멋진 위젯을 얻었습니다.

경량 모니터링 소프트웨어. 그러나 여기에서 더 탐색할 것이 있습니다.

모니터릭스

Linux 서버를 모니터링하는 가벼운 오픈 소스 유틸리티입니다. 모니터릭스 HTTP가 내장되어 있어 웹에서 활용도 및 기타 사항을 확인할 수 있습니다. 기타 사용 보고서에는 다음이 포함됩니다.

  • 커널/온도
  • 파일 시스템 및 I/O
  • 네트워크 트래픽
  • 아파치/메일/FTP/Nginx
  • MySQL/바니시/Memcached

또한 Monitorix는 경고 구성을 제공하므로 상황이 올바르지 않을 때 알림을 받을 수 있습니다. 클라우드 기반 서버를 관리하고 사전 모니터링 솔루션을 찾고 있을 때 좋은 선택이 될 것입니다.

  iPhone 및 iPad에서 파일을 빠르게 압축하고 압축을 푸는 방법

넷데이터

넷데이터 시스템 리소스, 애플리케이션, 웹 서버, 데이터베이스, DNS, 메일, 하드웨어 센서 등에 대한 실시간 성능 모니터링입니다. 오픈 소스이며 시작하기 쉽습니다. 모든 데이터는 대화형으로 시각화할 수 있도록 수집, 저장 및 스트리밍됩니다. 데이터는 1초마다 수집되므로 아무것도 놓치지 않습니다.

많은 업계 리더들의 사랑을 받고 있습니다.

따라서 여러분이 기다리고 있는 것은 Linux 서버를 제어해 보십시오.

비탑

비탑 Linux 서버를 관리하는 데 도움이 되는 아름다운 UI와 완전히 상호작용하는 편리한 리소스 모니터입니다.

트리 보기에서 프로세스를 쉽게 시각화하고, 프로세스 목록에서 필터링하고, 많은 리소스를 관리할 수 있습니다. btop은 또한 네트워크 사용량을 보여주는 자동 크기 조정 그래프와 함께 제공됩니다.

게다가, 당신은 또한 디스크 속도와 완전한 I/O 활동을 확인할 수 있습니다.

Linux, FreeBSD 및 macOS에서 경험할 수 있는 것보다 더 많은 것이 있습니다.

결론

위의 도구들이 서버 활용도를 실시간으로 시각화하여 필요한 조치를 취하는 데 도움이 되기를 바랍니다. 방금 시스템 관리자로 시작하여 실습 교육을 받으려는 경우 다음을 확인하십시오. 유데미 코스.