用于确定服务器使用级别的命令

用于确定服务器使用级别的命令

我正在编写一个新程序,该程序将连接到虚拟机园区中的一组机器,并希望检查它们的使用级别。 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)的变化。这使您可以在更长的时间内进行评估。您可以不时保存结果,以免在虚拟机崩溃或关闭时丢失它们。

相关内容