Comandos para determinar o nível de uso do servidor

4

Estou programando um novo programa que se conectará a um cluster de máquinas em um parque VM, e esperançosamente verificará seu nível de uso. Os clientes da VM são uma combinação do RHEL e do CentOS e são executados em vários hosts KVM.

Espero encontrar as VMs que não são mais necessárias, verificando o que elas estão sendo usadas agora.

Quais seriam bons indicadores para o uso do sistema e quais comandos poderiam me ajudar a classificar o sistema de acordo?

Eu estou pensando que se eu combinar comandos como uptime, "chkconfig --list", last e ps eu posso determinar a taxa de uso, mas em um nível muito inato.

Espero que você possa me ajudar com este enigma.

Com o uso do sistema, estou pensando se a máquina está em uso ou se pode ser desligada, sem prejudicar nenhum aplicativo ou usuário.

Com os exemplos, posso determinar se existem servidores muito diferentes dos demais, mas não seria possível afirmar se está em uso ou não.

    
por larhauga 08.05.2013 / 00:58

2 respostas

5

Monitoramento

Esta é uma questão bastante aberta. Existem vários aplicativos que você pode usar para monitorar a carga da CPU, do tráfego de rede, da E / S de arquivos do servidor, etc.

No nível mais básico, começaria monitorando a carga da CPU das VMs. Você pode monitorar isso de duas maneiras, seja nas próprias VMs ou externamente nos hosts da VM.

Monitorando pelo host KVM

Como uma VM no seu nível mais básico é apenas uma aplicação, você pode simplesmente monitorar cada VM em um servidor KVM, observando o processo qemu correspondente.

$ 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

Algo parecido com o acima, por exemplo, exibiria o nome do KVM (6ª coluna) com o% CPU sendo usado (4ª coluna), juntamente com o tempo real de CPU que eles usaram até agora (2ª coluna) e o tempo decorrido que eles estão correndo (3ª coluna). A quinta coluna mostra a quantidade de RAM alocada para o KVM.

Monitorando através dos convidados do KVM

Se você quiser uma visualização com mais detalhes, será necessário realmente pesquisar cada VM e coletar os dados dentro deles. Uma maneira de obter bons dados é através da ferramenta sar . A maioria dos sistemas operacionais RHEL, CentOS e Fedora tem esse pacote instalado por padrão.

NOTA: sar faz parte do pacote sysstat!

Sem nenhum argumento, o comando básico sar retornará a utilização da CPU para o dia atual, das 00:00 até a hora atual.

Por exemplo:

$ 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

A última linha mostra as médias gerais para cada medida correspondente. Observe também que os dados são amostrados a cada 10 minutos. Isto é claro configurável.

A ferramenta sar pode fazer muito mais do que apenas a utilização da CPU. É um pacote completo e permite que você monitore E / S de arquivos, rede, paginação de memória, etc.

Além disso, ele pode gerar os dados em formatos CSV ou XML (entre outros) e também gerar relatórios também!

O pacote é instalado

A ideia de usar chkconfig --list é como eu começaria a determinar quais serviços estão configurados em uma determinada caixa. Dependendo de como a caixa é configurada, a nossa normalmente é configurada para executar no nível de execução 3, eu usaria este comando:

$ 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

Login do usuário

Você pode usar a ferramenta ac para determinar se as pessoas estão fazendo login em um sistema e por quanto tempo.

Por exemplo:

$ 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

Mostra um detalhamento diário de quantas horas um determinado usuário fez login em um sistema.

Contabilidade do processo

Se você realmente quiser acompanhar o que está acontecendo em uma caixa do Linux, pode ativar a conta de processo. Este é o serviço /etc/init.d/psacct . Isso lhe dará detalhes completos sobre quando um serviço foi executado pela última vez, quais comandos um dado usuário executou pela última vez, etc. É praticamente o total de nove jardas.

exemplos

comandos executados pela última vez pelo usuário 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

última vez que o rm foi executado

$ 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

Por exemplo, esta última técnica pode ser usada para ver a última vez que o Apache foi executado (httpd).

O pacote psacct tem muitas outras ferramentas também. Isso é só para dar algumas idéias e começar.

Referências

por 08.05.2013 / 03:41
0

Você pode executar

ps -C qemu-kvm -o pid,time,etime,args

no host regularmente e verifique a alteração no tempo da CPU (o campo time ). Isso permite uma avaliação por um período maior. Você pode salvar os resultados de tempos em tempos para não perdê-los quando uma VM falha ou é desligada.

    
por 08.05.2013 / 02:22