Thank you for reading this post, don't forget to subscribe!
Метод 1: Скрипт Linux Shell для мониторинга загрузки процессора и отправки электронной почты
Если вы хотите получать процент использования ЦП по почте только тогда, когда система достигает заданного порога, используйте следующий скрипт
Это очень простой и понятный и однострочный скрипт.
Он вызовет электронную почту, когда ваша система достигнет 80% загрузки ЦП.
1 2 |
*/5 * * * * /usr/bin/cat /proc/loadavg | awk '{print $1}' | awk '{ if($1 > 80) printf("Current CPU Utilization is: %.2f%\n"), $0;}' | mail -s "High CPU Alert" admin@test.ru |
Примечание. Вам необходимо изменить идентификатор электронной почты вместо нашего. Кроме того, вы можете изменить пороговое значение загрузки процессора в соответствии с вашими требованиями.
Вывод: вы получите оповещение по электронной почте, аналогичное приведенному ниже.
1 2 |
Current CPU Utilization is: 80.40% |
Метод 2: Скрипт Linux Shell для мониторинга загрузки процессора и отправки электронной почты
Если вы хотите получить больше информации об использовании процессора в почтовом предупреждении, тогда используйте следующий скрипт, который включает в себя подробности процесса загрузки ЦП, основанные на верхних командах и командах ps.
Он непостоянно будет давать вам представление о том, что происходит в вашей системе.
Он вызовет электронную почту, когда ваша система достигнет 80% загрузки ЦП.
Примечание. Вам необходимо изменить идентификатор электронной почты вместо нашего. Кроме того, вы можете изменить пороговое значение загрузки процессора в соответствии с вашими требованиями.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# vi /opt/scripts/cpu-alert.sh #!/bin/bash cpuuse=$(cat /proc/loadavg | awk '{print $1}') if [ "$cpuuse" > 80 ]; then SUBJECT="ATTENTION: CPU Load Is High on $(hostname) at $(date)" MESSAGE="/tmp/Mail.out" TO="admin@test.ru" echo "CPU Current Usage is: $cpuuse%" >> $MESSAGE echo "" >> $MESSAGE echo "+------------------------------------------------------------------+" >> $MESSAGE echo "Top CPU Process Using top command" >> $MESSAGE echo "+------------------------------------------------------------------+" >> $MESSAGE echo "$(top -bn1 | head -20)" >> $MESSAGE echo "" >> $MESSAGE echo "+------------------------------------------------------------------+" >> $MESSAGE echo "Top CPU Process Using ps command" >> $MESSAGE echo "+------------------------------------------------------------------+" >> $MESSAGE echo "$(ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10)" >> $MESSAGE mail -s "$SUBJECT" "$TO" < $MESSAGE rm /tmp/Mail.out fi |
Наконец добавьте cronjob, чтобы автоматизировать это.
Он будет запускаться каждые 5 минут.
1 2 |
# crontab -e */10 * * * * /bin/bash /opt/scripts/cpu-alert.sh |
Примечание. Через 5 минут вы получите оповещение по электронной почте, поскольку запуск скрипта запланирован каждые 5 минут (но это не совсем 5 минут и зависит от времени).
Скажем например. Если ваша система достигнет предела в 8.25, вы получите оповещение по электронной почте через 5 минут. Надеюсь, теперь все ясно.
Вывод: вы получите оповещение по электронной почте, аналогичное приведенному ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
CPU Current Usage is: 80.51% +------------------------------------------------------------------+ Top CPU Process Using top command +------------------------------------------------------------------+ top - 13:23:01 up 1:43, 1 user, load average: 2.58, 2.58, 1.51 Tasks: 306 total, 3 running, 303 sleeping, 0 stopped, 0 zombie %Cpu0 : 6.2 us, 6.2 sy, 0.0 ni, 87.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 18.8 us, 0.0 sy, 0.0 ni, 81.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 50.0 us, 37.5 sy, 0.0 ni, 12.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 5.9 us, 5.9 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu4 : 0.0 us, 5.9 sy, 0.0 ni, 94.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu5 : 29.4 us, 23.5 sy, 0.0 ni, 47.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu6 : 0.0 us, 5.9 sy, 0.0 ni, 94.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu7 : 5.9 us, 0.0 sy, 0.0 ni, 94.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 16248588 total, 223436 free, 5816924 used, 10208228 buff/cache KiB Swap: 17873388 total, 17871340 free, 2048 used. 7440884 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8867 daygeek 20 2743884 440420 360952 R 100.0 2.7 1:07.25 /usr/lib/virtualbox/VirtualBoxVM --comment CentOS7 --startvm 002f47b8-2af2-48f5-be1d-67b67e03514c --no-startvm-errormsgbox 9119 daygeek 20 36136 784 R 46.7 0.0 0:00.07 /usr/bin/CROND -n 1057 daygeek 20 889808 487692 461692 S 13.3 3.0 4:21.12 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3 3098 daygeek 20 1929012 351412 120532 S 13.3 2.2 16:42.51 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 9236 -prefMapSize 184485 -parentBuildID 20190521202118 -greomni /us+ 1 root 20 188820 10144 7708 S 6.7 0.1 0:06.92 /sbin/init 818 gdm 20 199836 25120 15876 S 6.7 0.2 0:01.85 /usr/lib/Xorg vt1 -displayfd 3 -auth /run/user/120/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3 1170 daygeek 9 -11 2676516 16516 12520 S 6.7 0.1 1:28.30 /usr/bin/pulseaudio --daemonize=no 8271 root 20 I 6.7 0:00.21 [kworker/u16:4-i915] 9117 daygeek 20 13528 4036 3144 R 6.7 0.0 0:00.01 top -bn1 +------------------------------------------------------------------+ Top CPU Process Using ps command +------------------------------------------------------------------+ %CPU PID USER COMMAND 8.8 8522 daygeek /usr/lib/virtualbox/VirtualBox 86.2 8867 daygeek /usr/lib/virtualbox/VirtualBoxVM --comment CentOS7 --startvm 002f47b8-2af2-48f5-be1d-67b67e03514c --no-startvm-errormsgbox 76.1 8921 daygeek /usr/lib/virtualbox/VirtualBoxVM --comment Ubuntu-18.04 --startvm e8c32dbb-8b01-41b0-977a-bf28b9db1117 --no-startvm-errormsgbox 5.5 8080 daygeek /usr/bin/nautilus --gapplication-service 4.7 4575 daygeek /usr/lib/firefox/firefox -contentproc -childID 12 -isForBrowser -prefsLen 9375 -prefMapSize 184485 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1525 true tab 4.4 3511 daygeek /usr/lib/firefox/firefox -contentproc -childID 8 -isForBrowser -prefsLen 9308 -prefMapSize 184485 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1525 true tab 4.4 3190 daygeek /usr/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -prefsLen 9237 -prefMapSize 184485 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1525 true tab 4.4 1612 daygeek /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 184485 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1525 true tab 4.2 3565 daygeek /usr/bin/../lib/notepadqq/notepadqq-bin |