Моя первая склонность здесь была бы чем-то встроенным в SAR или пакет sysstat в целом. Однако, если это действительно так, я не могу найти это решение.
Что я хотел бы увидеть, и, безусловно, желательно через sysstat, если это возможно, так это исторический журнал использования процесса (памяти, ЦП и т. д.) во многом в том же формате, что и журналы SAR (если он еще не доступен напрямую через файлы SAR). Я знаю, что программное обеспечение для мониторинга доступно, но я больше ищу в основном неинтрузивный пакет и на самом деле что-то, что можно было бы анализировать относительно интуитивно через statsd/collectd.
решение1
Запустите команду sar как фоновый процесс. Синтаксис для этого:
sar -o datafile interval count >/dev/null 2>&1 &
Все данные собираются в двоичной форме и сохраняются в файл (файл данных). Затем данные можно выборочно отображать с помощью команды sar с использованием параметра -f. Установите параметры интервала и количества, чтобы выбрать записи количества с интервалом в секунды. Если параметр количества не установлен, будут выбраны все записи, сохраненные в файле. Сбор данных таким образом полезен для характеристики использования системы за определенный период времени и определения часов пикового использования.
решение2
Вы можете использовать простой цикл while, который каждые 5 минут выводит данные об использовании ресурсов основными процессами.
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pcpu | head;
echo;
sleep 300;
done
Вышеуказанное выведет 9 лучших процессов, которые используют больше всего процессора. Чтобы получить 9 лучших процессов, которые используют больше всего памяти, используйте:
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pmem | head;
echo;
sleep 300;
done
Пример
Следующий пример вывода показывает, что Apache, несомненно, является нашим самым ресурсоемким процессом.
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
Ограничения
Очевидно, это отстой, потому что это скажет вам толькомгновенныйиспользование ресурсов в момент выполнения команды (каждые 5 минут).
В идеале он должен показывать среднее использование ресурсов за периодинтервалвремени между выходами. Но, учитывая, что этот ответ открыт уже 7 лет и нет хорошего ответа — это лучше, чем ничего.
Оставьте его включенным на ночь screen
, и к утру у вас будет более глубокое понимание (с минимальными усилиями).