서버 사용량 수준을 결정하는 데 사용되는 명령

서버 사용량 수준을 결정하는 데 사용되는 명령

저는 가상 머신 파크에 있는 머신 그룹에 연결하고 사용량 수준을 확인하려는 새 프로그램을 작성 중입니다. VM 클라이언트는 RHEL과 CentOS의 조합이며 여러 KVM 호스트에서 실행됩니다.

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

시스템 사용량을 나타내는 좋은 지표는 무엇이며 그에 따라 시스템을 평가하는 데 도움이 되는 명령은 무엇입니까?

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

시스템 사용의 경우, 머신이 사용되고 있는지, 아니면 애플리케이션이나 사용자에게 해를 끼치지 않고 종료할 수 있는지 고려하겠습니다.

이러한 예를 통해 다른 서버와 크게 다른 서버가 있는지 확인할 수 있지만 해당 서버가 사용되고 있는지는 알 수 없습니다.

답변1

감시 장치

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

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

KVM 호스트를 통해 모니터링

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

$ 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

예를 들어 위와 같은 내용은 KVM의 이름(6열)과 사용 중인 %CPU(4열)는 물론 지금까지 사용한 실제 CPU 시간(2열)과 사용 기간도 표시합니다. 경과되었습니다. 실행 중(세 번째 열). 5열에는 KVM에 할당된 RAM의 양이 표시됩니다.

KVM을 통한 게스트 모니터링

더 자세한 보기를 원한다면 실제로 각 가상 머신을 자세히 살펴보고 로컬에서 데이터를 수집해야 합니다. 좋은 데이터를 얻는 한 가지 방법은 이 도구를 사용하는 것입니다 sar. 이 패키지는 대부분의 RHEL, CentOS 및 Fedora 운영 체제에 기본적으로 설치됩니다.

노트: 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변경 사항이 있는지 주기적으로 확인하세요. 이를 통해 장기간에 걸쳐 평가할 수 있습니다. 가상 머신이 충돌하거나 종료되는 경우 결과를 잃지 않도록 결과를 수시로 저장할 수 있습니다.

관련 정보