Mi primera inclinación aquí sería algo integrado en SAR, o el paquete sysstat en general. Sin embargo, si ese es el caso, parece que no puedo encontrar esta solución.
Lo que me gustaría ver, y absolutamente preferiblemente a través de sysstat si es posible, es un registro histórico del uso del proceso (memoria, CPU, etc.) en un formato muy similar al de los registros SAR (si no está disponible directamente a través de archivos SAR de alguna manera). Sé que hay software de monitoreo disponible, pero más bien estoy buscando un paquete en su mayoría no intrusivo y, de hecho, algo que pueda analizarse de manera relativamente intuitiva a través de statsd/collectd.
Respuesta1
Ejecute el comando sar como proceso en segundo plano. La sintaxis para esto es:
sar -o datafile interval count >/dev/null 2>&1 &
Todos los datos se capturan en formato binario y se guardan en un archivo (archivo de datos). Luego, los datos se pueden mostrar selectivamente con el comando sar usando la opción -f. Configure los parámetros de intervalo y recuento para seleccionar registros de recuento en intervalos de segundos. Si el parámetro de recuento no está configurado, se seleccionarán todos los registros guardados en el archivo. La recopilación de datos de esta manera es útil para caracterizar el uso del sistema durante un período de tiempo y determinar las horas pico de uso.
Respuesta2
Puede utilizar un bucle while tonto que imprime el uso de recursos de los procesos principales cada 5 minutos.
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pcpu | head;
echo;
sleep 300;
done
Lo anterior generará los 9 procesos principales que utilizan la mayor parte del uso de CPU. Para obtener los 9 procesos principales que utilizan más memoria, utilice:
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pmem | head;
echo;
sleep 300;
done
Ejemplo
El siguiente ejemplo muestra que Apache es claramente nuestro proceso que más consume CPU.
Sun Jan 28 23:46:28 UTC 2024
PID PPID CMD %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.7
12878 11432 /usr/sbin/httpd -DFOREGROUN 0.2 2.5
23903 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.4
898 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
902 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
910 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
8397 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
9263 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
Sun Jan 28 23:51:28 UTC 2024
PID PPID CMD %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.6
12878 11432 /usr/sbin/httpd -DFOREGROUN 0.2 2.4
23903 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.4
898 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
902 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
910 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
8397 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
9263 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
Limitaciones
Obviamente esto apesta porque sólo te dirá elinstantáneouso de recursos en el momento exacto en que se ejecuta el comando (cada 5 minutos).
Idealmente, le indicaría el uso promedio de recursos durante elintervalode tiempo entre las salidas. Pero, dado que esta respuesta ha estado abierta durante 7 años y no hay una buena respuesta, es mejor que nada.
Déjelo funcionando durante la noche en una screen
sesión y por la mañana tendrá una mejor visión (con un mínimo esfuerzo).