资讯专栏INFORMATION COLUMN

基于shell对主机资源的简单巡检

IT那活儿 / 1508人阅读
基于shell对主机资源的简单巡检

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


监测目的

监测CPU 磁盘 内存的使用情况,是为了更加了解系统运行的状态。来判断系统能否正常运行或者超负荷运行。

监测方式

方式一:可以使用linux里面的命令来监测使用情况
1)可以使用top命令监测这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。它还可以显示正在运行进程的内存和CPU占用多的情况。
2)这里cpu统计的是整个cup的平均数据,因为我们cpu有很多核,如果我们想要看每个核的cpu数据,可以按数字1,查看具体的cpu数据,这里也可以看到我当前的Liunx系统是1核的,所以有一条数据。
注:这里注意,很多人在看cpu使用率的时候,以为达到100%,cpu就满负荷了但其实不是的。实际工作中,经常会出现cpu大于100%的情况,这里cpu主要是根据你系统的核数也决定的,比如你当前的操作系统是8核的,那么cpu可以高达800%。
3)内存监控 free 命令可以查看当前系统内容的使用情况
4)这里面使用的是-m ,-k ,-g来表示以MB KB GB来表示内存使用情况
buffer 和 cache两者都是linux下的缓存机制,但是其中buffer为写操作的缓存,cache为读操作的缓存。
Swap:交换空间,磁盘上的一块空间,当前系统内存不足时,会使用交换空间,通常情况下不会。
注:通常内存的判断标准为使用内存不能大于90%,我们可以用avaliable / total 来计算使用率。
5)监测磁盘空间监控  df命令可以查看当前系统磁盘空间的使用情况
这里面显示每个文件的使用情况。
输入:dd if=/dev/zero of=/home/ddtest bs=8k count=100000 oflag=direct 可以测试磁盘的读写速度。
方式二:使用shell脚本来实现监测CPU 内存 磁盘的使用情况
1)使用shell脚本监测CPU的使用情况
脚本代码:
cpu=`top -b -n5 | fgrep "Cpu(s)" | tail -1 | awk -Fid, {split($1, vs, ","); v=vs[length(vs)]; sub(/s+/, "", 
v);sub(/s+/, "", v); printf "%d", 100-v;}`
echo $cpu%

代码解析

  • split($1, vs, ",")把$1 用, 切割成数组,存到变量vs里。
  • v=vs[length(vs)]这是常见的取数组最后一个元素的语法。

然后通过算法运算得出使用率。

常见问题:输出CPU使用率的时候,会输出为0%的可能性。
解决方法:因为输出的命令只限制于正常字体,粗体不算是正常字体必须让top 不输出粗体,才能正常输出,在top 后面加了一个 -b。
2)使用shell脚本监测内存的使用情况
脚本代码:
time=$(date "+%Y-%m-%d %H:%M:%S")
memoryUsed=`free -m | sed -n 2p | awk {printf "%f ",($3)/$2*100}`

echo "memory USE:${memoryUsed}% ${time}"
memory=`echo "$memoryUsed" | cut -d "." -f 1`
if [ $memory -gt 5 ]
then
echo 您当前内存使用率${memoryUsed}%
else
exit
fi

码解析设置时间参数#Y年份,m月份, d日期 时分秒 data是时间,后面""里的是时间格式。

利用linux内存使用率算法的方式($3)/$2*100来计算出,linux系统内存的使用率,而这种算法就是直接用Mem中的used除以total得到的百分比,然后输出出来。
3)使用shell脚本监测磁盘的使用情况
脚本代码:
time=$(date "+%Y-%m-%d %H:%M:%S")
diskUsage=`df -h | sed -n 2p | awk {print $5}`
disk=`echo "$diskUsage" | cut -d "%" -f 1`
echo "$disk"
if [ $disk -gt 10 ]
then
echo 您当前磁盘使用率${disk}%
else
exit
Fi

代码解析:

  • df :显示磁盘分区上的可使用的磁盘空间。-h 以更易读的方式显示;
  • awk {print $5} : 是行处理器命令,后面的print是打印,$5是指第5个字符;
  • `echo "$diskUsage" | cut -d "%" -f 1`输出磁盘使用情况 磁盘输出百分比。

总 结

  • 如果实现监测使用率的话完全可以使用top命令和vmstat来监控某使用率。
  • 如果是在要设置警告或者是超出某一个值的报警系统那就必须需要sell脚本来实现。
  • 但是注意的事情就是在计算某一个地方的使用率的时候一定要去了解他的计算百分比的方法,不然无法正常计算出来。
  • 在计算CPU的时候一定要注意正常字体才能计算进去如果是粗体计算不进去所有需要把粗体转变成正常字体。


本文作者:孟俊宏(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129103.html

相关文章

  • 阿里巴巴测试环境稳定性提升实践

    摘要:嘉宾介绍张劲太云,阿里巴巴应用与基础运维平台产品与架构部高级开发工程师,主要负责测试环境研发和效能提升,喜欢开源。 摘要: 测试环境是研发/测试同学最常用的功能,稳定性直接影响到研发效率,那如何提升测试环境的稳定性?阿里巴巴应用与基础运维平台高级开发工程师张劲,通过阿里内部实践,总结了一套测试环境稳定性提升方法,供大家参考。 点此查看原文:http://click.aliyun.com...

    gggggggbong 评论0 收藏0
  • 数据库管理平台NetopGO简介

    摘要:原文出自听云技术博客断断续续写了将近一个月,听云第一版数据库管理平台终于写完了,期间来来回回的改了好多次小毛病,现在已经部署到生产环境上去了。主机管理这里主要是主机列表管理和业务组列表管理。 原文出自【听云技术博客】:http://blog.tingyun.com/web/article/detail/600 断断续续写了将近一个月,听云第一版数据库管理平台终于写完了,期间来来回回的改...

    YacaToy 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<