Linux使用shell脚本监控
(1)性能监控脚本 performance.sh
- #!/bin/bash
 - #---------------------------------------------------------------------------------
 - # 说明,Linux服务器--性能监控脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
 - # 主要监控: 01.监控cpu系统负载 02. 监控cpu使用率 03. 监控交换分区 04. 监控磁盘空间
 - # 生成的性能监控日志 $path/performance_%Y%m%d.log
 - # 2017.06.25 djp
 - #---------------------------------------------------------------------------------
 - path='/tmp/monitor/performance'
 - #01.监控cpu系统负载
 - { #{{{
 - IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
 - cpu_num=`grep -c 'model name' /proc/cpuinfo`
 - count_uptime=`uptime |wc -w`
 - load_15=`uptime | awk '{print $'$count_uptime'}'`
 - average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`
 - average_int=`echo $average_load | cut -f 1 -d "."`
 - load_warn=0.70
 - if [ $average_int -gt 0 ]
 - then
 - echo "$IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)" >>$path/performance_$(date +%Y%m%d).log
 - echo "$IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)" | mail -s "$IP服务器系统负载严重告警" XXXX@qq.com
 - else
 - echo "$IP服务器单个核心15分钟的平均负载值为$average_load,负载正常 $(date +%Y%m%d/%H:%M:%S)">>$path/performance_$(date +%Y%m%d).log
 - fi
 - } #}}}
 - #02. 监控cpu使用率
 - { #{{{
 - cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."`
 - if [ $cpu_idle -lt 20 ]
 - then
 - echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。">>$path/performance_$(date +%Y%m%d).log
 - echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理!!!" | mail -s "$IP服务器cpu告警" XXXX@qq.com
 - else
 - echo
 - "$IP服务器cpu剩余$cpu_idle%,使用率正常">>$path/performance_$(date +%Y%m%d).log
 - fi
 - } #}}}
 - #03. 监控交换分区
 - { #{{{
 - swap_total=`free -m | grep Swap | awk '{print $2}'`
 - swap_free=`free -m | grep Swap | awk '{print $4}'`
 - swap_used=`free -m | grep Swap | awk '{print $3}'`
 - if [ $swap_used -ne 0 ]
 - then
 - swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc`
 - swap_warn=0.20
 - swap_now=`expr $swap_per \> $swap_warn`
 - if [ $swap_now -eq 0 ]
 - then
 - echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。">>$path/performance_$(date +%Y%m%d).log
 - echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%, 使用率已经超过80%, 请及时处理。" | mail -s "$IP服务器内存告警" XXXX@qq.com
 - else
 - echo "$IP服务器swap交换分区剩下 $swap_free M未使用,使用率正常">>$path/performance_$(date +%Y%m%d).log
 - fi
 - else
 - echo "$IP服务器交换分区未使用" >>$path/performance_$(date +%Y%m%d).log
 - fi
 - } #}}}
 - #04. 监控磁盘空间
 - { #{{{
 - disk_sda1=`df -h | grep /dev/sda1 | awk '{print $5}' | cut -f 1 -d "%"`
 - if [ $disk_sda1 -gt 80 ]
 - then
 - echo "$IP服务器 /根分区 使用率已经超过80%,请及时处理。">>$path/performance_$(date +%Y%m%d).log
 - echo "$IP服务器 /根分区 使用率已经超过80%,请及时处理。 " | mail -s "$IP服务器硬盘告警" XXXX@qq.com
 - else
 - echo "$IP服务器 /根分区 使用率为$disk_sda1%,使用率正常">>$path/performance_$(date +%Y%m%d).log
 - fi
 - #监控登录用户数
 - users=`uptime |awk '{print $6}'`
 - if [ $users -gt 2 ]
 - then
 - echo "$IP服务器用户数已经达到$users个,请及时处理。">>$path/performance_$(date +%Y%m%d).log
 - echo "$IP服务器用户数已经达到$users个,请及时处理。" | mail -s "$IP服务器用户登录数告警" XXXX@qq.com
 - else
 - echo "$IP服务器当前登录用户为$users个,情况正常">>$path/performance_$(date +%Y%m%d).log
 - fi
 - ###############################################################################
 - } #}}}
 
(2) 进程监控脚本 process.sh
- #!/bin/bash#---------------------------------------------------------------------------------
 - # 说明,Linux服务器--进程监控脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
 - # 主要监控:
 - # 生成的进程监控日志
 - # 2017.06.25 djp
 - #---------------------------------------------------------------------------------
 - path='/tmp/monitor/process'
 - IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
 - #tomcat_dir="/opt/apache-tomcat-7.0.8"
 - #mysql_dir="/usr/local/mysql/bin/mysqld_safe"
 - #vsftp_dir="/usr/sbin/vsftpd"
 - tomcat_dir=""
 - mysql_dir=""
 - vsftp_dir=""
 - ssh_dir="/usr/sbin/sshd"
 - #进程监控
 - { #{{{
 - for dir in $tomcat_dir $mysql_dir $vsftp_dir $ssh_dir
 - do
 - process_count=$(ps -ef | grep "$dir" | grep -v grep | wc -l)
 - for service in tomcat mysql vsftp ssh
 - do
 - echo "$dir" |grep -q "$service"
 - if [ $? -eq 0 ]
 - then
 - if [ $process_count -eq 0 ]
 - then
 - echo "$service is down at $(date +%Y%m%d%H:%M:%S)" >>$path/process_$(date +%Y%m%d).log
 - echo "$service is down at $(date +%Y%m%d%H:%M:%S)" | mail -s "$IP服务器 $service服务关闭告警" XXXX@qq.com
 - else
 - echo "$service is running at $(date +%Y%m%d%H:%M:%S)" >>$path/process_$(date +%Y%m%d).log
 - fi
 - else
 - continue
 - fi
 - done
 - done
 - } #}}}
 
(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: 传输包数据包下降的数据量
————————————————
- #!/bin/bash
 - path='/tmp/monitor/network'
 - mkdir -p $path
 - R1=`cat /sys/class/net/eth0/statistics/rx_bytes`
 - T1=`cat /sys/class/net/eth0/statistics/tx_bytes`
 - sleep 1
 - R2=`cat /sys/class/net/eth0/statistics/rx_bytes`
 - T2=`cat /sys/class/net/eth0/statistics/tx_bytes`
 - TBPS=`expr $T2 - $T1`
 - RBPS=`expr $R2 - $R1`
 - TKBPS=`expr $TBPS / 1024`
 - RKBPS=`expr $RBPS / 1024`
 - 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
- #!/bin/bash
 - #---------------------------------------------------------------------------------
 - # 说明,Linux服务器--流量分析脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
 - # 主要监控: 流量分析
 - # 生成的流量分析日志
 - # 2017.06.25 djp
 - #---------------------------------------------------------------------------------
 - path='/tmp/monitor/network'
 - mkdir -p $path
 - TX=0;
 - RX=0;
 - MAX_TX=0;
 - MAX_RX=0;
 - while read line
 - do
 - a=`echo $line | grep "eth0" |awk '{print $3}'`
 - if [ $a -ge 0 ]
 - then
 - TX=$a
 - if [ $TX -ge $MAX_TX ]
 - then
 - MAX_TX=$TX
 - fi
 - fi
 - b=`echo $line | grep "eth0" |awk '{print $7}'`
 - if [ $b -ge 0 ]
 - then
 - RX=$b
 - if [ $RX -ge $MAX_RX ]
 - then
 - MAX_RX=$RX
 - fi
 - fi
 - done < $path/network_$(date +%Y%m%d).log
 - echo "最高上传速度为 $MAX_TX kb/s at $(date +%Y%m%d)">>$path/tongji.log
 - echo "最高下载速度为 $MAX_RX kb/s at $(date +%Y%m%d)">>$path/tongji.log
 
Linux使用shell脚本监控的更多相关文章
- Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间
		
Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...
 - Linux/Unix shell 脚本监控磁盘可用空间
		
Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少.下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考. 1.监控磁盘的空闲空间shell脚本 robi ...
 - linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志
		
想在服务器上写一个shell脚本,在磁盘使用率达到80%时,自动清理掉一些没有用的日志文件,根据这个想法,在生产环境上写了一个以下脚本,按照该流程,可实现在linux环境做一个定时任务来执行shell ...
 - shell脚本监控Linux系统性能指标
		
2016-11-04 22:41 原作者不详 分类: Linux(7) 在服务器运维过程中,经常需要对服务器的各种资源进行监控, 例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出 ...
 - linux shell脚本监控进程是否存在
		
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ...
 - Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件
		
Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件 前言 公司有购买的监控软件北塔系统监控,由于购买的版权中只包含了有限台数据库服务器的监控,所以只监控了比较重要的几台服务器. 后边 ...
 - 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
		
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
 - 使用C#给Linux写Shell脚本(下篇)
		
在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...
 - 用shell脚本监控进程是否存在 不存在则启动的实例
		
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...
 
随机推荐
- 云计算OpenStack核心组件---glance镜像服务(6)
			
一.glance介绍: Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...
 - Java 关键字详解
			
Java 关键字是 Java 语言中被赋予特殊意义的一些单词(每个关键字都代表着不同场景下的不同含义),不可以把它当作标识符来使用(不能用作变量名.方法名.类名.包名和参数名等).Java 中的关键字 ...
 - JLINK下载出现问题
			
JLINK 下载报错: RAM CHECK FAILED 说法一: 有一种说法是版本的问题 http://tieba.baidu.com/p/1902940329?red_tag=d180765763 ...
 - Python对比两个txt文件内容
			
difflib模块作为python的标准库模块,无需安装,作用是比对文本之间的差异,且支持输出可读性比较强的html格式.#!coding=utf-8 # 2018-9-19 import sys i ...
 - PHP相关session的知识
			
由于http协议是一种无状态协议,所以没有办法在多个页面间保持一些信息.例如,用户的登录状态,不可能让用户每浏览一个页面登录一次.session就是为了解决一些需要在多页面间持久保持一种状态的机制.P ...
 - python 中的nonlocal
			
python 中nonloal 关键字用来在函数或其他作用域中使用外层变量(非全局),也可使用global需要在函数外部
 - 五种开源API网关实现组件对比
			
五种开源API网关实现组件对比 API 网关一些实现 使用一个组件时,尤其是这种比较流行的架构,组件肯定存在开源的,我们不必自己去从零开始去实现一个网关,自己开发一个网关的工作量是相当可观的, ...
 - Ascend昇腾计算
			
Ascend昇腾计算 Ascend昇腾计算,是基于昇腾系列处理器构建的全栈AI计算基础设施及应用,包括昇腾系列芯片.系列硬件.芯片使能.AI框架.应用使能等.华为Atlas人工智能计算解决方案,基于昇 ...
 - YOLO3升级优化版!Poly-YOLO:支持实例分割!
			
YOLO3升级优化版!Poly-YOLO:支持实例分割! POLY-YOLO: HIGHER SPEED, MORE PRECISE DETECTION AND INSTANCE SEGMENTATI ...
 - Collection&Map
			
1.Collection 添加元素 boolean add(E e) 删除元素 boolean remove(E e) 元素个数 int size() 清空 void clear() 判空 boole ...