<code>#!/bin/bash</code>
<code>#Author:yanconggod</code>
<code>#date:2017-01-19</code>
<code>#version:1.0</code>
<code># 使用 uptime 命令监控系统负载</code>
<code>POSTFIX_PATH=</code><code>"/usr/sbin/postfix"</code>
<code>MAILX_PATH=</code><code>"/usr/bin/mailx"</code>
<code>Email=</code><code>"[email protected]"</code>
<code># 获取本机IP地址</code>
<code>IP=`</code><code>ifconfig</code> <code>enp2s0|</code><code>grep</code> <code>'\binet\b'</code><code>|</code><code>awk</code> <code>'{print $2}'</code><code>`</code>
<code># 格式化时间显示</code>
<code>DATE=`</code><code>date</code> <code>"+%Y-%m-%d %H:%M"</code><code>`</code>
<code># 声明整型变量</code>
<code>declare</code> <code>-i CPU_NUM Loads ave</code>
<code># 获取当前主机 CPU 核心数</code>
<code>CPU_NUM=`</code><code>grep</code> <code>-c </code><code>'model name'</code> <code>/proc/cpuinfo</code><code>`</code>
<code># 获取当前系统15分钟内 CPU 平均负载率值(取个位数)</code>
<code>Loads=`uptime|</code><code>awk</code> <code>'{print $10}'</code><code>|</code><code>awk</code> <code>-F</code><code>'.'</code> <code>'{print $1}'</code><code>`</code>
<code># 计算单核心15分钟内平均负载率</code>
<code>(( ave = Loads / CPU_NUM ))</code>
<code># 取上面计算结果的个位数</code>
<code>average=`</code><code>echo</code> <code>$ave|</code><code>awk</code> <code>-F </code><code>'.'</code> <code>'{print $1}'</code><code>`</code>
<code>#</code>
<code>if</code> <code>[ ! -f </code><code>"$POSTFIX_PATH"</code> <code>-o ! -f </code><code>"$MAILX_PATH"</code> <code>];</code><code>then</code>
<code> </code><code>yum </code><code>install</code> <code>-y postfix mailx</code>
<code> </code><code>systemctl start postfix && systemctl </code><code>enable</code> <code>postfix</code>
<code>fi</code>
<code># 当单核心15分钟负载率值高于 1 发送报警邮件</code>
<code>if</code> <code>[ $average -gt 1 ];</code><code>then</code>
<code> </code><code>echo</code> <code>-e </code><code>"告警: 系统负载过高!!!\n时间: $DATE\n服务器IP: $IP\n当前负载率: $Loads"</code> <code>\</code>
<code> </code><code>| mail -s </code><code>"系统负载过高"</code> <code>$Email</code>
<code></code>
本文转自 yanconggod 51CTO博客,原文链接:http://blog.51cto.com/yanconggod/1893161