监控服务器性能脚本

脚本

#!/bin/bash
echo Version:1.1.0 2022-01-20
#####循环间隔(秒)#####
INTERVAL_TIME=120

############################################使用方法 nohup /opt/shell/AllMonitor.sh & ####################################################################################

cd `dirname $0`
while : ; do
    Top_SER_LOAD=`uptime | awk -F':' '{print $NF}' |  awk -F',' '{print $1}'`
    First_Top_SER_LOAD=`echo $Top_SER_LOAD | awk -F'.' '{print $1}'`
    if [ $First_Top_SER_LOAD -ge 15 ] ; then
	
	echo "###################################################################################" >> /opt/shell/top-`date +%F`.log
    top -b -n 3 >> /opt/shell/top-`date +%F`.log
    #发送邮件(没有配置邮件功能可注释)
    #echo '服务器负载异常' | mail -s "WARN" xxxx@qq.com
      
	echo "###################################################################################" >> /opt/shell/iotop-`date +%F`.log
	#只显示有I/O行为的进程打印pid,显示10次
	iotop -oP -b -n10 >> /opt/sudytech/shell/iotop-`date +%F`.log
	
    echo "###################################################################################" >> /opt/shell/pidstat-`date +%F`.log
	#统计i/O,时间间隔1s 打印10次
	pidstat -d 1 10 >> /opt/shell/pidstat-`date +%F`.log

    fi
    sleep $INTERVAL_TIME
done

iotop

各个参数说明:
  -o, --only只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。
  -b, --batch非交互模式,一般用来记录日志。
  -n NUM, --iter=NUM设置监测的次数,默认无限。在非交互模式下很有用。
  -d SEC, --delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1。
  -p PID, --pid=PID指定监测的进程/线程。
  -u USER, --user=USER指定监测某个用户产生的I/O。
  -P, --processes仅显示进程,默认iotop显示所有线程。
  -a, --accumulated显示累积的I/O,而不是带宽。
  -k, --kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。
  -t, --time 加上时间戳,非交互非模式。
  -q, --quiet 禁止头几行,非交互模式。有三种指定方式。
  -q 只在第一次监测时显示列名
  -qq 永远不显示列名。
  -qqq 永远不显示I/O汇总。
交互按键:
  和top命令类似,iotop也支持以下几个交互按键。
  left和right方向键:改变排序。  
  r:反向排序。
  o:切换至选项--only。
  p:切换至--processes选项。
  a:切换至--accumulated选项。
  q:退出。
  i:改变线程的优先级。

pidstat

用法:
pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]

常用的选项:
-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值