用於確定伺服器使用等級的命令

用於確定伺服器使用等級的命令

我正在編寫一個新程序,該程序將連接到虛擬機園區中的一組機器,並希望檢查它們的使用程度。 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)的變化。這使您可以在更長的時間內進行評估。您可以不時保存結果,以免在虛擬機器崩潰或關閉時丟失它們。

相關內容