文章目录
一、I/O
iostat
iotop
1.监控脚本
#!/bin/bash
echo "指定设备(/dev/sda)的统计信息"
# 每秒向设备发起的读请求次数
disk_sda_rs=`iostat -kx | grep sda| awk '{print $4}'`
echo "每秒向设备发起的读请求次数:"$disk_sda_rs
# 每秒向设备发起的写请求次数
disk_sda_ws=`iostat -kx | grep sda| awk '{print $5}'`
echo "每秒向设备发起的写请求次数:"$disk_sda_ws
# 向设备发起的I/O请求队列长度平均值
disk_sda_avgqu_sz=`iostat -kx | grep sda| awk '{print $9}'`
echo "向设备发起的I/O请求队列长度平均值"$disk_sda_avgqu_sz
# 每次向设备发起的I/O请求平均时间
disk_sda_await=`iostat -kx | grep sda| awk '{print $10}'`
echo "每次向设备发起的I/O请求平均时间:"$disk_sda_await
# 向设备发起的I/O服务时间均值
disk_sda_svctm=`iostat -kx | grep sda| awk '{print $11}'`
echo "向设备发起的I/O服务时间均值:"$disk_sda_svctm
# 向设备发起I/O请求的CPU时间百分占比
disk_sda_util=`iostat -kx | grep sda| awk '{print $12}'`
echo "向设备发起I/O请求的CPU时间百分占比:"$disk_sda_util
2.I/O过高异常如何解决
①IO使用情况定位
②top查询wa(i/o)的使用情况,查看io占用cpu是否较高。
③iostat -x 2 5查看各磁盘的%util情况,越高说明磁盘对应的io越高。
④iotop直接查看IO较高的进程号,当iotop命令不可以用时使用for x in seq 1 1 10
; do ps -eo state,pid,cmd | grep “^D”; echo “----”; sleep 5; done查询IO等待的对应进程
⑤cat /proc/pid/io查看对应进程使用的io情况
⑥lsof -p pid 或 ls /proc/pid/fd查看对应的应用目录
⑦fd /tmp查看对应的卷名
⑧是fdisk -l 或pvdisplay 查看对应的磁盘,来确认是否与io高的磁盘一致。
二、网络流量
1.监控脚本
#!/bin/bash
read -p '请输入网络接口: ' INTER #(使用read交互,请输入网络接口)
ifconfig $INTER &> /dev/null #(查看网络接口信息,将标准输出、标准错误的内容保存到黑洞里面)
if [ $? -ne 0 ];then #(当返回值不等于0时)
echo "此网络接口不存在!"
exit #(退出)
fi
while true