linux性能监控 + Sendmail 发邮件
#!/bin/bash
#控制发邮件的阈值是在rate,rate1和FF值(三个同样的用途,仅仅是名字不同)
#
#注:该博文中的变量不规范,我是随意定义的,请注意
#
#定义时间倒计时函数
stop_time(){
kk=3
while [ $kk -gt 0 ];do
sleep 1
kk=$(($kk - 1))
echo -ne "\r \r"
done
}
#free 监控内存使用率,超过80%就发邮件
#获取当前内存各值
mem_total=$(free -m | sed -n '2p' | awk '{print $2}')
mem_used=$(free -m | sed -n '2p' | awk '{print $3}')
mem_free=$(free -m | sed -n '2p' | awk '{print $4}')
mem_shared=$(free -m | sed -n '2p' | awk '{print $5}')
mem_buff=$(free -m | sed -n '2p' | awk '{print $6}')
mem_cached=$(free -m | sed -n '2p' | awk '{print $7}')
mem_rate=`echo "scale=2;$mem_used/$mem_total" | bc | awk -F. '{print $2}'`
[ ! -d /home/zpz/mail ] && mkdir /home/zpz/mail
echo "10分钟前内存使用情况:">>/home/zpz/mail/memory.txt
#换算成M和G为单位
echo -e "total: `expr $mem_total / 1000`G (${mem_total}M)
used: `expr $mem_used / 1000`G (${mem_used}M)
free: `expr $mem_free / 1000`G (${mem_free}M)
shared: `expr $mem_shared / 1000`G (${mem_shared}M)
buffer: `expr $mem_buff / 1000`G (${mem_buff}M)
available: `expr $mem_cached / 1000`G (${mem_cached}M)">>/home/zpz/mail/memory.txt
echo -e "rate:${mem_rate}%(如显示为 06% 即表示 0.06%,换算成G为单位时均以1000计算,而非1024)">>/home/zpz/mail/memory.txt
if [ $mem_rate -ge 40 ];then
stop_time
mem_total1=$(free -m | sed -n '2p' | awk '{print $2}')
mem_used1=$(free -m | sed -n '2p' | awk '{print $3}')
mem_rate1=`echo "scale=2;$mem_used1/$mem_total1" | bc | awk -F. '{print $2}'`
#判断2次统计的内存使用率
if [ $mem_rate1 -ge $mem_rate ];then
echo "">>/home/zpz/mail/memory.txt
echo "当前内存使用情况:">>/home/zpz/mail/memory.txt
echo -e "total: `expr $mem_total / 1000`G (${mem_total}M)
used: `expr $mem_used / 1000`G (${mem_used}M)
free: `expr $mem_free / 1000`G (${mem_free}M)
shared: `expr $mem_shared / 1000`G (${mem_shared}M)
buffer: `expr $mem_buff / 1000`G (${mem_buff}M)
available: `expr $mem_cached / 1000`G (${mem_cached}M)">>/home/zpz/mail/memory.txt
echo "rate:${mem_rate}%(换算成G为单位时均以1000计算,而非1024)">>/home/zpz/mail/memory.txt
fi
else
#如果以上条件都不成立就将memory.txt文件清零并将各变量赋空值
mem_opop=" "
mem_kk=" "
fi
#监控磁盘使用率,超过80%就发邮件
DEV=`df -hP | grep '^/dev/*' | awk -F ' ' '{print $1}'|sort`
for i in $DEV
do
disk_dev=`df -Ph | grep $i | awk '{print $1}'`
disk_size=`df -Ph | grep $i | awk '{print $2}'`
disk_used=`df -Ph | grep $i | awk '{print $3}'`
disk_free=`df -Ph | grep $i | awk '{print $4}'`
disk_rate=`df -Ph | grep $i | awk '{print $5}'`
disk_mount=`df -Ph| grep $i | awk '{print $6}'`
#定义磁盘利用率
disk_F=`echo $disk_rate | awk -F% '{print $1}'`
if [ $disk_F -ge 40 ];then
echo " ">>/home/zpz/mail/memory.txt
echo " ">>/home/zpz/mail/memory.txt
echo "10分钟前硬盘使用率: $disk_rate">>/home/zpz/mail/memory.txt
for p in $DEV;do echo -e "$p:\tsize:$disk_size\tused:$disk_used\tfree:$disk_free\tmount: $disk_mount";done>>/home/zpz/mail/memory.txt
stop_time
disk_dev1=`df -Ph | grep $i | awk '{print $1}'`
disk_size1=`df -Ph | grep $i | awk '{print $2}'`
disk_used1=`df -Ph | grep $i | awk '{print $3}'`
disk_free1=`df -Ph | grep $i | awk '{print $4}'`
disk_rate1=`df -Ph | grep $i | awk '{print $5}'`
disk_mount1=`df -Ph | grep $i | awk '{print $6}'`
disk_FF=`echo $disk_rate1 | awk -F% '{print $1}'`
#判断2次统计的硬盘使用率
if [ $disk_FF -ge $disk_F ];then
echo " ">>/home/zpz/mail/memory.txt
echo "当前硬盘使用率: $disk_rate1">>/home/zpz/mail/memory.txt
for H in $DEV;do echo -e "$H:\tsize:$disk_size1\tused:$disk_used1\tfree:$disk_free1\tmount: $disk_mount1";done >>/home/zpz/mail/memory.txt
else
echo " ">/home/zpz/mail/memory.txt
fi
fi
done
if [[ $mem_rate1 -ge 70 || $disk_FF -ge 80 ]];then
mail -v -s "44服务器的硬盘警告" xxxxx@126.com</home/zpz/mail/memory.txt
echo " ">/home/zpz/mail/memory.txt
fi


