(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. Lua中的元表与元方法学习总结

    前言 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了"+"符号,就可以进行类的加法运算.在Lu ...

  2. 9.7 top:实时显示系统中各个进程的资源占用状况

    top命令 用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况.该命令可以按照CPU的使用.内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式 ...

  3. 【Web前端HTML5&CSS3】11-定位

    笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 定位的简介 1. 相对定位 偏移量(offset) 相对定位的特点 2. 绝对定位 绝对定位的特点 包含块(co ...

  4. curl测试代理连接某个域名的连接时间

    缘由:需要查询一下某些代理访问指定域名所消耗的时间,来判断是否是代理连接受限 以下代理均为示例代理,无法真正连接 1. 通过curl方式来测试指定代理的连接情况,代理无账号密码 curl -x 127 ...

  5. .NET平台系列16 .NET5/Asp.Net Core 在全球Web框架权威性能测试 Web Framework Benchmarks 中的吊炸天表现

    系列目录     [已更新最新开发文章,点击查看详细] TechEmpower Web Framework Benchmarks 是许多Web应用程序框架执行基本任务(如JSON序列化.数据库访问和服 ...

  6. .NET Core HttpClient请求异常详细情况分析

    前言 最近项目上每天间断性捕获到HttpClient请求异常,感觉有点奇怪,于是乎观察了两三天,通过日志以及对接方沟通确认等等,查看对应版本源码,尝试添加部分配置发布后,观察十几小时暂无异常情况出现, ...

  7. MegEngine计算图、MatMul优化解析

    MegEngine计算图.MatMul优化解析 本文针对天元在推理优化过程中所涉及的计算图优化与 MatMul 优化进行深度解读,希望能够帮助广大开发者在利用天元 MegEngine「深度学习,简单开 ...

  8. Mobileye 自动驾驶策略(二)

    Mobileye 自动驾驶策略(二) 与多方都成功进行了合作,其中比较大型的合作包括法雷奥.百度和中国 ITS. 法雷奥是最近的的 Tier 1 合作伙伴,法雷奥和 Mobileye 签署协议,表示未 ...

  9. pycham_编码格式设置,处理打印log乱码,处理读取配置文件报错

    一.打印日志乱码,处理设置如下: 二.配置文件读取方法因为gbk编码配置后需要同步修改 原报错信息:

  10. 剑指 Offer 05. 替换空格

    链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/ 标签:字符串 题目 请实现一个函数,把字符串 s 中的每个空格替换成"%2 ...