Comandos para determinar el nivel de uso del servidor

Comandos para determinar el nivel de uso del servidor

Estoy escribiendo un script para un nuevo programa que se conectará a un grupo de máquinas en un parque de máquinas virtuales y, con suerte, comprobará su nivel de uso. Los clientes de VM son una combinación de RHEL y CentOS y se ejecutan en varios hosts KVM.

Espero poder encontrar las máquinas virtuales que ya no son necesarias, verificando para qué se están utilizando ahora.

¿Cuáles serían buenos indicadores del uso del sistema y qué comandos podrían ayudarme a calificar el sistema en consecuencia?

Estoy pensando que si combino comandos como uptime, "chkconfig --list", last y ps puedo determinar la tasa de uso, pero a un nivel muy inexacto.

Con el uso del sistema, estoy pensando en si la máquina está en uso o si podría apagarse sin dañar ninguna aplicación o usuario.

Con los ejemplos puedo determinar si hay servidores que son muy diferentes al resto, pero no sabría afirmar si está en uso o no.

Respuesta1

Supervisión

Esta es una pregunta bastante abierta. Hay toneladas de aplicaciones que puedes usar para monitorear la carga de la CPU de un servidor, el tráfico de red, la E/S de archivos, etc.

En el nivel más básico, comenzaría monitoreando la carga de CPU de las máquinas virtuales. Puede monitorear esto de dos maneras, ya sea dentro de las propias máquinas virtuales o externamente en los hosts de las máquinas virtuales.

Monitoreo a través del host KVM

Dado que una VM en su nivel más básico es solo una aplicación, simplemente puede monitorear cada VM en un servidor KVM observando su proceso qemu correspondiente.

$ 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 como lo anterior, por ejemplo, mostraría el nombre del KVM (sexta columna) con el % de CPU en uso (cuarta columna), junto con el tiempo real de CPU que han usado hasta ahora (segunda columna) y el tiempo transcurrido. Has estado corriendo (tercera columna). La quinta columna muestra la cantidad de RAM asignada al KVM.

Monitoreo a través de los invitados KVM

Si desea una vista más detallada, deberá acceder a cada VM y recopilar los datos dentro de ellas localmente. Una forma de obtener datos bastante buenos es a través de la herramienta sar. La mayoría de los sistemas operativos RHEL, CentOS y Fedora tienen este paquete instalado de forma predeterminada.

NOTA: sar¡Es parte del paquete sysstat!

Sin ningún argumento, el sarcomando básico devolverá la utilización de la CPU para el día actual, desde las 12 a. m. hasta la hora actual.

Por ejemplo:

$ 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

La última línea le muestra los promedios generales para cada medida correspondiente. Observe también que los datos se muestrean cada 10 minutos. Por supuesto, esto es configurable.

La sarherramienta puede hacer mucho más que simplemente utilizar la CPU. Es un paquete completo y le permite monitorear la E/S de archivos, redes, paginación de memoria, etc.

Además, puede generar los datos en formatos CSV o XML (entre otros) y también puede generar informes.

Instalaciones de paquetes

Su idea de usar chkconfig --listes cómo comenzaría a determinar qué servicios están configurados en un cuadro determinado. Dependiendo de cómo esté configurada la caja, las nuestras generalmente están configuradas para ejecutarse en el nivel de ejecución 3, yo usaría 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

Inicio de sesión del usuario

Puede utilizar la herramienta acpara determinar si las personas inician sesión en un sistema y durante cuánto tiempo.

Por ejemplo:

$ 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

Muestra un desglose diario de cuántas horas un usuario determinado estuvo conectado a un sistema.

Contabilidad de procesos

Si realmente desea rastrear lo que sucede en una máquina Linux, puede habilitar la cuenta de proceso. Este es el servicio /etc/init.d/psacct. Esto le brindará detalles completos sobre cuándo se ejecutó un servicio por última vez, qué comandos ejecutó por última vez un usuario determinado, etc. Son prácticamente los nueve metros completos.

ejemplos

comandos ejecutados por última vez por el usuario 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

la última vez que se ejecutó 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

Por ejemplo, esta última técnica podría usarse para ver la última vez que se ejecutó Apache (httpd).

El psacctpaquete también tiene muchas otras herramientas. Esto es sólo para darle algunas ideas y comenzar.

Referencias

Respuesta2

Tu puedes correr

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

en el host regularmente y verifique el cambio en el tiempo de CPU (el timecampo). Eso le permite una evaluación durante un período más amplio. Puede guardar los resultados de vez en cuando para no perderlos cuando una máquina virtual falla o se apaga.

información relacionada