【问题标题】:CPU monitoring script not triggering properlyCPU 监控脚本未正确触发
【发布时间】:2017-05-09 14:35:26
【问题描述】:

我想知道是否有人可以帮助解决无法正确触发的原因

HOSTNAME=`hostname -s`
LOAD=25.00
CAT=/bin/cat
MAILFILE=/home/jboss/monitor.mail
MAILER=/bin/mail
mailto="bob@bob.bob"
CPU_LOAD=`sar -P ALL 1 10 |grep 'Average.*all' |awk -F" " '{print 100.0 -$NF}'`
if [[ $CPU_LOAD > $LOAD ]];
then
PROC=`ps -eo pcpu,pid -o comm= | sort -k1 -n -r | head -1`
echo -e "Please check processes on ${HOSTNAME} the value of cpu load is $CPU_LOAD%.
Highest process is: $PROC" > $MAILFILE
$CAT $MAILFILE | $MAILER -s "CPU Load is on ${HOSTNAME} is $CPU_LOAD %" $mailto
fi

这对于 sar 和 ps 似乎工作正常,但是我仍然收到电子邮件提醒,例如 CPU 负载为 3.18%。除非我遗漏了一些东西,否则它不应该触发,除非负载大于 25%。

如果负载大于 2.5% 似乎效果更好?有什么建议吗?

谢谢

【问题讨论】:

    标签: bash awk load cpu sar


    【解决方案1】:

    而不是使用:

    if [[ $CPU_LOAD > $LOAD ]];then
    

    你必须使用

    if [[ $CPU_LOAD -gt $LOAD ]]; then
    

    【讨论】:

      【解决方案2】:

      Bash 只处理整数,所以要使用更高的精度,你可以这样做:

      cpu_limit=25
      # read the 5min load-average straight from the special file on /proc
      read -r _ load_avg _ </proc/loadavg
      # multiply by 100 for precision
      load_avg=$(bc <<<"scale=0; $load_avg * 100 / 1")
      # compare numbers with (( )) instead
      if (( load_avg > cpu_limit )); then
         ...
      fi
      

      【讨论】:

        【解决方案3】:

        试试这个代码 - (测试 - 工作正常)

        $ cat f.sh
        HOSTNAME=$(hostname -s)
        LOAD=25.00
        MAILFILE=$HOME/a.txt
        MAILER=/bin/mailx
        mailto="vipinkumarr89@gmail.com"
        CPU_LOAD=$(sar -P ALL 1 10 |grep 'Average.*all' |awk -F" " '{print 100.0 -$NF}')
        if [[ $CPU_LOAD > $LOAD ]];then
        {
        PROC=$(ps -eo pcpu,pid -o comm= | sort -k1 -n -r | head -1)
        echo -e "Please check processes on ${HOSTNAME} the value of cpu load is $CPU_LOAD%.
        Highest process is: $PROC" > $MAILFILE
        cat $MAILFILE | $MAILER -s "CPU Load is on ${HOSTNAME} is $CPU_LOAD %" $mailto
        }
        fi
        

        【讨论】:

        • 所以我确实尝试了这个,它似乎做同样的事情。在 LOAD=25.00 时仍收到低于 25% 的电子邮件 请检查 上的进程,cpu 负载的值为 4.88%。最高进程为:1.1 8499 java
        • 在进行更多测试后,似乎将负载更改为 2500 而不是 25.00 似乎会在 25% 而不是 2.5% 时创建警报
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        • 2018-03-20
        • 2017-06-17
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多