
我正在編寫一個新程序,該程序將連接到虛擬機園區中的一組機器,並希望檢查它們的使用程度。 VM客戶端是RHEL和CentOS的組合,並在多個KVM主機上執行。
我希望能夠透過檢查它們現在的用途來找到不再需要的虛擬機器。
什麼是系統使用情況的良好指標,哪些命令可以幫助我對系統進行相應的評級?
我想,如果我結合 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
命令將返回當天的 CPU 使用率,從上午 12 點到當前時間。
例如:
$ 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
。這將為您提供有關服務上次運行時間、給定用戶上次運行哪些命令等的完整詳細資訊。
例子
用戶 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
)的變化。這使您可以在更長的時間內進行評估。您可以不時保存結果,以免在虛擬機器崩潰或關閉時丟失它們。