QQ群: 欢迎你的加入
该文章为原创,转载请注明原出处 谢谢合作
linux性能监控 + Sendmail 发邮件的更多相关文章
- Linux性能监控
转自:http://blog.csdn.net/chosen0ne/article/details/8200737 linux性能监控,就是要监控系统的各个子系统是否正常.linux主要的子系统包括: ...
- Linux 性能监控之CPU&内存&I/O监控Shell脚本2
Linux 性能监控之CPU&内存&I/O监控Shell脚本2 by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...
- Linux 性能监控之CPU&内存&I/O监控Shell脚本1
Linux 性能监控之CPU&内存&I/O监控Shell脚本1 by:授客 QQ:1033553122 #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...
- linux性能监控 -CPU、Memory、IO、Network等指标的讲解
[操作系统-linux]linux性能监控 -CPU.Memory.IO.Network等指标的讲解(转) 一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,Syst ...
- Linux性能监控与分析之--- CPU
Linux性能监控与分析之--- CPU 望月成三人关注 2016.07.25 18:16:12字数 1,576阅读 2,837 CPU性能指标 用户进程使用CPU的比率 系统进程使用CPU的比率 W ...
- Linux 性能监控的18个命令行工具
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐 认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我 ...
- linux安装配置sendmail实现邮件发送
sendmail配置 yum -y update sendmail sendmail-cf SendMail相关目录1. 设定档目录:/etc/mail2. 记录档:/var/log/maillog3 ...
- Linux 性能监控、测试、优化工具
Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 ...
- 三张图看遍Linux 性能监控、测试、优化工具
Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 ...
随机推荐
- 9.1.远程过程调用协议_RPC
6. RPC 6.1.什么是 RPC RPC(Remote Procedure Call Protocol)远程过程调用协议 通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个 ...
- Educational Codeforces Round 71 (Rated for Div. 2) E XOR Guessing (二进制分组,交互)
E. XOR Guessing time limit per test1 second memory limit per test256 megabytes inputstandard input o ...
- 自然语言处理(三) 预训练模型:XLNet 和他的先辈们
预训练模型 在CV中,预训练模型如ImagNet取得很大的成功,而在NLP中之前一直没有一个可以承担此角色的模型,目前,预训练模型如雨后春笋,是当今NLP领域最热的研究领域之一. 预训练模型属于迁移学 ...
- Android基础相关面试问题-binder面试问题详解
Linux内核的基础知识: 进程隔离/虚拟地址空间:在操作系统中为了保护某个进程互不干扰就设计了一个叫“进程隔离”的技术,防止进程A可以操作进程B的数据.而进程隔离技术用到了虚拟地址空间,进程A的虚拟 ...
- Codeforces 1082 毛毛虫图构造&最大权闭合子图
A #include<bits/stdc++.h> using namespace std; typedef long long ll; , MAXM = ; //int to[MAXM ...
- Java运行环境绿色部署配置
这个Java的绿色安装配置,还有从未自己的使用电脑说起来. 最近电脑运行慢,很长时间没有清理及维护了,而且有可能中毒或木马了,所以就把系统进行了Ghost还原了,所以原来安装的jdk环境也无法使用了, ...
- CSS——简写属性(在padding和margin这样的简写属性中,值赋值的顺序是top、right、bottom、left)
/* 在padding和margin这样的简写属性中,值赋值的顺序是top.right.bottom.left. 它们还有其他简写方式,例如给padding两个值,则第一个值表示top/bottom, ...
- 简易MySQL存储过程
自从那天灵感突现,搜了下MySQL存储过程的实现,我就再也不会为造测试数据这种事情烦恼了,存储过程用起来简直太方便了. DROP PROCEDURE IF EXISTS insert2pay; DEL ...
- li元素之间产生间隔
是因为li标签换行导致的 简单的解决办法是将所有的li标签写到一行(不过实际上一般不会这样做) 或者把ul设置font-size为0,但这样ul中的文字就会消失,所以要记得单独给子元素设置font-s ...
- Luogu P4331 [BOI2004]Sequence 数字序列 (左偏树论文题)
清晰明了%%% Fairycastle的博客 个人习惯把size什么的存在左偏树结点内,这样在外面好写,在里面就是模板(只用修改update). 可以对比一下代码(好像也差不多-) MY CODE # ...