分享一个自己写的比较牛的linux服务器自动监控程序
2016-11-09 17:01
381 查看
#!/bin/bash #version0.3 使用top执行后的文件分析,对系统的影响更小 #程序目的:监控系统的cpu、内存、存储、网络的健康状态 #编写者:Lion Lan 13071039067 #编写时间:2016/11/9 #执行下环境变量 source /home/`whoami`/.bash_profile #脚本部署的目录 dir=/home/lion/monitor #获取到的top执行后的文件 topfile=$dir/top.txt #最后输出记录的文件 logfile=$dir/monitorlog.txt #主机名 serverName=`hostname` #当前的日期 currDate=`date +%F` #当前的时间 currTime=`date +%R` top -bn 1 > $topfile declare taskTotal declare taskRunning declare taskSleeping declare taskStopped declare taskZombie declare cpuUs declare cpuSy declare cpuNi declare cpuId declare cpuWa declare cpuHi declare cpuSi declare cpuSt declare memTotal declare memUsed declare memFree declare memBuffers declare swapTotal declare swapUsed declare swapFree declare swapCached #获取到top文件头的所有的参数 #进程的有关参数,获取到的字符串是数字(字符串类型) taskTotal=`cat $topfile| grep -i tasks | head -1 | awk -F" " '{print $2}'` taskRunning=`cat $topfile | grep -i tasks| head -1|awk -F" " '{print $4}'` taskSleeping=`cat $topfile | grep -i tasks| head -1|awk -F" " '{print $6}'` taskStopped=`cat $topfile | grep -i tasks| head -1|awk -F" " '{print $8}'` taskZombie=`cat $topfile | grep -i tasks| head -1|awk -F" " '{print $10}'` #注意:有关cpu的参数获取到的值都带有% cpuUs=`cat $topfile | grep -i cpu| head -1|awk -F" " '{print $2}'|awk -F"us" '{print $1}'` cpuSy=`cat $topfile | grep -i cpu| head -1|awk -F" " '{print $3}'|awk -F"sy" '{print $1}'` cpuNi=`cat $topfile | grep -i cpu| head -1|awk -F" " '{print $4}'|awk -F"ni" '{print $1}'` cpuId=`cat $topfile | grep -i cpu| head -1|awk -F" " '{print $5}'|awk -F"id" '{print $1}'` cpuWa=`cat $topfile | grep -i cpu| head -1|awk -F" " '{print $6}'|awk -F"wa" '{print $1}'` cpuHi=`cat $topfile | grep -i cpu| head -1|awk -F" " '{print $7}'|awk -F"hi" '{print $1}'` cpuSi=`cat $topfile | grep -i cpu| head -1|awk -F" " '{print $8}'|awk -F"si" '{print $1}'` cpuSt=`cat $topfile | grep -i cpu| head -1|awk -F" " '{print $9}'|awk -F"st" '{print $1}'` #注意:有关memory的参数获取到的值都带有k memTotal=`cat $topfile |grep -i mem| head -1|awk -F" " '{print $2}'` memUsed=`cat $topfile |grep -i mem| head -1|awk -F" " '{print $4}'` memFree=`cat $topfile |grep -i mem| head -1|awk -F" " '{print $6}'` memBuffers=`cat $topfile |grep -i mem| head -1|awk -F" " '{print $8}'` #注意:有关swap的参数获取到的值都带有k swapTotal=`cat $topfile| grep -i swap|head -1|awk -F" " '{print $2}'` swapUsed=`cat $topfile| grep -i swap|head -1|awk -F" " '{print $4}'` swapFree=`cat $topfile| grep -i swap|head -1|awk -F" " '{print $6}'` swapCached=`cat $topfile| grep -i swap|head -1|awk -F" " '{print $8}'` #内存的使用率 declare currentMemRate function getMemoryRate() { #系统的全部内存(K) totalMemory=`echo $memTotal| sed 's/k//g'` #当前已经使用的内存(K) currentMemory=`echo $memUsed| sed 's/k//g'` #系统当前的内存使用率 currentMemRate=`echo "scale=4;$currentMemory/$totalMemory" | bc | awk '{printf "%.4f",$0}'` } getMemoryRate recordJson="{\"hostname\":\"$serverName\", \"date\":\"$currDate\", \"time\":\"$currTime\", \"taskTotal\":\"$taskTotal\", \"taskRunning\":\"$taskTotal\", \"taskSleeping\":\"$taskSleeping\", \"taskStopped\":\"$taskStopped\", \"taskZombie\":\"$taskZombie\", \"cpuUs\":\"$cpuUs\", \"cpuSy\":\"$cpuSy\", \"cpuNi\":\"$cpuNi\", \"cpuId\":\"$cpuId\", \"cpuWa\":\"$cpuWa\", \"cpuHi\":\"$cpuHi\", \"cpuSi\":\"$cpuSi\", \"cpuSt\":\"$cpuSt\", \"memTotal\":\"$memTotal\", \"memUsed\":\"$memUsed\", \"memFree\":\"$memFree\", \"memBuffers\":\"$memBuffers\", \"swapTotal\":\"$swapTotal\", \"swapUsed\":\"$swapUsed\", \"swapFree\":\"$swapFree\", \"swapCached\":\"$swapCached\", \"currentMemRate\":\"$currentMemRate\" }" echo $recordJson | sed 's/[ ]//g' >> $logfile
最后得到的是json的字符串,后续更新。
相关文章推荐
- 一个比较有趣的自动生成迷宫程序.
- 分享一个与硬件通讯的分布式监控与远程控制程序的设计(中:通讯协议设计与实现)
- 分享一个客户端程序(winform)自动升级程序,思路+说明+源码
- 分享一个自己写的简单的自动更新插件
- 一个自己编写的象棋程序,可实现走棋谱(如炮二平五),工程完成度%96,跟大家分享一下,下一步要做残局,欢迎交流
- 打造一个属于自己的应用服务自动监控警报程序 推荐
- 分享一个shell for循环+case的脚本(监控程序状态)
- linux如何实现开机加载完图形界面后自动运行自己写的一个程序
- 创建自己的Application,以在整个应用中分享数据(程序启动时会默认创建一个Application)
- 一个很方便的比较标程数据和自己数据的程序~
- 提供一个比较不错的字符处理类,希望大家把自己的也分享
- 分享一个基于FileSystemWatcher的文件自动备份程序
- 一个监控Squid运行进程数并自动重启的简洁Shell脚本分享
- Python实现的一个自动售饮料程序代码分享
- 一个51单片机比较综合的程序(包括了串口通信,io控制,字符串处理,中断处理),仅供自己以后参考
- 分享一个自己写的MVC+EF “增删改查” 无刷新分页程序
- 写了一个程序用来处理字符串,把一张列表中的题目序号提取出来,然后跟自己昨晚的列表比较,找出来还没有做过的题目列表
- 自己写了一个类似百度空间自动保存草稿的程序 php+jquery
- 第一次自己比较的独立编写一个程序