您的位置:首页 > 运维架构 > Shell

shell脚本监控系统负载,并在负载过大时发送邮件报警

2010-11-22 16:36 861 查看
shell脚本监控系统负载,并在负载过大时发送邮件报警

#!/bin/bash

# Eamil:longkaty@sina.com

# 用途:负载监控

# 描述:shell脚本监控系统负载,并在负载过大时发送邮件报警

# 用法:./scriptname.sh

# Set up limit below

NOTIFY="6.0"

# admin user email id

EMAIL="root"

# Subject for email

SUBJECT="Alert $(hostname) load average"

# -----------------------------------------------------------------

# Os Specifc tweaks do not change anything below ;)

OS="$(uname)"

TRUE="1"

if [ "$OS" == "FreeBSD" ]; then

TEMPFILE="$(mktemp /tmp/$(basename $0).tmp.XXX)"

FTEXT='load averages:'

elif [ "$OS" == "Linux" ]; then

TEMPFILE="$(mktemp)"

FTEXT='load average:'

fi

# get first 5 min load

F5M="$(uptime | awk -F "$FTEXT" '{ print $2 }' | cut -d, -f1)"

# 10 min

F10M="$(uptime | awk -F "$FTEXT" '{ print $2 }' | cut -d, -f2)"

# 15 min

F15M="$(uptime | awk -F "$FTEXT" '{ print $2 }' | cut -d, -f3)"

# mail message

# keep it short coz we may send it to page or as an short message (SMS)

echo "Load average Crossed allowed limit $NOTIFY." >> $TEMPFILE

echo "Hostname: $(hostname)" >> $TEMPFILE

echo "Local Date & Time : $(date)" >> $TEMPFILE

# Look if it crossed limit

# compare it with last 15 min load average

RESULT=$(echo "$F15M > $NOTIFY" | bc)

# if so send an email

if [ "$RESULT" == "$TRUE" ]; then

mail -s "$SUBJECT" "$EMAIL" < $TEMPFILE

fi

# remove file

rm -f $TEMPFILE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: