分享一个自己写的比较牛的linux服务器自动监控程序
来源:互联网 发布:网络直播底线失守照片 编辑:程序博客网 时间:2024/06/08 20:47
#!/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 > $topfiledeclare taskTotaldeclare taskRunningdeclare taskSleepingdeclare taskStoppeddeclare taskZombiedeclare cpuUsdeclare cpuSydeclare cpuNideclare cpuIddeclare cpuWadeclare cpuHideclare cpuSideclare cpuStdeclare memTotaldeclare memUseddeclare memFreedeclare memBuffersdeclare swapTotaldeclare swapUseddeclare swapFreedeclare 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的参数获取到的值都带有kmemTotal=`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的参数获取到的值都带有kswapTotal=`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}'` } getMemoryRaterecordJson="{\"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的字符串,后续更新。
0 0
- 分享一个自己写的比较牛的linux服务器自动监控程序
- 分享一个自己写的IOCP服务器的类源码
- 分享自己写的一个贪吃蛇的游戏(Linux)
- linux如何实现开机加载完图形界面后自动运行自己写的一个程序
- 自己写的一个LINUX 下目录文件遍历程序
- 写一个python的服务监控程序
- 写一个自己的web服务器
- 网络游戏服务器开发::学习了两天python写了一个linux下自动安装程序的脚本
- 分享一个自己写的MVC+EF “增删改查” 无刷新分页程序
- 自己写的一个ping程序
- 自己写的一个分页程序
- 自己写的一个分页程序
- 发一个自己写的服务程序
- 自己写的一个ping程序
- 自己写的一个练习程序
- 自己写的一个Android小程序
- 自己写的一个DELPHI 控制台程序
- 自己写的一个入栈程序
- code vs 1022 覆盖 (匈牙利算法)
- php自定义配置$_SERVER常量
- codevs 4175 收费站(二分+SPFA)
- yum安装出现No package vim available解决办法
- Jquery datatables 监听上一页/下一页 ,页码,刷新列宽度
- 分享一个自己写的比较牛的linux服务器自动监控程序
- MySQL使用连接查询的方式查询(连接3个表,并使用COUNT内置函数)
- 获取挂载设备的信息 gio
- 致23岁的我丨生活
- PSNR计算
- ffmpeg
- Java SE TreeSet(实现Comparable接口和Comparator匿名类)根据属性排序示例
- Log4J和springMVC
- CSDN-markdown编辑器语法——字体、字号与颜色