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

lar*_*uga 4 scripting rhel centos

我正在编写一个新程序,该程序将连接到 VM 公园中的一组机器,并希望检查它们的使用水平。VM 客户端是 RHEL 和 CentOS 的组合,并在多个 KVM 主机上运行。

我希望能够通过检查它们现在正在使用的内容来找到不再需要的 VM。

什么是系统使用的良好指标,哪些命令可以帮助我相应地对系统进行评级?

我在想,如果我结合诸如 uptime、“chkconfig --list”、last 和 ps 之类的命令,我可以确定使用率,但处于非常不成熟的水平。

对于系统使用,我在考虑机器是否正在使用,或者是否可以关闭,而不会损害任何应用程序或用户。

通过示例,我可以确定是否有与其他服务器有很大不同的服务器,但我无法说明它是否正在使用中。

slm*_*slm 6

监控

这是一个非常开放的问题。您可以使用大量应用程序来监控服务器 CPU 的负载、网络流量、文件 I/O 等。

在最基本的层面上,我会从监控 VM 的 CPU 负载开始。您可以通过 2 种方式对其进行监控,在 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
Run Code Online (Sandbox Code Playgroud)

例如,上面的内容将显示 KVM 的名称(第 6 列)和正在使用的 %CPU(第 4 列),以及他们迄今为止使用的实际 CPU 时间(第 2 列)和它们经过的时间'一直在运行(第 3 列)。第 5 列显示分配给 KVM 的 RAM 量。

通过 KVM 来宾监控

如果您想要更详细的视图,则需要实际进入每个 VM 并在本地收集其中的数据。获得相当好的数据的一种方法是通过该工具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
Run Code Online (Sandbox Code Playgroud)

最后一行显示了每个相应度量的总体平均值。另请注意,数据每 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
Run Code Online (Sandbox Code Playgroud)

用户登录

您可以使用该工具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
Run Code Online (Sandbox Code Playgroud)

显示给定用户登录系统的每日细目。

流程核算

如果您真的很想跟踪 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
Run Code Online (Sandbox Code Playgroud)

上次运行 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
Run Code Online (Sandbox Code Playgroud)

例如,最后一项技术可用于查看 Apache 上次运行 (httpd) 的时间。

psacct软件包还有许多其他工具。这只是给你一些想法并让你开始。

参考