Я должен послать электронное письмо каждый раз, когда загрузка ЦП идет вне 70%? Как я мог сделать это? Когда загрузка ЦП идет вне 70%, я также должен получить команды запуска и названия процесса лучших 5 процессов, подобных тому, что дает htop
Как я мог сделать это со сценарием оболочки?
Я должен послать электронное письмо каждый раз, когда загрузка ЦП идет вне 70%?
Я предлагаю, чтобы Вы использовали уже существующий контрольный плагин с этой целью. Плагин check_cpu_stats поддерживает пороги на использовании ЦП (не, загружаются). Существует несколько различных версий этого плагина там, один пример может быть найден здесь: https://github.com/Reamer/check_cpu_stats
Использование довольно легко:
$ /usr/lib/nagios/plugins/check_cpu_stats.sh -w 70,70,70 -c 80,80,80
CPU STATISTICS OK : user=7.60% system=2.35%, iowait=0.08%, idle=86.94%, nice=3.02%, steal=0.00% | CpuUser=7.60%;70;80;0; CpuSystem=2.35%;70;80;0; CpuIowait=0.08%;70;80;0; CpuIdle=86.94%;0;0;0; CpuNice=3.02%;0;0;0; CpuSteal=0.00%;0;0;0;
Пороги предупреждения устанавливаются к 70%-му использованию ЦП на пользователе, системе и iowait. Критические пороги устанавливаются к 80%-му использованию ЦП на пользователе, системе и iowait. Можно, конечно, также адаптировать пороги к среде.
Относительно части предупреждения: лучший сценарий, конечно, если у Вас уже есть этот хост/машина в существующем контроле. Но можно также использовать автономный плагин и отправить предупреждение. Пример:
/usr/lib/nagios/plugins/check_cpu_stats.sh -w 70,70,70 -c 80,80,80 > /dev/null; if [[ $? -gt 0 ]]; then echo "alert" | mailx -s "cpu alert" recipient@example.com; else echo "no alert"; fi
Я также должен получить команды запуска и названия процесса лучших 5 процессов
Для получения лучших 5 процессов (отсортированный по использованию CPU) можно использовать следующую команду (источник: https://unix.stackexchange.com/questions/13968/show-top-five-cpu-consuming-processes-with-ps):
ps aux | sort -nrk 3,3 | head -n 5
И теперь можно объединить контролирующий плагин и вывод процесса:
/usr/lib/nagios/plugins/check_cpu_stats.sh -w 70,70,70 -c 80,80,80 > /dev/null; if [[ $? -gt 0 ]]; then echo "$(ps aux | sort -nrk 3,3 | head -n 5)" | mailx -s "cpu alert" recipient@example.com; else echo "no alert"; fi