lar*_*uga 4 scripting rhel centos
我正在编写一个新程序,该程序将连接到 VM 公园中的一组机器,并希望检查它们的使用水平。VM 客户端是 RHEL 和 CentOS 的组合,并在多个 KVM 主机上运行。
我希望能够通过检查它们现在正在使用的内容来找到不再需要的 VM。
什么是系统使用的良好指标,哪些命令可以帮助我相应地对系统进行评级?
我在想,如果我结合诸如 uptime、“chkconfig --list”、last 和 ps 之类的命令,我可以确定使用率,但处于非常不成熟的水平。
对于系统使用,我在考虑机器是否正在使用,或者是否可以关闭,而不会损害任何应用程序或用户。
通过示例,我可以确定是否有与其他服务器有很大不同的服务器,但我无法说明它是否正在使用中。
这是一个非常开放的问题。您可以使用大量应用程序来监控服务器 CPU 的负载、网络流量、文件 I/O 等。
在最基本的层面上,我会从监控 VM 的 CPU 负载开始。您可以通过 2 种方式对其进行监控,在 VM 本身内或在 VM 主机上进行外部监控。
由于最基本级别的 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 量。
如果您想要更详细的视图,则需要实际进入每个 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
软件包还有许多其他工具。这只是给你一些想法并让你开始。
归档时间: |
|
查看次数: |
1923 次 |
最近记录: |