Linux Shell脚本通过电子邮件警报监视CPU使用率
有许多开源监视工具可用于监视Linux系统的性能,当系统达到给定的阈值限制时,这些工具将发送电子邮件警报。
它监视所有内容,例如CPU利用率,内存利用率,交换利用率,磁盘空间利用率等等。
如果您只有少数几个系统并且要监视它们,那么编写一个小的Shell脚本就可以实现。
在本教程中,我们添加了两个Shell脚本来监视Linux系统上的CPU使用率。
当系统达到给定的阈值时,它将触发一封具有相应电子邮件ID的邮件。
方法-1:Linux Shell脚本通过电子邮件警报监视CPU使用率
如果要在系统达到给定阈值时通过邮件警报获取CPU利用率百分比,请使用以下脚本。
这是一个非常简单明了的单行脚本。
当您的系统达到80%CPU使用率时,它将触发一封电子邮件。
*/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" daygeek@gmail.com
注意:请根据您的要求更改电子邮件ID和CPU使用率阈值。
输出:您将收到类似于以下的电子邮件警报。
Current CPU Utilization is: 80.40%
方法2:Linux Shell脚本通过电子邮件警报监视CPU使用率
如果要在邮件警报中获取有关CPU利用率的更多信息。
然后使用以下脚本,该脚本包括基于top Command和ps Command的top CPU利用率过程详细信息。
这将立即使您了解系统上正在发生什么。
当您的系统达到80%CPU使用率时,它将触发一封电子邮件。
注意:请根据您的要求更改电子邮件ID和CPU使用率阈值。
# 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="daygeek@gmail.com"
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分钟运行一次。
# crontab -e
*/10 * * * * /bin/bash /opt/scripts/cpu-alert.sh
注意: 由于脚本计划每5分钟运行一次,因此您将每隔5分钟收到一次电子邮件警报
例如,如果您的系统在8.25分钟后达到给定的限制,那么您将在第二个周期(即10分钟(第二个5分钟的周期)之后)收到电子邮件警报
输出:您将收到类似于以下的电子邮件警报。
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
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任