저는 가상 머신 파크에 있는 머신 그룹에 연결하고 사용량 수준을 확인하려는 새 프로그램을 작성 중입니다. 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 운영 체제에 기본적으로 설치됩니다.
노트: 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
변경 사항이 있는지 주기적으로 확인하세요. 이를 통해 장기간에 걸쳐 평가할 수 있습니다. 가상 머신이 충돌하거나 종료되는 경우 결과를 잃지 않도록 결과를 수시로 저장할 수 있습니다.