Мне нужно автоматически отлаживать внезапные пики нагрузки. Мы уже отслеживаем с помощью nagios, таких как проверочные скрипты, но пики нагрузки бывают редкими и короткими.
Я ищу демона, который проверяет загрузку каждые N секунд и при возникновении проблем сообщает что-то вроде ps aux --forest
(и iotop --batch)
Графики, созданные, например, munin здесь не помогает, так как мне нужно определить процессы, вызывающие нагрузку.
Среди множества возможностей для локального мониторинга процесса (выберите свой яд) является контролировать, Я делаю что-то подобное в /etc/monit.d/system.conf
на машинах centos;
check system localhost
if loadavg (1min) > 6 then alert
if loadavg (5min) > 6 then alert
if memory usage > 90% then alert
if cpu usage (user) > 90% then alert
if cpu usage (system) > 75% then alert
if cpu usage (wait) > 75% then alert
Я полагаю, что вы можете быть более агрессивными с проверками, поэтому вы можете настроить демон на более частое выполнение проверок, может быть, каждый 30 секунд пока вы не определите проблему и, следовательно, не воспользуетесь /etc/monit.conf
что-то вроде этого;
set daemon 30
set mailserver localhost
#set alert user@gmail.com but not on { instance }
set alert user@gmail.com
include /etc/monit.d/*
set httpd port 2812
allow 127.0.0.1
Если monit не предоставляет достаточно информации в почтовом предупреждении по умолчанию, вы можете настроить monit для выполнения пользовательских сценариев в таких условиях предупреждения;
check system localhost
if loadavg (1min) > 6 then exec "/bin/bash -c '/usr/bin/top -n1 -b | /bin/mail -s top-output userXXX@gmail.com'"
if loadavg (5min) > 6 then exec "/bin/bash -c '/usr/bin/top -n1 -b | /bin/mail -s top-output userXXX@gmail.com'"
if cpu usage (user) > 90% then exec "/bin/bash -c '/usr/bin/top -n1 -b | /bin/mail -s top-output userXXX@gmail.com'"
(очевидно, зависит от настройки почтовой команды, но вместо этого вы можете использовать локальный корень и просто проверить его вручную)
perf
это способ пойти, он обычно устанавливается по умолчанию (linux-tools
в Debian).
Использовать perf top
чтобы посмотреть на вашу проблему в интерактивном режиме, затем используйте perf stat -p PID
уточнить по PID. Посмотрите вики, чтобы узнать больше: https://perf.wiki.kernel.org/index.php/Main_Page