当前位置:  操作系统/服务器>linux

shell脚本监控linux系统内存使用情况的方法(不使用nagios监控linux)

    来源: 互联网  发布时间:2014-10-15

    本文导语:  一、安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具) 1、下载安装: 代码如下:# tar jxvf msmtp-1.4.16.tar.bz2# cd msmtp-1.4.16# ./configure --prefix=/usr/local/msmtp# make# make install 2、创建msmtp配置文件和日志文件(host为邮件域...

一、安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具)
 1、下载安装:

代码如下:

# 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.txttest@126.com


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

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

代码如下:

# free -m

(执行结果如下样式)
代码如下:

 total used free sharedbuffers cached
Mem:3952 34145380168484
-/+ 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
 


    
 
 

您可能感兴趣的文章:

  • 如何用shell程序实现一个监控程序(内详)
  • 求一个linux监控进程的shell程序
  • 请教急:shell怎么实现进程监控,重启进程
  • shell 程序监控网站网页是否被修改,如果被修改停止服务器的运行?
  • Shell实现文件夹监控
  • shell监控linux系统进程创建脚本分享
  • shell监控脚本实例—监控mysql主从复制
  • 一个shell for循环与case结合的脚本(监控程序状态)
  • 监控服务器swap并重启php的Shell脚本
  • Shell脚本实现的memcached进程监控
  • 求助!!写个日志监控的shell 如果报错自动发短信给我手机
  • 监控网站是否可以正常打开的Shell脚本分享
  • 如何使用shell脚本实现监控程序消息队列阻塞情况?
  • Shell脚本监控服务器在线状态和邮件报警的方法
  • shell脚本监控mysql主从状态
  • shell监控脚本 准备工作分享
  • 监控php-fpm并自动重启服务的shell脚本
  • 一个监控LINUX目录和文件变化的Shell脚本分享
  • 用shell+sendmail实现服务器监控报警小脚本
  • LINUX下的流量监控shell脚本
  • 使用shell在文本文件中进行字符串搜索问题?shell高手请进,分不够可以再加
  • shell 脚本中命令别名在脚本外无法使用
  • 在shell中使用mail函数的时候如何使用变量
  • 在shell中使用数组需要什么特殊的条件马? 怎么在有的linux下能够用,在有的linux下就不能能使用?
  • 怎样知道当前使用的是什么shell?
  • 有关在makefile中使用shell函数的问题
  • shell中函数的使用
  • php开源软件 169IT
  • shell脚本参数使用问题
  • 关于如何使用shell自动执行一个sybase的存储过程
  • makefile使用的是哪种shell,急急急
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux bash shell命令:grep文本搜索工具简介
  • 小弟没写过shell,求解 linux shell 命令
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • Linux命令、编辑器与Shell编程 和 UNIX SHELL范例精解(第4版) 区别大么?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • redhat linux7.2/7.3,SHELL下,reboot是重启,那么要在SHELL下关机是什么命令???
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • linux下的shell可以做出什么应用
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • Linux Shell环境 Zsh
  • linux下的shell到底怎么搞啊
  • Linux程序中运行shell命令
  • 谁有linux shell编程方面比较好的语法资料哦?
  • Linux的SHELL程序 hsh
  • linux下的shell问题!!!
  • linux查看当前系统用户的总数以及shell数量
  • shell是不是就是linux的命令?
  • 不同发行版本的linux的系统管理和shell编程一样吗?
  • linux的shell的参数个数限制
  • linux shell脚本不重复在后台运行,急急急
  • 在Linux Shell scripts下变量如何取linux的命令运行值
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • shell变量和子shell的问题请教
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3