如何监控 centos 5.x 主机上的选择进程?

如何监控 centos 5.x 主机上的选择进程?

我想监控在我的 centos 6 主机上运行的一组选定的进程,vmware vm。“top”给我最多我想要的是,我可以使用 -p 来指定那些进程,使用 -c 来获取完整的命令行,因为我最终想要看到被监控的虚拟机的实际名称。但是,完整的命令行太长,无法显示在屏幕上。我考虑将 top 的输出写入 /tmp 并在那里进行一些解析,但显然 top 只写了 80 个字符,截断了虚拟机的名称。

我想也许我可以使用“ps”来做类似的事情,但是使用这种方法的 CPU 使用率从未改变 - 怎么会这样?

关于我该如何实现这一点,有什么建议吗?

短暂性失眠!

答案1

说实话,我会用监控为此。您可以通过 yum 从 RPMForge 获取适用于您特定 Linux 版本的软件。

Monit 是一种用于监控进程和守护进程的工具。通常通过 PID 进行监控,但您也可以匹配进程字符串。由于 VMWare Server 进程字符串以“vm_name.vmx”规范结尾,因此您可以将 Monit 设置为针对该字符串进行检查。我手头上唯一的 VMWare Server 1.0.x 系统示例只有一个 VM 正在运行,但只要您知道 *.vmx 文件的名称,就可以在 monit 配置文件中单独列出它们。

以下是 的输出monit procmatch vmx

[root@abc ~]# monit procmatch vmx
List of processes matching pattern "vmx":
------------------------------------------
        /usr/lib/vmware/bin/vmware-vmx -# product=2;name=VMware Server;version=2.0.1;buildnumber=156745;licensename=VMware GSX Server for Linux;licenseversion=3.0 build-156745; -@ pipe=/tmp/vmhsdaemon-0/vmx226abb1efa53200b;readyEvent=52 /vmware/abc_Web/abc_Web.vmx
------------------------------------------
Total matches: 1

向 monit 配置文件中添加一个小型 VMWare 检查条目(为您需要监控的每个唯一 VM 创建并输入)...

check process vmware
        matching "vmware-vmx"

这显示了正在监控的状态。

[root@abc ~]# monit status

Process 'vmware-vmx'
  status                            running
  monitoring status                 monitored
  pid                               25171
  parent pid                        1
  uptime                            992d 8h 5m 
  children                          0
  memory kilobytes                  1107796
  memory kilobytes total            1107796
  memory percent                    18.1%
  memory percent total              18.1%
  cpu percent                       0.0%
  cpu percent total                 0.0%
  data collected                    Thu Apr 26 04:49:12 2012

然后,有一个 Web 界面可以控制http://服务器名称:2812

在此处输入图片描述

在此处输入图片描述

答案2

您可以使用stty设置列来获得更大的top输出。

stty cols 500 && top

调整终端大小将重置 cols 设置,您将丢失它。您可以使用类似下面的脚本进行批量输出以供进一步处理。它会尝试保留旧的 cols 设置,因此您可能需要根据系统进行调整(在 RHEL/CentOS/SL6.1 上测试)

#!/bin/bash
OLDCOLS=$(stty -a | grep columns | sed 's/.*columns \(.*\); line.*/\1/')
stty cols 500
IFS="
"
PIDS=$(ps axuww | grep "$1" | grep -v grep | awk '{print $2}' | tr '\n' ',' | sed 's/^/-p/;s/,$//')
OUTPUT=$(top -bcn1 $PIDS)
echo "$OUTPUT"
stty cols $OLDCOLS

脚本的使用方式如下./scriptname vmware-vmx

相关内容