
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에는 이 패키지가 기본적으로 설치되어 있습니다.
메모: sar
sysstat 패키지의 일부입니다!
인수가 없으면 기본 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이 충돌하거나 종료될 때 결과가 손실되지 않도록 때때로 결과를 저장할 수 있습니다.