利用shell脚本来监控linux系统的负载与CPU和内存使用情况

在没有nagios监控软件的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统负载与CPU占用的使用情况。

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

1、下载安装:

#tarjxvfmsmtp-1.4.16.tar.bz2#cdmsmtp-1.4.16#./configure–prefix=/usr/local/msmtp#make&&makeinstall

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

# vim /root/.msmtprc

accountdefaulthostxxxxx.comfromfuquanjun@xxxx.comauthloginuserfuquanjunpasswordfuquanjunlogfile~/.msmtp.log

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

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

如果没有安装,则使用yum安装

yum -y install mutt

# vim /root/.muttrc

setsendmail=”/usr/local/msmtp/bin/msmtp”setuse_from=yessetrealname=”moniter”setfrom=fuquanjun@xxx.comsetenvelope_from=yessetrfc2047_parameters=yessetcharset=”utf-8

出现下面报错信息:

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电脑上也适用

#uptime15:43:59up186days,20:04,1user,loadaverage: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的总核数

#grep-c’modelname’/proc/cpuinfo或者cat/proc/cpuinfo

3、截取服务器1分钟、5分钟、15分钟的负载情况

#uptime|awk'{print$8,$9,$10,$11,$12}’loadaverage:0.01,0.02,0.00

4、查看截取15分钟的平均负载

#uptime|awk'{print$12}’(用'{print$12}’这个获取的不够准确,如果都用awk取第12个字段的话,结果有可能为空了。而用$NF表输出最后一段的内容)#uptime|awk'{print$NF}’

5、编写系统负载监控的脚本文件:# vim /scripts/load-check.sh

#!/bin/bash#使用uptime命令监控linux系统负载变化#取系统当前时间(以追加的方式写入文件>>)date>>/scripts/datetime-load.txt#提取服务器1分钟、5分钟、15分钟的负载情况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

#!/bin/bash#把系统负载监控生成的load_day.txt文件通过邮件发送给用户#提取本服务器的IP地址信息IP=`ifconfigeth0|grep”inetaddr”|cut-f2-d”:”|cut-f1-d””`#提取当前日期today=`date-d”0day”+%Y年%m月%d日`#发送系统负载监控结果邮件echo”这是$IP服务器$today的系统负载监控报告,请下载附件。”|mutt-s”$IP服务器$today的系统负载监控报告”-a/scripts/load_day.txtfuquanjun@xxx.com

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

看着你手中的戒指,你说,你可以把它取下来吗?

利用shell脚本来监控linux系统的负载与CPU和内存使用情况

相关文章:

你感兴趣的文章:

标签云: