서버 사용량을 판단하는 명령어

서버 사용량을 판단하는 명령어

VM 파크에 있는 컴퓨터 클러스터에 연결하고 사용량 수준을 확인하는 새 프로그램을 스크립팅 중입니다. VM 클라이언트는 RHEL과 CentOS의 조합이며 여러 KVM 호스트에서 실행됩니다.

현재 어떤 용도로 사용되고 있는지 확인하여 더 이상 필요하지 않은 VM을 찾을 수 있기를 바랍니다.

시스템 사용량에 대한 좋은 지표는 무엇이고 그에 따라 시스템을 평가하는 데 도움이 될 수 있는 명령은 무엇입니까?

나는 uptime, "chkconfig --list", last 및 ps와 같은 명령을 결합하면 사용률을 결정할 수 있지만 매우 부정확한 수준이라고 생각합니다.

시스템 사용과 관련하여 애플리케이션이나 사용자에게 해를 끼치지 않고 시스템이 사용 중인지 또는 종료될 수 있는지 생각하고 있습니다.

예제를 통해 나머지 서버와 많이 다른 서버가 있는지 확인할 수 있지만 사용 중인지 여부는 알 수 없습니다.

답변1

모니터링

이것은 꽤 광범위한 질문입니다. 서버의 CPU 로드, 네트워크 트래픽, 파일 I/O 등을 모니터링하는 데 사용할 수 있는 수많은 애플리케이션이 있습니다.

가장 기본적인 수준에서는 VM CPU 로드를 모니터링하는 것부터 시작합니다. VM 자체 내에서 또는 VM 호스트 외부에서 두 가지 방법으로 이를 모니터링할 수 있습니다.

KVM 호스트를 통한 모니터링

가장 기본적인 수준의 VM은 단지 애플리케이션이므로 해당 qemu 프로세스를 관찰하여 KVM 서버의 각 VM을 간단히 모니터링할 수 있습니다.

$ ps -C qemu-kvm -o pid,time,etime,pcpu,args|perl -lane 'printf "%-7s %-12s %-12s %-5s %-5s %-s\n", @F[0..3,9,13]'
PID     TIME         ELAPSED      %CPU        
3860    11:37:32     85-10:32:43  0.5   512   mungr
4005    3-22:34:33   85-10:32:25  4.6   512   cobbler
4447    4-20:11:27   85-10:31:14  5.6   2048  mercury
6788    02:28:58     54-08:59:04  0.1   1024  xwiki
23916   1-03:46:02   80-09:51:47  1.4   512   fan
32539   02:17:48     1-08:50:54   6.9   1024  visualstudio

예를 들어 위와 같은 내용은 사용 중인 %CPU(4번째 열)와 함께 KVM의 이름(6번째 열)과 지금까지 사용한 실제 CPU 시간(2번째 열) 및 경과 시간을 표시합니다. 실행 중입니다(3번째 열). 다섯 번째 열에는 KVM에 할당된 RAM의 양이 표시됩니다.

KVM 게스트를 통한 모니터링

더 자세한 내용을 보려면 실제로 각 VM을 살펴보고 로컬에서 데이터를 수집해야 합니다. 꽤 좋은 데이터를 얻는 한 가지 방법은 도구를 이용하는 것입니다 sar. 대부분의 RHEL, CentOS 및 Fedora OS에는 이 패키지가 기본적으로 설치되어 있습니다.

메모: sarsysstat 패키지의 일부입니다!

인수가 없으면 기본 sar명령은 오전 12시부터 현재 시간까지 당일의 CPU 사용률을 반환합니다.

예를 들어:

$ date
Tue May  7 21:31:54 EDT 2013

$ sar
Linux 2.6.35.14-106.fc14.x86_64 (grinchy)       05/07/2013      _x86_64_        (4 CPU)

12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM     all     24.86      0.00      3.98      6.01      0.00     65.16
12:20:01 AM     all     25.12      0.00      3.98      5.98      0.00     64.93
...
...
09:20:01 PM     all     36.06      0.00      5.00      4.95      0.00     54.00
09:30:01 PM     all     35.40      0.00      4.97      4.66      0.00     54.97
Average:        all     22.29      0.08      4.37      4.80      0.00     68.46

