shell要求:
用shell写一个内存监控脚本,使用超过1%并发邮件告警
shell实验思路:
1.free -m  查看当前内存使用情况表
内存监控与邮件告警
注释:
Mem:内存的使用情况总览表
totel:机器总的物理内存 。单位为:M
used: 用掉的内存
free:空闲的物理内存。
2.算取百分比
3.设置每隔一个时间段发送一次邮件告警,做计划任务

第一.先写邮件脚本
【安装邮件组件】
[[email protected] ~]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
[[email protected] ~]# tar -zxvf sendEmail-v1.56.tar.gz 
[[email protected] ~]# cp sendEmail-v1.56/sendEmail /usr/local/bin/
[[email protected] ~]# chmod 755 /usr/local/bin/sendEmail
[[email protected] ~]# vi /opt/sendEmail.sh
#!/bin/bash
 

#脚本的日志文件
LOGFILE="/tmp/Email.log"
:>"$LOGFILE"
exec 1>"$LOGFILE"
exec 2>&1

SMTP_server='smtp.qq.com'                                     # SMTP服务器,变量值需要自行修改
username='[email protected]'                             # 用户名,变量值需要自行修改
password='password'                                                  # 密码(QQ邮箱用的是授权码),变量值需要自行修改
from_email_address='[email protected]'             #### 发件人Email地址,变量值需要自行修改
to_email_address="$1"                                                   # 收件人Email地址,tang传入的第一个参数
message_subject_utf8="$2"                                        # 邮件标题,tang传入的第二个参数
message_body_utf8="$3"                                              # 邮件内容,tang传入的第三个参数

#转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"

#转换邮件内容为GB2312,解决收到邮件内容乱码
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"

#发送邮件
sendEmail='/usr/local/bin/sendEmail'
set -x
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312


[[email protected] ~]# chmod +x /opt/sendEmail.sh

[[email protected] ~]#  /opt/sendEmail.sh   [email protected]  测试   测试

注释:
 /opt/sendEmail.sh(脚本路径)
  [email protected](发件人邮箱地址)
 测试(第一个测试为邮件标题)
 测试(第二个测试为邮件内容)
 二:算取百分比
 我们先在命令行输入以下内容,算出内存使用率为10%

内存监控与邮件告警

编写算取百分比的脚本
vim  jiankong.sh
#!/bin/bash
a=`free -m |awk '/Mem:/ {print int($3/($3+$4)*100)}'`
if [ $a -gt 1 ]
then
  /opt/sendEmail.sh [email protected] "内存报警" "已使用内存$a%"
fi
保存退出之后添加执行权限
chmod +x jiankong.sh
./jiankong.sh

内存监控与邮件告警

稍等一会后,你的收件人邮箱就会收到你的内存邮件告警。

内存监控与邮件告警

三:设置每隔一段时间就发送一次邮件内存告警
yum install -y crontabs            ##yum安装crontabs
vim /etc/crontab                   ###进入vi编辑器编辑crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

#For details see man 4 crontabs

#Example of job definition:
#.---------------- minute (0 - 59)
#|  .------------- hour (0 - 23)
#|  |  .---------- day of month (1 - 31)
#|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
#|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
#|  |  |  |  |
#*  *  *  *  * user-name  command to be executed
*/5 * * * * root /usr/local/bin/jiankong.sh           ##这边是按照分、时、日、月、周来进行划分,这边规划的是每隔五分钟发送一次邮件告警,后面跟的是监控脚本的路径

内存监控与邮件告警

systemctl restart crond    重启

systemctl status crond    查看当前的状态

下面可以看到显示正在运行中

内存监控与邮件告警

如下图所示,每隔五分钟发一次邮件内存告警

内存监控与邮件告警

 

相关文章: