Я хотел бы отслеживать выбранную группу процессов, vmware vm, работающих на моем хосте centos 6. "верх" дает мне большинство из того, что я хочу, я могу использовать -p, чтобы указать только эти процессы, и -c, чтобы получить полную командную строку, поскольку я в конечном итоге заинтересован в том, чтобы увидеть фактические имена отслеживаемых виртуальных машин. Однако полная командная строка слишком длинна для отображения на экране. Я думал о том, чтобы записать вывод top в / tmp и провести там некоторый синтаксический анализ, но, по-видимому, top записывает только 80 символов, усекая имя виртуальной машины.
Я подумал, что, возможно, я мог бы использовать «ps» для чего-то подобного, но использование процессора при таком подходе никогда не меняется - как это может быть?
Любые предложения относительно того, как я могу это осуществить?
TIA!
Если честно, я бы использовал Монит для этого. Он доступен в RPMForge через yum для вашей конкретной версии Linux.
Monit - это инструмент для мониторинга процессов и демонов. Обычно это делается через PID, но вы также можете найти соответствие в строке процесса. Поскольку строки процесса сервера VMWare заканчиваются спецификацией «vm_name.vmx», вы можете настроить Monit на проверку по этой строке. Единственный пример системы VMWare Server 1.0.x, который у меня под рукой, имеет ОДНУ виртуальную машину, но если вы знаете имена файлов * .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
Добавление небольшой записи проверки VMWare в файл конфигурации monit (создание и запись для каждой уникальной виртуальной машины, которую необходимо отслеживать) ...
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
Затем есть веб-интерфейс для управления процессами на http: // имя сервера: 2812
Ты можешь использовать 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