linux实战(十一)----shell监控服务器性能---综合运用

来源:互联网 发布:金融行业使用软件 编辑:程序博客网 时间:2024/05/18 03:22



前面分别学习了一些监控脚本和实用的功能脚本,本章节是综合篇,把前面学习的内容综合起来,实现对服务器性能的监控。


主要实现如下功能:

为了持续观察服务器每天的基本运行状态,提供方便方便易读的集中的日志记录数据,需要结合shell脚本的任务计划设置,定期记录不同时间段服务器的CPU负载、内存和交换空间、磁盘使用率等各种信息。


1、每隔15分钟记录一次服务器的基本运行状况,包括:CPU负载、内存和交换空间、磁盘空间信息
2、最近用户等情况
3、记录当时的时间信息(以YYYY-mm-dd HH:MM:SS的格式输出所有信息追加到文件/data/shell/running.log中)
4、每天晚上00:00分时备份running.log文件;进行压缩备份,保存到/data/shell目录中;备份的文件名参考:runing.log-YYYYmmdd.tar.bz2;备份完成删除当天的记录文件(running.log)


主要参考:

linux实战(二)----shell脚本监控实例-----日志截取三个命令在性能监控等运用中的实例解析

linux实战(四)----写入文件----实例解析

linux实战(五)----压缩备份文件并删除原文件----实例解析

linux实战(六)----获取备份时间----实例解析

linux实战(八)----定时运行----实例运用



相关命令脚本学习

获取CPU负载信息

function GetSysCPU   {     CpuIdle=`vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'`    CpuNum=`echo "100-$CpuIdle" | bc`     echo $CpuNum   }  


vmstat 用来显示虚拟内存的信息
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
vmstat   1   5  
表示每1秒刷新一次,取5次 
sed -n '3,$p '    
 -n表示只打印选中的行,地址是一个数字,则表示行号;
“$"符号,表示最后一行。 '3,$'表示 第3行到最后一行,p是命令表示打印输出。 

awk '{x = x + $15} END {print x/5}' 
表示将每行的 第15列相加后 除以5求平均

 awk -F. '{print $1}'
用.来分隔取第1列  也就是对平均数 取整的意思

CpuIdle=`vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'` 

意思是  在vmstat 中 计算出 5秒内的CPU空闲时间平均数


CpuNum=`echo "100-$CpuIdle" | bc`

用100减去空闲时间百分比平均数 则得到  CPU的使用情况。


也就是我们求的CPU负载信息。




获取内存信息

function GetSysMem {     Mem=`free -m | grep Mem | awk '{print $4}'`    echo $Mem  } 
使用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




free -m | grep Mem | awk '{print $4} 获取剩余内存

grep Mem: 选出含有Mem的行

awk '{print $4}'   以空白作分隔,取第四列,这里对应到 free,也就是获取剩余内存。



获取交换空间信息

function GetSysSwap{     swap_free=`free -m | grep Swap | awk '{print  $4}'`    echo $swap_free  } 

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

grep Swap : 选出含有Swap 的行

awk '{print $4}'   以空白作分隔,取第四列,这里对应到 free,也就是获取剩余Swap 。




获取磁盘空间信息

function GetSysSpace{      SPACE=`df| grep -v  Use  | gawk  '{x = x + $5} END {print x}' | sed  's/%//'`   echo $SPACE } 


df| grep -v  Use  | gawk  '{x = x + $5} END {print x}' | sed  's/%//'

df是查询磁盘使用情况的命令

grep -v Use 去掉含有Use字符串的这一行

sed  's/%//'    s就是替换符,这里表示匹配到后面含有%号的字符串取%号前面的值(也就是s位置的值)

gawk  '{x = x + $5} END {print x}'      用空白分隔后取每一行的第5列 相加 得到最后值

也就是 磁盘空间的总使用百分比。




获取最近用户情况

使用last命令




获取当前时间

YYYY-mm-dd HH:MM:SS的格式

date +"%Y-%m-%d %H:%M:%S"




备份文件删除原件

time=`date +"%Y%m%d"`     tar cvf  - /data/shell/running.log  > runing.log-${time}.tar.bz2    rm running.log 
新建一个running.log在/data/shell目录下

然后运行命令





解压可用

 tar -xvf runing.log-20160229.tar.bz2





综合脚本

我们在相关命令中已经学习了实现监控服务器性能的所有命令。

我们现在就把它们组合起来。

分别组合成 

checkSys.sh 负责把所有监控信息写入running.log文件

backup.sh   负责备份删除原文件


checkSys.sh

function GetSysCPU   {     CpuIdle=`vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'`    CpuNum=`echo "100-$CpuIdle" | bc`     echo $CpuNum   }  echo CPU have used  `GetSysCPU`%  >> running.logfunction GetSysMem {     Mem=`free -m | grep Mem | awk '{print $4}'`    echo $Mem  } echo free Mem is  `GetSysMem`M >> running.logfunction GetSysSwap{     swap_free=`free -m | grep Swap | awk '{print  $4}'`    echo $swap_free  } echo free Swap is `GetSysSwap` M >> running.logfunction GetSysSpace{      SPACE=`df| grep -v  Use  | gawk  '{x = x + $5} END {print x}' | sed  's/%//'`   echo $SPACE } echo  Space have used  `GetSysSpace`%  >> running.loglast >> running.logdate +"%Y-%m-%d %H:%M:%S"  >> running.log

vim checkSys.sh 后写入脚本

运行 

chmod +x /data/shell/checkSys.sh

./checkSys.sh



结果:





backup.sh

time=`date +"%Y%m%d"`     tar cvf  - /data/shell/running.log  > runing.log-${time}.tar.bz2    rm running.log

vim backup.sh 后写入脚本

运行 

chmod +x /data/shell/backup.sh

./backup.sh


备份成功并删除了原文件






定时运行脚本

现在两个脚本都可以正常运行了。

我们把checkSys设置成 每15分钟运行一次

把backup.sh设置成每天00:00:00运行一次

crontab  -e 

进入定时运行配置
加入以下定时运行计划即可。

*/15 * * * *  /data/shell/checkSys.sh  0 0 * * * /data/shell/backup.sh  



到这里我们整个监控服务器性能的例子就完成了。



0 0
原创粉丝点击