como monitorar processos selecionados no host centos 5.x?

2

Eu gostaria de monitorar um grupo seleto de processos, vmware vm's, rodando no meu host centos 6. "top" me dá mais do que eu quero, pois eu posso usar -p para especificar apenas os processos e -c para obter a linha de comando completa, pois estou interessado em ver os nomes reais dos as VMs que estão sendo monitoradas. No entanto, a linha de comando completa é muito longa para ser exibida na tela. Eu pensei em escrever a saída de cima para / tmp e fazer algumas análises lá, mas aparentemente top está apenas escrevendo 80 caracteres, truncando o nome da VM.

Eu pensei que talvez eu pudesse usar 'ps' para algo semelhante, mas o uso da CPU usando essa abordagem nunca muda - como isso pode ser?

Alguma sugestão de como eu posso fazer isso?

TIA!

    
por bo gusman 25.04.2012 / 18:18

2 respostas

5

Para ser honesto, eu usaria Monit para isso. Está disponível no RPMForge via yum para sua versão particular do Linux.

Monit é uma ferramenta para monitorar processos e daemons. Geralmente isso é feito via PID, mas você também pode combinar em uma string de processo. Como as sequências de processo do servidor VMware terminam em uma especificação "vm_name.vmx", você pode definir a opção Monit para verificar essa sequência. O único exemplo de um sistema VMWare Server 1.0.x que eu tenho à mão tem UMA VM em execução, mas contanto que você saiba os nomes dos arquivos * .vmx, você pode listá-los independentemente no arquivo de configuração de monit.

Aqui está a saída de 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

Adicionando uma pequena entrada de verificação do VMWare ao arquivo de configuração do monit (crie e insira para cada VM exclusiva que você precisa monitorar) ...

check process vmware
        matching "vmware-vmx"

Isso mostra o status do que está sendo monitorado.

[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

Em seguida, há uma interface da Web para controlar processos no link

    
por 26.04.2012 / 14:29
0

Você pode usar stty para definir os cols para obter maior top output.

stty cols 500 && top

Redimensionar seu terminal redefinirá a configuração de cols e você a perderá. Você pode usar algo como o script abaixo para fazer a saída em lote para processamento adicional. Ele tenta manter a configuração antiga do cols, então você pode precisar ajustar isso dependendo do sistema (Testado no RHEL / CentOS / SL6.1)

#!/bin/bash
OLDCOLS=$(stty -a | grep columns | sed 's/.*columns \(.*\); line.*//')
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

O script é usado como ./scriptname vmware-vmx

    
por 25.04.2012 / 19:49