飘灵儿 发表于 2015-1-14 20:14:45

给大家带来shell剧本监控负载与CPU和内存利用情形

欢迎大家来到仓酷云论坛!在没有nagios监控软件的情形下,只需办事器能上互联网,便可经由过程发邮件的体例来提示***体系负载与CPU占用的利用情形。
1、装置linux上面的一个邮件客户端msmtp软件(相似于一个foxmail的工具)
1、下载装置:
http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0
#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
accountdefault
host***xx.com
fromfuquanjun@***x.com
authlogin
userfuquanjun
passwordfuquanjun
logfile~/.msmtp.log



#chmod600/root/.msmtprc
#touch~/.msmtp.log
3、mutt装置设置:(一样平常linux下有默许装置mutt)
假如没有装置,则利用yum装置
yum-yinstallmutt
#vim/root/.muttrc
setsendmail="/usr/local/msmtp/bin/msmtp"
setuse_from=yes
setrealname="moniter"
setfrom=fuquanjun@***.com
setenvelope_from=yes
setrfc2047_parameters=yes
setcharset="utf-8



4、邮件发送测试(-s邮件题目,-a表加附件)
#echo"邮件内容123456"|mutt-s"邮件题目测试邮件"-a/scripts/test.txtfuquanjun@***x.com
呈现上面报错信息:
msmtp:accountdefaultnotfound:noconfigurationfileavailable
发送函件堕落,子历程已加入78()。
没法发送此函件。
办理***:
独自利用msmtp发送测试:/usr/local/msmtp/bin/msmtp-S发明是设置文件没找到

msmtp:accountdefaultnotfound:noconfigurationfileavailable
检察以后的设置文件路径:/usr/local/msmtp/bin/msmtp-P
ignoringsystemconfigurationfile/work/target/etc/msmtprc:Nosuchfileordirectory
ignoringuserconfigurationfile/root/.msmtprc:Nosuchfileordirectory
fallingbacktodefaultaccount
msmtp:accountdefaultnotfound:noconfigurationfileavailable
故将/usr/local/etc/msmtprc复制为/root/.msmtprc
检察一下mutt文件装置目次情形
rpm-qlmutt
故将/etc/Muttrc复制为/root/.muttrc便可发送邮件。

2、监控办事器体系负载情形:
1、用uptime下令检察以后负载情形(1分钟,5分钟,15分钟均匀负载情形)在苹果公司的Mac电脑上也合用
#uptime
15:43:59up186days,20:04,1user,loadaverage:0.01,0.02,0.00



"loadaverage"意义分离是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-cmodelname/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

paste/scripts/datetime-load.txt/scripts/load.txt>/scripts/load_day.txt



#chmoda+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@***.com




#chmoda+x/scripts/sendmail-load.sh
7、编写体系负载监控的剧本文件:
#vim/scripts/load-warning.sh
#!/bin/bash
#利用uptime下令监控linux体系负载变更

#提取本办事器的IP地点信息
IP=`ifconfigeth0|grep"inetaddr"|cut-f2-d":"|cut-f1-d""`

#抓取cpu的总核数
cpu_num=`grep-cmodelname/proc/cpuinfo`

#抓取以后体系15分钟的均匀负载值
load_15=`uptime|awk{print$NF}`

#盘算以后体系单个中心15分钟的均匀负载值,了局小于1.0时后面个位数补0。
average_load=`echo"scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a))print0;printa"|bc`

#取下面均匀负载值的个位整数
average_int=`echo$average_load|cut-f1-d"."`

#设置体系单个中心15分钟的均匀负载的告警值为0.70(即便用凌驾70%的时分告警)。
load_warn=0.70

#当单个中心15分钟的均匀负载值年夜于即是1.0(即个位整数年夜于0),间接发邮件告警;假如小于1.0则举行二次对照
if(($average_int>0));then
echo"$IP办事器15分钟的体系均匀负载为$average_load,凌驾戒备值1.0,请当即处置!!!"|mutt-s"$IP办事器体系负载严峻告警!!!"fuquanjun@***.com
else
#以后体系15分钟均匀负载值与告警值举行对照(当年夜于告警值0.70时会前往1,小于时会前往0)
load_now=`expr$average_load>$load_warn`

#假如体系单个中心15分钟的均匀负载值年夜于告警值0.70(前往值为1),则发邮件给***
if(($load_now==1));then
echo"$IP办事器15分钟的体系均匀负载到达$average_load,凌驾戒备值0.70,请实时处置。"|mutt-s"$IP办事器体系负载告警"fuquanjun@***.com
fi
fi




#chmoda+x/scripts/load-warning.sh

3、监控办事器体系cpu占用情形:
1、利用top下令检察linux体系cpu利用情形:
#top-b-n1|grepCpu(-b-n1表只必要1次的输入了局)
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的百分比数值下令(只取整数局部):
#top-b-n1|grepCpu|awk{print$5}|cut-f1-d"."



3、编写cpu监控的剧本文件:
#vim/scripts/cpu-check.sh
#!/bin/bash
#利用top下令监控linux体系cpu变更

#取体系以后工夫(以追加的体例写进文件>>)
date>>/scripts/datetime-cpu.txt

