| 
	在没有nagios监控软件的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统负载与CPU占用的使用情况。 
	一、安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具) 
	 1、下载安装: 
	 http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0  
	 2、创建msmtp配置文件和日志文件(host为邮件域名,邮件用户名fuquanjun,密码fuquanjun) 
	 # vim /root/.msmtprc 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 | 
							
								account default    
								host xxxxx.com    
								from fuquanjun@xxxx.com    
								auth login    
								user fuquanjun   
								password fuquanjun   
								logfile ~/.msmtp.log |  
	 # chmod 600  /root/.msmtprc# touch ~/.msmtp.log
 
	3、mutt安装配置:(一般linux下有默认安装mutt) 
	如果没有安装,则使用yum安装 
	yum -y install mutt 
	# vim /root/.muttrc 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 | 
							
								setsendmail="/usr/local/msmtp/bin/msmtp" 
								setuse_from=yes 
								setrealname="moniter" 
								setfrom=fuquanjun@xxx.com    
								setenvelope_from=yes 
								setrfc2047_parameters=yes 
								setcharset="utf-8 |  
	4、邮件发送测试(-s邮件标题,-a表加附件)# echo "邮件内容123456" | mutt -s "邮件标题测试邮件" -a /scripts/test.txt  fuquanjun@xxxx.com
 
	出现下面报错信息: 
	msmtp: account default not found: no configuration file available 
	发送信件出错,子进程已退出 78 ()。 
	无法发送此信件。 
	解决方法: 
	单独使用msmtp发送测试:/usr/local/msmtp/bin/msmtp -S  发现是配置文件没找到 
	  
	msmtp: account default not found: no configuration file available 
	查看当前的配置文件路径:/usr/local/msmtp/bin/msmtp -P 
	ignoring system configuration file/work/target/etc/msmtprc: No such file or directory 
	ignoring user configuration file /root/.msmtprc: No such file ordirectory 
	falling back to default account 
	msmtp: account default not found: no configuration file available 
	故将/usr/local/etc/msmtprc  复制为/root/.msmtprc 
	查看一下mutt文件安装目录情况 
	rpm -ql mutt 
	故将/etc/Muttrc  复制为/root/.muttrc即可发送邮件。 
	  
	二、监控服务器系统负载情况: 
	1、用uptime命令查看当前负载情况(1分钟,5分钟,15分钟平均负载情况)在苹果公司的Mac电脑上也适用 
	
		
			
				
					| 
							1 
							2 | 
							
								 
								   15:43:59 up 186 days, 20:04,  1 user,  load average:  0.01,    0.02,   0.00 |  
	"load average"意思分别是1分钟、5分钟、15分钟内系统的平均负荷。 
	(1) 主要观察"15分钟系统负荷",将它作为电脑正常运行的指标。 
	(2) 如果15分钟内,(系统负荷除以CPU核心数目之后的)平均负荷大于1.0,表明问题持续存在,不是暂时现象。(3) 当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。
 (4) 当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。
 (5) 当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。
 
	  
	假设你的电脑只有1个CPU。如果你的电脑装了2个CPU,意味着电脑的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。 
	2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量。推广开来,n个CPU的电脑,可接受的系统负荷最大为n.0。 
	  
	2、查看服务器cpu的总核数 
	3、截取服务器1分钟、5分钟、15分钟的负载情况 
	
		
			
				
					| 
							1 
							2 | 
							
								 
								   load average:  0.01,    0.02,   0.00 |  
	4、查看截取15分钟的平均负载 
	5、编写系统负载监控的脚本文件:# vim /scripts/load-check.sh
 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 | 
							
								#!/bin/bash    
								 
								   
								 
								date>> /scripts/datetime-load.txt       
								   
								 
								uptime | awk'{print $8,$9,$10,$11,$12}'>> /scripts/load.txt    
								   
								 
								paste/scripts/datetime-load.txt /scripts/load.txt   > /scripts/load_day.txt |  
	# chmod a+x /scripts/load-check.sh 
	6、编写系统负载结果文件邮件发送脚本:# vim /scripts/sendmail-load.sh
 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 | 
							
								#!/bin/bash    
								 
								   
								 
								IP=`ifconfigeth0 | 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/load_day.txt  fuquanjun@xxx.com |  
	  
	# chmod a+x /scripts/sendmail-load.sh 
	7、编写系统负载监控的脚本文件:# vim /scripts/load-warning.sh
 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 
							12 
							13 
							14 
							15 
							16 
							17 
							18 
							19 
							20 
							21 
							22 
							23 
							24 
							25 
							26 
							27 
							28 
							29 
							30 
							31 
							32 
							33 | 
							
								#!/bin/bash    
								 
								   
								 
								IP=`ifconfigeth0 | grep"inet addr"| cut-f 2 -d ":"| cut-f 1 -d " "`    
								   
								 
								cpu_num=`grep-c 'model name'/proc/cpuinfo`    
								   
								 
								load_15=`uptime | awk'{print $NF}'`    
								   
								 
								average_load=`echo"scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a"| bc`    
								  
								 
								average_int=`echo$average_load | cut-f 1 -d "."`    
								   
								 
								load_warn=0.70    
								   
								 
								if(($average_int > 0)); then 
								      echo"$IP服务器15分钟的系统平均负载为$average_load,超过警戒值1.0,请立即处理!!!"| mutt -s "$IP 服务器系统负载严重告警!!!"fuquanjun@xxx.com    
								else 
								 
								load_now=`expr$average_load \> $load_warn`    
								   
								 
								 if(($load_now == 1)); then 
								    echo"$IP服务器15分钟的系统平均负载达到 $average_load,超过警戒值0.70,请及时处理。"| mutt -s "$IP 服务器系统负载告警"fuquanjun@xxx.com    
								 fi 
								fi |  
	  
	 # chmod a+x /scripts/load-warning.sh 
	  
	三、监控服务器系统cpu占用情况: 
	1、使用top命令查看linux系统cpu使用情况: 
	
		
			
				
					| 
							1 
							2 | 
							
								 
								     Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st |  
	2、查看截取空闲cpu的百分比数值命令(只取整数部分): 
	3、编写cpu监控的脚本文件:# vim /scripts/cpu-check.sh
 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 | 
							
								#!/bin/bash    
								 
								   
								 
								date>> /scripts/datetime-cpu.txt       
								   
								 
								top-b -n 1 | grepCpu  >> /scripts/cpu-now.txt     
								   
								 
								paste/scripts/datetime-cpu.txt   /scripts/cpu-now.txt  > /scripts/cpu.txt |  
	  
	# chmod a+x /scripts/cpu-check.sh 
	4、查看CPU监控的结果文件:# cat /scripts/cpu.txt
 5、编写cpu结果文件邮件发送脚本:
 # vim /scripts/sendmail-cpu.sh
 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 | 
							
								#!/bin/bash    
								 
								   
								 
								IP=`ifconfigeth0 | grep"inet addr"| cut-f 2 -d ":"| cut-f 1 -d " "`    
								   
								 
								today=`date-d "0 day"+%Y年%m月%d日`    
								   
								 
								echo"这是$IP服务器$today的cpu监控报告,请下载附件。"| mutt -s "$IP服务器$today的CPU监控报告"-a /scripts/cpu.txt  fuquanjun@xxx.com |  
	  
	 # chmod a+x /scripts/sendmail-cpu.sh 
	  
	四、监控系统cpu的情况,当使用超过80%的时候发告警邮件: 
	 # vim /scripts/cpu-warning.sh 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 
							12 
							13 | 
							
								#!/bin/bash    
								 
								   
								 
								IP=`ifconfigeth0 | grep"inet addr"| cut-f 2 -d ":"| cut-f 1 -d " "`    
								   
								 
								cpu_idle=`top-b -n 1 | grepCpu | awk'{print $5}'| cut-f 1 -d "."`    
								   
								 
								if(($cpu_idle < 20)); then 
								      echo"$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。"| mutt -s "$IP 服务器CPU告警"fuquanjun@xxx.com    
								fi |  
	# chmod a+x /scripts/cpu-warning.sh 
	  
	五、使用free命令监控系统内存: 
	 1、使用free命令查看linux系统内存使用情况:(以M为单位) 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 | 
							
								 
								             total       used       freeshared    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
 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 
							12 
							13 
							14 
							15 
							16 
							17 | 
							
								#!/bin/bash    
								 
								   
								 
								date>> /scripts/date-time.txt       
								   
								 
								echoMem-free: `free-m | grepMem | awk'{print $4}'`M >> /scripts/mem-free.txt     
								   
								 
								echobuffers/cache-free: `free-m | grep- | awk'{print $4}'`M  >> /scripts/buffers-free.txt    
								   
								 
								echoSwap-free: `free-m | grepSwap | 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 
	  
	4、查看内存监控的结果文件:# cat /scripts/freemem.txt
 
	5、编写free结果文件邮件发送脚本: 
	# vim /scripts/sendmail-mem.sh 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 | 
							
								#!/bin/bash    
								 
								   
								 
								IP=`ifconfigeth0 | 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 fuquanjun@xxx.com |  
	# chmod a+x /scripts/sendmail-mem.sh 
	  
	六、监控系统交换分区swap的情况,当使用超过80%的时候发告警邮件:# vim /scripts/swap-warning.sh
 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 
							12 
							13 
							14 
							15 
							16 
							17 
							18 
							19 
							20 
							21 
							22 
							23 
							24 
							25 
							26 
							27 
							28 
							29 
							30 
							31 | 
							
								#!/bin/bash    
								   
								 
								IP=`ifconfigeth0 | grep"inet addr"| cut-f 2 -d ":"| cut-f 1 -d " "`    
								   
								 
								swap_total=`free-m | grepSwap | awk'{print  $2}'`    
								   
								 
								swap_free=`free-m | grepSwap | awk'{print  $4}'`    
								   
								 
								swap_used=`free-m | grepSwap | awk'{print  $3}'`    
								   
								   
								if(($swap_used != 0)); then 
								   
								 
								   swap_per=0`echo"scale=2;$swap_free/$swap_total"| bc`    
								   
								 
								   swap_warn=0.20    
								   
								 
								   swap_now=`expr$swap_per \> $swap_warn`    
								   
								 
								  if(($swap_now == 0)); then 
								    echo"$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。"| mutt -s "$IP 服务器内存告警"fuquanjun@xxx.com    
								  fi 
								fi |  
	# chmod a+x /scripts/swap-warning.sh 
	  
	七、加入任务计划:系统负载与CPU占用率每十分钟检测一次,有告警则立即发邮件(十分钟发一次),负载与CPU检测结果邮件每天早上8点发一次。 
	# crontab -e 
	
		
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 | 
							
								*/10* * * *  /scripts/load-check.sh > /dev/null2>&1  
								*/10* * * *  /scripts/load-warning.sh    
								0 8 * * *  /scripts/sendmail-load.sh    
								   
								*/10* * * *  /scripts/cpu-check.sh    
								*/10* * * *  /scripts/cpu-warning.sh    
								0 8 * * *  /scripts/sendmail-cpu.sh  
								  
								*/10* * * *  /scripts/free-mem.sh    
								*/10* * * *  /scripts/swap-warning.sh    
								0 8 * * *  /scripts/sendmail-mem.sh |  
	# service crond restart(责任编辑:IT) |