有很多开源监控工具可用于监控Linux系统性能,当系统达到给定的阈值限制时,它将发送电子邮件警报。它监视CPU利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。如果你只有很少的系统并且想要监视它们,那么编写一个小的shell脚本可以实现这一点。在本文中,我们添加了两个shell脚本来监视Linux系统上的CPU利用率。当系统达到给定阈值时,它将触发邮件到相应的电子邮件ID,即到达设置的CPU利用率时发送电子邮件通知用户。
方法一: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" ywnz@qq.com
注意:你需要更改电子邮件ID,而不是我们的电子邮件ID,此外,你可以根据需要更改CPU利用率阈值。
输出:你将收到类似下面的电子邮件提醒:
Current CPU Utilization is: 80.40%(即当前CPU利用率为:80.40%)
方法二:Linux Shell脚本监视CPU利用率,达到设置的CPU利用率时发送电子邮件
如果要在邮件警报中获取有关CPU利用率的更多信息。
当你的系统达到80%的CPU利用率时,它将触发电子邮件。
注意:你需要更改电子邮件ID,而不是我们的电子邮件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="ywnz@qq.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来自动执行此操作&#xff0c;它将每5分钟运行一次&#xff1a;
# crontab -e
*/10 * * * * /bin/bash /opt/scripts/cpu-alert.sh
注意&#xff1a;由于脚本计划每5分钟运行一次&#xff0c;因此你将在5分钟后收到电子邮件警报(但它不完全是5分钟&#xff0c;这取决于时间)&#xff0c;比如说&#xff0c;如果你的系统达到8.25的限制&#xff0c;那么你将在另外5分钟内收到电子邮件警报。
输出&#xff1a;你将收到类似下面的电子邮件提醒&#xff0c;非常的详细&#xff0c;如下图所示&#xff1a;
相关主题