#抓取以后cpu的值(以追加的体例写进文件>>)
top-b-n1|grepCpu>>/scripts/cpu-now.txt

#逐行毗连下面的工夫和cpu相干行数据(每次从头写进文件>)
paste/scripts/datetime-cpu.txt/scripts/cpu-now.txt>/scripts/cpu.txt




#chmoda+x/scripts/cpu-check.sh
4、检察CPU监控的了局文件:
#cat/scripts/cpu.txt
5、编写cpu了局文件邮件发送剧本:
#vim/scripts/sendmail-cpu.sh


#!/bin/bash
#把天生的cpu.txt文件经由过程邮件发送给用户

#提取本办事器的IP地点信息
IP=`ifconfigeth0|grep"inetaddr"|cut-f2-d":"|cut-f1-d""`

#提取以后日期
today=`date-d"0day"+%Y年%m月%d日`

#发送cpu监控了局邮件
echo"这是$IP办事器$today的cpu监控呈报,请下载附件。"|mutt-s"$IP办事器$today的CPU监控呈报"-a/scripts/cpu.txtfuquanjun@***.com




#chmoda+x/scripts/sendmail-cpu.sh

4、监控体系cpu的情形,当利用凌驾80%的时分发告警邮件:
#vim/scripts/cpu-warning.sh
#!/bin/bash
#监控体系cpu的情形剧本步伐

#提取本办事器的IP地点信息
IP=`ifconfigeth0|grep"inetaddr"|cut-f2-d":"|cut-f1-d""`

#取以后余暇cpu百份比值(只取整数局部)
cpu_idle=`top-b-n1|grepCpu|awk{print$5}|cut-f1-d"."`

#设置余暇cpu的告警值为20%,假如以后cpu利用凌驾80%(即残剩小于20%),当即发邮件告警
if(($cpu_idle<20));then
echo"$IP办事器cpu残剩$cpu_idle%,利用率已凌驾80%,请实时处置。"|mutt-s"$IP办事器CPU告警"fuquanjun@***.com
fi



#chmoda+x/scripts/cpu-warning.sh

5、利用free下令监控体系内存:
1、利用free下令检察linux体系内存利用情形:(以M为单元)
1
2
3
4
5
#free-m
totalusedfreesharedbufferscached
Mem:395234145380168484
-/+buffers/cache:27601191
Swap:8191868105



2、检察截取残剩内存free的数值下令:
(1)物理内存free值:#free-m|grepMem|awk{print$4}
(2)缓冲区的free值:#free-m|grep-|awk{print$4}
(3)Swap分区free值:#free-m|grepSwap|awk{print$4}
3、编写内存监控的剧本文件:
#vim/scripts/free-mem.sh


#抓取Swap分区free值(以追加的体例写进文件>>)
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



#chmoda+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
#把天生的freemem.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/freemem.txtfuquanjun@***.com



#chmoda+x/scripts/sendmail-mem.sh

6、监控体系互换分区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地点信息
IP=`ifconfigeth0|grep"inetaddr"|cut-f2-d":"|cut-f1-d""`

#体系分派的互换分区总量
swap_total=`free-m|grepSwap|awk{print$2}`

#以后残剩的互换分区free巨细
swap_free=`free-m|grepSwap|awk{print$4}`

#以后已利用的互换分区used巨细
swap_used=`free-m|grepSwap|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_freeM未利用,残剩不敷20%,利用率已凌驾80%,请实时处置。"|mutt-s"$IP办事器内存告警"fuquanjun@***.com
fi
fi



#chmoda+x/scripts/swap-warning.sh

7、到场义务企图:体系负载与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
08***/scripts/sendmail-load.sh

*/10****/scripts/cpu-check.sh
*/10****/scripts/cpu-warning.sh
08***/scripts/sendmail-cpu.sh

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



#servicecrondrestart
本文出自“从心入手下手”博客,请务必保存此出处http://fuquanjun.blog.51cto.com/5820068/1418508
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!

透明 发表于 2015-1-15 07:38:23

给大家带来shell剧本监控负载与CPU和内存利用情形

前一段又听说微硬公司的自动文章机出来了,估计在这儿做测试呢。

精灵巫婆 发表于 2015-1-19 23:24:15

上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题.

海妖 发表于 2015-1-28 16:10:48

linux鸟哥的私房菜,第三版,基础篇,网上有pdf下的,看它的目录和每章的介绍就行了,这个绝对原创!

小女巫 发表于 2015-2-5 23:44:25

学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]

深爱那片海 发表于 2015-2-14 08:08:37

虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。

再现理想 发表于 2015-3-4 06:03:48

有疑问前,知识学习前,先用搜索。

蒙在股里 发表于 2015-3-11 17:53:02

主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。

老尸 发表于 2015-3-19 07:31:01

笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机

小妖女 发表于 2015-3-27 16:08:26

老实说,第一个程序是在C中编译好的,调试好了才在Linux下运行,感觉用vi比较麻烦,因为有错了不能调试,只是提示错误。
页: [1]
查看完整版本: 给大家带来shell剧本监控负载与CPU和内存利用情形