背景

在没有监控的情况下,如何查看服务器网络和服务器利用率

需求

1.CPU 60%
2.内存利用率
3.硬盘利用率
4.TCP连接状态

设计思路

  1. 通过vmstat获取其中显示的CPU使用情况参数。并且输出即可。
  2. 通过free -m获取内存的使用情况参数。并且输出即可。
  3. 通过df -h命令查看/dev关键字的行,获取磁盘使用情况参数。并且输出即可。
  1. #!/bin/bash
  2. function cpu(){
  3. NUM=1 #初次检查次数
  4. while [ $NUM -le 3 ];do
  5. util=`vmstat | awk '{if(NR==3)print 100-$15"%"}'`
  6. #查看CPU空闲占比
  7. user=`vmstat | awk '{if(NR==3)print $13}'`
  8. #查看CPU使用占比
  9. sys=`vmstat | awk '{if(NR==3)print $14}'`
  10. #查看IO使用率
  11. iowait=`vmstat | awk '{if(NR==3)print $16}'`
  12. #等待IO使用率
  13. echo "CPU使用率为: $util,等待磁盘IO响应使用率:$iowait"
  14. let NUM++ #执行第一次检查次数
  15. sleep 1
  16. done
  17. }
  18. #创建函数 cpu
  19. # 设置第一次检查
  20. # 循环检查3次,
  21. # 通过vmstat命令 获取CPU空闲的占比
  22. # 通过vmstat命令 获取当前CPU使用占比
  23. # 通过vmstat命令 查看IO使用占比
  24. # 通过vmstat命令 查看IO使用率
  25. # 输出获取的数值
  26. # 次数++
  27. # 休息1秒,获取较准确数值
  28. function memory(){
  29. total=`free -m | awk '{if(NR==2)print $2"M"}'`
  30. used=`free -m | awk '{if(NR==2)print $2-$NF}'`
  31. available=`free -m | awk '{if(NR==2)print $NF}'`
  32. echo "内存-总大小:${total},使用的:${used},剩余:${available}"
  33. }
  34. #创建函数 memory
  35. # 通过free命令 查看总内存
  36. # 通过free命令 查看使用内存
  37. # 通过free命令 查看剩余内存
  38. # 输出获取的数值信息
  39. function disk(){
  40. fs=$(df -h |awk '/^\/dev/{print $1}')
  41. for p in $fs;do
  42. mounted=$(df -h|awk '$1=="'$p'"{print $NF}')
  43. size=$(df -h | awk '$1=="'$p'"{print $2}')
  44. used=$(df -h | awk '$1=="'$p'"{print $3}')
  45. used_percent=$(df -h | awk '$1=="'$p'"{print $5}')
  46. echo "硬盘挂载点:${mounted},总大小:${size},使用:${used},使用率:${used_percent}"
  47. done
  48. }
  49. #创建函数 disk
  50. #(虽然df -h获取了很多挂载信息,但是只有/dev/下的才是我们需要的)
  51. # 通过df -h命令获取/dev开头的信息的第1列
  52. # 设置循环,将获取的信息放入
  53. # 通过df -h打印匹配的数值,获取挂载点
  54. # 通过df -h打印匹配的数值,获取总内存
  55. # 通过df -h打印匹配的数值,获取使用内存
  56. # 通过df -h打印匹配的数值,获取使用率
  57. # 输出获取的数值
  58. function tcp_status(){
  59. summary=$(ss -antp|awk '{status[$1]++}END{for(i in status) printf i":"status[i]""}')
  60. echo "TCP连接装填 - ${summary}"
  61. }
  62. #创建函数 summary
  63. # 使用ss -antp查看TCP监听的情况,并且将第一列的数据累加,并且输出。i是监听状态,status[i]是数量
  64. # 打印出最后的结果
  65. cpu
  66. memory
  67. disk
  68. tcp_status