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 查看当前的状态
下面可以看到显示正在运行中
如下图所示,每隔五分钟发一次邮件内存告警