마지막 줄에는 해당하는 각 측정값에 대한 전체 평균이 표시됩니다. 또한 데이터는 10분마다 샘플링됩니다. 물론 이는 구성 가능합니다.

sar도구는 단순한 CPU 활용 이상의 작업을 수행할 수 있습니다. 완전한 패키지이며 파일 I/O, 네트워킹, 메모리 페이징 등을 모니터링할 수 있습니다.

또한 데이터를 CSV 또는 XML 형식으로 생성할 수 있으며 보고서도 생성할 수 있습니다!

패키지 설치

당신이 사용하려는 아이디어 chkconfig --list는 주어진 상자에 어떤 서비스가 구성되어 있는지 결정하기 시작하는 방법입니다. 상자 설정 방법에 따라 우리 상자는 일반적으로 런레벨 3에서 실행되도록 설정되며 다음 명령을 사용합니다.

$ chkconfig --list |grep 3:on
abrtd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
avahi-daemon    0:off   1:off   2:off   3:on    4:on    5:on    6:off
...
...
vboxdrv         0:off   1:off   2:on    3:on    4:on    5:on    6:off
vboxweb-service 0:off   1:off   2:on    3:on    4:on    5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

사용자의 로그인

이 도구를 사용하면 ac사람들이 시스템에 로그인하고 있는지, 얼마나 오랫동안 로그인하는지 확인할 수 있습니다.

예를 들어:

$ ac -pd
    sam                                  0.15
Apr 28  total        0.15
    sam                                  0.32
Apr 29  total        0.32
    sam                                  0.00
Apr 30  total        0.00
    sam                                  0.01
    joeuser                              0.00
May  3  total        0.01
    sam                                  1.54
May  5  total        1.54
    sam                                  0.01
Today   total        0.01

특정 사용자가 시스템에 로그인한 시간에 대한 일일 분석을 표시합니다.

프로세스 회계

Linux 상자에서 일어나는 일을 정말로 추적하고 싶다면 프로세스 계정을 활성화할 수 있습니다. 이것이 바로 서비스입니다 /etc/init.d/psacct. 그러면 서비스가 마지막으로 실행된 시간, 특정 사용자가 마지막으로 실행한 명령 등에 대한 전체 세부 정보가 제공됩니다. 거의 9야드에 해당합니다.

사용자 vivek이 마지막으로 실행한 명령

$ lastcomm vivek
userhelper        S   X vivek  pts/0      0.00 secs Mon Nov 13 23:58
userhelper        S     vivek  pts/0      0.00 secs Mon Nov 13 23:45
rpmq                    vivek  pts/0      0.01 secs Mon Nov 13 23:45
rpmq                    vivek  pts/0      0.00 secs Mon Nov 13 23:45
rpmq                    vivek  pts/0      0.01 secs Mon Nov 13 23:45
gcc                     vivek  pts/0      0.00 secs Mon Nov 13 23:45

마지막으로 rm이 실행되었을 때

$ lastcomm rm
rm                S     root     pts/0      0.00 secs Tue Nov 14 00:39
rm                S     root     pts/0      0.00 secs Tue Nov 14 00:39
rm                S     root     pts/0      0.00 secs Tue Nov 14 00:38

예를 들어, 이 마지막 기술은 Apache가 마지막으로 실행된 시간(httpd)을 확인하는 데 사용될 수 있습니다.

패키지 psacct에는 다른 많은 도구도 포함되어 있습니다. 이것은 단지 여러분에게 몇 가지 아이디어를 제공하고 시작하는 것입니다.

참고자료

답변2

당신은 실행할 수 있습니다

ps -C qemu-kvm -o pid,time,etime,args

정기적으로 호스트에 접속하여 CPU 시간(필드 time)의 변화를 확인하십시오. 이를 통해 더 긴 기간에 걸쳐 평가할 수 있습니다. VM이 충돌하거나 종료될 때 결과가 손실되지 않도록 때때로 결과를 저장할 수 있습니다.

관련 정보