(1)性能监控脚本 performance.sh

  1. #!/bin/bash
  2. #---------------------------------------------------------------------------------
  3. # 说明,Linux服务器--性能监控脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
  4. # 主要监控: 01.监控cpu系统负载 02. 监控cpu使用率 03. 监控交换分区 04. 监控磁盘空间
  5. # 生成的性能监控日志 $path/performance_%Y%m%d.log
  6. # 2017.06.25 djp
  7. #---------------------------------------------------------------------------------
  8. path='/tmp/monitor/performance'
  9. #01.监控cpu系统负载
  10. { #{{{
  11. IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
  12. cpu_num=`grep -c 'model name' /proc/cpuinfo`
  13. count_uptime=`uptime |wc -w`
  14. load_15=`uptime | awk '{print $'$count_uptime'}'`
  15. average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`
  16. average_int=`echo $average_load | cut -f 1 -d "."`
  17. load_warn=0.70
  18. if [ $average_int -gt 0 ]
  19. then
  20. echo "$IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)" >>$path/performance_$(date +%Y%m%d).log
  21. echo "$IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)" | mail -s "$IP服务器系统负载严重告警" XXXX@qq.com
  22. else
  23. echo "$IP服务器单个核心15分钟的平均负载值为$average_load,负载正常 $(date +%Y%m%d/%H:%M:%S)">>$path/performance_$(date +%Y%m%d).log
  24. fi
  25. } #}}}
  26. #02. 监控cpu使用率
  27. { #{{{
  28. cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."`
  29. if [ $cpu_idle -lt 20 ]
  30. then
  31. echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。">>$path/performance_$(date +%Y%m%d).log
  32. echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理!!!" | mail -s "$IP服务器cpu告警" XXXX@qq.com
  33. else
  34. echo
  35. "$IP服务器cpu剩余$cpu_idle%,使用率正常">>$path/performance_$(date +%Y%m%d).log
  36. fi
  37. } #}}}
  38. #03. 监控交换分区
  39. { #{{{
  40. swap_total=`free -m | grep Swap | awk '{print $2}'`
  41. swap_free=`free -m | grep Swap | awk '{print $4}'`
  42. swap_used=`free -m | grep Swap | awk '{print $3}'`
  43. if [ $swap_used -ne 0 ]
  44. then
  45. swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc`
  46. swap_warn=0.20
  47. swap_now=`expr $swap_per \> $swap_warn`
  48. if [ $swap_now -eq 0 ]
  49. then
  50. echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。">>$path/performance_$(date +%Y%m%d).log
  51. echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%, 使用率已经超过80%, 请及时处理。" | mail -s "$IP服务器内存告警" XXXX@qq.com
  52. else
  53. echo "$IP服务器swap交换分区剩下 $swap_free M未使用,使用率正常">>$path/performance_$(date +%Y%m%d).log
  54. fi
  55. else
  56. echo "$IP服务器交换分区未使用" >>$path/performance_$(date +%Y%m%d).log
  57. fi
  58. } #}}}
  59. #04. 监控磁盘空间
  60. { #{{{
  61. disk_sda1=`df -h | grep /dev/sda1 | awk '{print $5}' | cut -f 1 -d "%"`
  62. if [ $disk_sda1 -gt 80 ]
  63. then
  64. echo "$IP服务器 /根分区 使用率已经超过80%,请及时处理。">>$path/performance_$(date +%Y%m%d).log
  65. echo "$IP服务器 /根分区 使用率已经超过80%,请及时处理。 " | mail -s "$IP服务器硬盘告警" XXXX@qq.com
  66. else
  67. echo "$IP服务器 /根分区 使用率为$disk_sda1%,使用率正常">>$path/performance_$(date +%Y%m%d).log
  68. fi
  69. #监控登录用户数
  70. users=`uptime |awk '{print $6}'`
  71. if [ $users -gt 2 ]
  72. then
  73. echo "$IP服务器用户数已经达到$users个,请及时处理。">>$path/performance_$(date +%Y%m%d).log
  74. echo "$IP服务器用户数已经达到$users个,请及时处理。" | mail -s "$IP服务器用户登录数告警" XXXX@qq.com
  75. else
  76. echo "$IP服务器当前登录用户为$users个,情况正常">>$path/performance_$(date +%Y%m%d).log
  77. fi
  78. ###############################################################################
  79. } #}}}

(2) 进程监控脚本 process.sh

  1. #!/bin/bash#---------------------------------------------------------------------------------
  2. # 说明,Linux服务器--进程监控脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
  3. # 主要监控:
  4. # 生成的进程监控日志
  5. # 2017.06.25 djp
  6. #---------------------------------------------------------------------------------
  7. path='/tmp/monitor/process'
  8. IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
  9. #tomcat_dir="/opt/apache-tomcat-7.0.8"
  10. #mysql_dir="/usr/local/mysql/bin/mysqld_safe"
  11. #vsftp_dir="/usr/sbin/vsftpd"
  12. tomcat_dir=""
  13. mysql_dir=""
  14. vsftp_dir=""
  15. ssh_dir="/usr/sbin/sshd"
  16. #进程监控
  17. { #{{{
  18. for dir in $tomcat_dir $mysql_dir $vsftp_dir $ssh_dir
  19. do
  20. process_count=$(ps -ef | grep "$dir" | grep -v grep | wc -l)
  21. for service in tomcat mysql vsftp ssh
  22. do
  23. echo "$dir" |grep -q "$service"
  24. if [ $? -eq 0 ]
  25. then
  26. if [ $process_count -eq 0 ]
  27. then
  28. echo "$service is down at $(date +%Y%m%d%H:%M:%S)" >>$path/process_$(date +%Y%m%d).log
  29. echo "$service is down at $(date +%Y%m%d%H:%M:%S)" | mail -s "$IP服务器 $service服务关闭告警" XXXX@qq.com
  30. else
  31. echo "$service is running at $(date +%Y%m%d%H:%M:%S)" >>$path/process_$(date +%Y%m%d).log
  32. fi
  33. else
  34. continue
  35. fi
  36. done
  37. done
  38. } #}}}

(3) 流量监控脚本 network.sh

eth0的网口上分析报告会输出到这些文件中:(不同的网卡目录是对对应的网卡名称)

/sys/class/net/eth0/statistics/rx_packets: 收到的数据包数据
/sys/class/net/eth0/statistics/tx_packets: 传输的数据包数量
/sys/class/net/eth0/statistics/rx_bytes: 接收的字节数
/sys/class/net/eth0/statistics/tx_bytes: 传输的字节数
/sys/class/net/eth0/statistics/rx_dropped: 当收到包数据包下降的数据量
/sys/class/net/eth0/statistics/tx_dropped: 传输包数据包下降的数据量
————————————————

  1. #!/bin/bash
  2. path='/tmp/monitor/network'
  3. mkdir -p $path
  4. R1=`cat /sys/class/net/eth0/statistics/rx_bytes`
  5. T1=`cat /sys/class/net/eth0/statistics/tx_bytes`
  6. sleep 1
  7. R2=`cat /sys/class/net/eth0/statistics/rx_bytes`
  8. T2=`cat /sys/class/net/eth0/statistics/tx_bytes`
  9. TBPS=`expr $T2 - $T1`
  10. RBPS=`expr $R2 - $R1`
  11. TKBPS=`expr $TBPS / 1024`
  12. RKBPS=`expr $RBPS / 1024`
  13. echo "上传速率 eth0: $TKBPS kb/s 下载速率 eth0: $RKBPS kb/s at $(date +%Y%m%d%H:%M:%S)" >>$path/network_$(date +%Y%m%d).log

(4) 流量分析统计脚本 tongji.sh

  1. #!/bin/bash
  2. #---------------------------------------------------------------------------------
  3. # 说明,Linux服务器--流量分析脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
  4. # 主要监控: 流量分析
  5. # 生成的流量分析日志
  6. # 2017.06.25 djp
  7. #---------------------------------------------------------------------------------
  8. path='/tmp/monitor/network'
  9. mkdir -p $path
  10. TX=0;
  11. RX=0;
  12. MAX_TX=0;
  13. MAX_RX=0;
  14. while read line
  15. do
  16. a=`echo $line | grep "eth0" |awk '{print $3}'`
  17. if [ $a -ge 0 ]
  18. then
  19. TX=$a
  20. if [ $TX -ge $MAX_TX ]
  21. then
  22. MAX_TX=$TX
  23. fi
  24. fi
  25. b=`echo $line | grep "eth0" |awk '{print $7}'`
  26. if [ $b -ge 0 ]
  27. then
  28. RX=$b
  29. if [ $RX -ge $MAX_RX ]
  30. then
  31. MAX_RX=$RX
  32. fi
  33. fi
  34. done < $path/network_$(date +%Y%m%d).log
  35. echo "最高上传速度为 $MAX_TX kb/s at $(date +%Y%m%d)">>$path/tongji.log
  36. echo "最高下载速度为 $MAX_RX kb/s at $(date +%Y%m%d)">>$path/tongji.log

Linux使用shell脚本监控的更多相关文章

  1. Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间

    Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...

  2. Linux/Unix shell 脚本监控磁盘可用空间

    Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少.下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考. 1.监控磁盘的空闲空间shell脚本 robi ...

  3. linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志

    想在服务器上写一个shell脚本,在磁盘使用率达到80%时,自动清理掉一些没有用的日志文件,根据这个想法,在生产环境上写了一个以下脚本,按照该流程,可实现在linux环境做一个定时任务来执行shell ...

  4. shell脚本监控Linux系统性能指标

    2016-11-04 22:41 原作者不详 分类: Linux(7) 在服务器运维过程中,经常需要对服务器的各种资源进行监控, 例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出 ...

  5. linux shell脚本监控进程是否存在

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:    #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ...

  6. Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件

    Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件 前言 公司有购买的监控软件北塔系统监控,由于购买的版权中只包含了有限台数据库服务器的监控,所以只监控了比较重要的几台服务器. 后边 ...

  7. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  8. 使用C#给Linux写Shell脚本(下篇)

    在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...

  9. 用shell脚本监控进程是否存在 不存在则启动的实例

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...

随机推荐

  1. 分布式存储ceph---ceph概念及原理(1)

    一.Ceph简介: Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统.ceph 的统一体现在可以提供文件系统.块存储和对象存储,分布式体现在可以动态扩展.在国内一些公司的云环 ...

  2. 30-- A 代码记录分析

    张的代码 30--  -A if(BT_INFO.RX.CACHE == BT_RX_CACHE[0]) { BT_INFO.RX.CACHE = BT_RX_CACHE[1]; } else { B ...

  3. MyBatis 数据源的原理和机制

    回顾JDBC JDBC访问数据库流程 加载驱动 获取Connection连接对象(消耗性能) 获取PrepareStatement对象 执行SQL语句 获取结果集 关闭Connection连接对象 存 ...

  4. Linux Access.conf安全配置

    access.conf is the configuration file used to logins to the Linux or Unix systems. This file is loca ...

  5. MyBatis执行器

    Mybatis的执行器 下面先展示一张图,用来说明一下Mybatis执行器的整体架构 SimpleExecutor 首先SimpleExecutor是我们最常使用的一个执行器,无论我们执行什么方法默认 ...

  6. 初遇SpringBoot踩坑与加载静态文件遇到的坑

                              SpringBoot开发 创建SpringBoot项目 大家都知道SpringBoot开发非常快,创建SpringBoot项目时,勾上SpringW ...

  7. MSQL 数据完整性(约束)

    0. 前言 1. 实体完整性 1.1 主键约束(primary key) 1.2 唯一约束(unique) 1.3 自动增长列(auto_increment) 2. 域完整性 数据类型 非空约束 默认 ...

  8. 通过 DLPack 构建跨框架深度学习编译器

    通过 DLPack 构建跨框架深度学习编译器 深度学习框架,如Tensorflow, PyTorch, and ApacheMxNet,快速原型化和部署深度学习模型提供了强大的工具箱.不幸的是,易用性 ...

  9. 用NVIDIA Tensor Cores和TensorFlow 2加速医学图像分割

    用NVIDIA Tensor Cores和TensorFlow 2加速医学图像分割 Accelerating Medical Image Segmentation with NVIDIA Tensor ...

  10. 虹软人脸识别SDK接入Milvus实现海量人脸快速检索

    一.背景 人脸识别是近年来最热门的计算机视觉领域的应用之一,而且现在已经出现了非常多的人脸识别算法,如:DeepID.FaceNet.DeepFace等等.人脸识别被广泛应用于景区.客运.酒店.办公室 ...