你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Shell 脚本来实现邮件监控 Linux 系统内存

[复制链接]
gaosmile 发布时间:2020-9-22 14:38
一、安装Linux下面的一个邮件客户端Msmtp软件(类似于一个Foxmail的工具)

1、下载安装:http://downloads.sourceforge.net ... 206451&big_mirror=0

# tar jxvf msmtp-1.4.16.tar.bz2
# cd msmtp-1.4.16
# ./configure --prefix=/usr/local/msmtp
# make
# make install

2、创建msmtp配置文件和日志文件(host为邮件域名,邮件用户名test,密码123456)

# vim ~/.msmtprc

account default
host 126.com
from test@126.com
auth login
user test
password 123456
logfile ~/.msmtp.log

# chmod 600 ~/.msmtprc
# touch ~/.msmtp.log

3、mutt安装配置:(一般linux下有默认安装mutt)

# vim ~/.muttrc

set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="memory"
set from=test@126.com
set envelope_from=yes
set rfc2047_parameters=yes
set charset="utf-8"

4、邮件发送测试(-s邮件标题,-a表加附件)

# echo "邮件内容123456" | mutt -s "邮件标题测试邮件" -a /scripts/test.txt test@126.com

二、使用Free命令监控系统内存

1、使用free命令查看linux系统内存使用情况:(以M为单位)

# free -m
(执行结果如下样式)
total used free shared buffers cached
Mem: 3952 3414 538 0 168 484
-/+ buffers/cache: 2760 1191
Swap: 8191 86 8105

2、查看截取剩余内存free的数值命令:

(1) 物理内存free值:# free -m | grep Mem | awk '{print $4}'
(2) 缓冲区的free值:# free -m | grep - | awk '{print $4}'
(3) Swap分区free值:# free -m | grep Swap | awk '{print $4}'

3、编写内存监控的脚本文件:

# vim /scripts/free-mem.sh

#!/bin/bash
#使用free命令监控linux系统内存变化

#取系统当前时间(以追加的方式写入文件>>)
date >> /scripts/date-time.txt

#抓取物理内存free值(以追加的方式写入文件>>)
echo Mem-free: `free -m | grep Mem | awk '{print $4}'`M >> /scripts/mem-free.txt

#抓取缓冲区的free值(以追加的方式写入文件>>)
echo buffers/cache-free: `free -m | grep - | awk '{print $4}'`M >> /scripts/buffers-free.txt

#抓取Swap分区free值(以追加的方式写入文件>>)
echo Swap-free: `free -m | grep Swap | awk '{print $4}'`M >> /scripts/swap-free.txt

#逐行连接上面的时间和内存相关行数据(每次重新写入文件>)
paste /scripts/date-time.txt /scripts/mem-free.txt /scripts/buffers-free.txt /scripts/swap-free.txt > /scripts/freemem.txt

# chmod a+x /scripts/free-mem.sh
# /scripts/free-mem.sh

4、查看内存监控的结果文件:

# cat /scripts/freemem.txt

5、编写free结果文件邮件发送脚本:

# vim /scripts/sendmail-mem.sh

#!/bin/bash
#把生成的freemem.txt文件通过邮件发送给用户

#提取本服务器的IP地址信息
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`

#提取当前日期时间
today=`date -d "0 day" +%Y年%m月%d日`

#发送内存监控结果邮件
echo "这是$IP服务器$today的内存监控报告,请下载附件。" | mutt -s "$IP服务器$today内存监控报告" -a /scripts/freemem.txt test@126.com

# chmod a+x /scripts/sendmail-mem.sh

三、监控系统交换分区Swap的情况,当使用超过80%的时候发告警邮件

# vim /scripts/swap-warning.sh

#!/bin/bash

#提取本服务器的IP地址信息
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`

#系统分配的交换分区总量
swap_total=`free -m | grep Swap | awk '{print $2}'`

#当前剩余的交换分区free大小
swap_free=`free -m | grep Swap | awk '{print $4}'`

#当前已使用的交换分区used大小
swap_used=`free -m | grep Swap | awk '{print $3}'`

if ((swap_used != 0)); then

#如果交换分区已被使用,则计算当前剩余交换分区free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0
swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc`

#设置交换分区的告警值为20%(即使用超过80%的时候告警)。
swap_warn=0.20

#当前剩余交换分区百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0 )
swap_now=`expr $swap_per > $swap_warn`

#如果当前交换分区使用超过80%(即剩余小于20%,上面的返回值等于0),立即发邮件告警
if (($swap_now == 0)); then
echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。" | mutt -s "$IP 服务器内存告警" test@126.com
fi

fi

# chmod a+x /scripts/swap-warning.sh

四、加入任务计划:内存每十分钟检测一次,有告警则立即发邮件(十分钟发一次),内存检测结果邮件每天早上8点发一次

# crontab -e

*/10 * * * * /scripts/free-mem.sh
*/10 * * * * /scripts/swap-warning.sh
0 8 * * * /scripts/sendmail-mem.sh

# service crond restart

收藏 评论0 发布时间:2020-9-22 14:38

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版