最近在工作中,遇到了IO使用率过高告警。但是移动的系统又很严格,不能随便安装监控开源软件。这里我只能通过向方法使用脚本去完成监控。
监控方法如下:
1、安装iotop软件(centos7默认是有这个包):
2、使用iotop -obt >> testfile.txt 重定向到testfile文件(意思是将实时在使用磁盘的程序显示):
3、自己写个脚本查看监控情况,写好脚本。我这里抓取的信息是时间,磁盘读写转数、使用率、进程名。然后写到计划任务里面去就可以去做日志提取了。(提取日志自己研究了)
[root@master ~]# cat iotest.sh
#!/bin/bash
IFS=$'\n'
for i in $(grep `date +"%H:%M"` testfile.txt | grep "%" | awk '{if($11>=0.5) {print $1"\t",$5,$6"\t",$7,$8"\t",$9,$10"\t",$11,$12"\t",$13}}')
do
echo `date +"%Y-%m-%d"` $i
done
4、最后做个计划任务每十秒去执行脚本(这个根据自己情况定);
* * * * * sleep 00; /root/iotest.sh >> iotest.txt &
* * * * * sleep 10; /root/iotest.sh >> iotest.txt &
* * * * * sleep 20; /root/iotest.sh >> iotest.txt &
* * * * * sleep 30; /root/iotest.sh >> iotest.txt &
* * * * * sleep 40; /root/iotest.sh >> iotest.txt &
* * * * * sleep 50; /root/iotest.sh >> iotest.txt &
5、测试每时每刻监控IO使用率情况:
[root@master ~]# ./iotest.sh
2018-12-14 00:40:00 0.00 B/s 0.00 B/s 0.00 % 0.65 % [kworker/0:1]
2018-12-14 00:40:04 0.00 B/s 0.00 B/s 0.00 % 0.66 % [kworker/0:1]
2018-12-14 00:40:06 0.00 B/s 0.00 B/s 0.00 % 0.54 % [kworker/0:1]
2018-12-14 00:40:10 0.00 B/s 0.00 B/s 0.00 % 0.96 % [kworker/0:1]
2018-12-14 00:40:23 0.00 B/s 0.00 B/s 0.00 % 1.13 % [kworker/0:1]
2018-12-14 00:40:24 0.00 B/s 0.00 B/s 0.00 % 1.15 % [kworker/0:1]
2018-12-14 00:40:28 0.00 B/s 0.00 B/s 0.00 % 0.59 % [kworker/0:1]
2018-12-14 00:40:30 0.00 B/s 0.00 B/s 0.00 % 0.56 % [kworker/0:1]
2018-12-14 00:40:36 0.00 B/s 0.00 B/s 0.00 % 0.76 % [kworker/0:1]
[root@master ~]# cat iotest.txt
2018-12-14 00:48:01 0.00 B/s 0.00 B/s 0.00 % 0.59 % [kworker/0:2]
2018-12-14 00:48:01 0.00 B/s 0.00 B/s 0.00 % 0.59 % [kworker/0:2]
2018-12-14 00:48:05 0.00 B/s 0.00 B/s 0.00 % 0.52 % [kworker/0:2]
2018-12-14 00:48:07 0.00 B/s 0.00 B/s 0.00 % 0.54 % [kworker/0:2]
2018-12-14 00:48:09 0.00 B/s 0.00 B/s 0.00 % 0.56 % [kworker/0:2]
2018-12-14 00:49:00 0.00 B/s 0.00 B/s 0.00 % 0.77 % [kworker/0:2]
2018-12-14 00:49:00 0.00 B/s 0.00 B/s 0.00 % 0.77 % [kworker/0:2]
2018-12-14 00:49:02 0.00 B/s 0.00 B/s 0.00 % 0.61 % [kworker/0:2]
2018-12-14 00:49:08 0.00 B/s 0.00 B/s 0.00 % 1.71 % [kworker/0:2]
2018-12-14 00:49:19 0.00 B/s 0.00 B/s 0.00 % 0.58 % [kworker/0:2]
2018-12-14 00:49:23 0.00 B/s 0.00 B/s 0.00 % 0.54 % [kworker/0:2]
2018-12-14 00:50:00 0.00 B/s 0.00 B/s 0.00 % 0.50 % [kworker/0:2]
2018-12-14 00:53:02 0.00 B/s 0.00 B/s 0.00 % 1.08 % [kworker/0:1]
2018-12-14 00:53:08 0.00 B/s 0.00 B/s 0.00 % 1.15 % [kworker/0:1]
2018-12-14 00:53:18 0.00 B/s 0.00 B/s 0.00 % 0.67 % [kworker/0:1]
2018-12-14 00:53:20 0.00 B/s 0.00 B/s 0.00 % 0.52 % [kworker/0:1]
2018-12-14 00:53:22 0.00 B/s 0.00 B/s 0.00 % 0.69 % [kworker/0:1]
2018-12-14 00:53:29 0.00 B/s 0.00 B/s 0.00 % 0.61 % [kworker/0:1]
2018-12-14 00:53:33 0.00 B/s 0.00 B/s 0.00 % 0.55 % [kworker/0:1]
2018-12-14 00:53:35 0.00 B/s 0.00 B/s 0.00 % 0.55 % [kworker/0:1]
2018-12-14 00:53:39 0.00 B/s 0.00 B/s 0.00 % 0.51 % [kworker/0:1]
2018-12-14 00:59:01 0.00 B/s 0.00 B/s 0.00 % 0.51 % [kworker/0:1]
2018-12-14 00:59:03 0.00 B/s 0.00 B/s 0.00 % 0.57 % [kworker/0:1]
2018-12-14 01:00:02 0.00 B/s 0.00 B/s 0.00 % 0.62 % [kworker/0:1]
2018-12-14 01:01:03 0.00 B/s 0.00 B/s 0.00 % 0.93 % [kworker/0:1]
2018-12-14 01:02:01 31.06 K/s 0.00 B/s 0.00 % 0.67 % systemd-journald
2018-12-14 01:02:05 0.00 B/s 0.00 B/s 0.00 % 0.58 % [kworker/0:1]
2018-12-14 01:01:03 0.00 B/s 0.00 B/s 0.00 % 0.93 % [kworker/0:1]
2018-12-14 01:05:05 0.00 B/s 0.00 B/s 0.00 % 1.12 % [kworker/0:2]
2018-12-14 01:06:00 0.00 B/s 0.00 B/s 0.00 % 0.55 % [kworker/0:2]
2018-12-14 01:06:04 0.00 B/s 0.00 B/s 0.00 % 0.56 % [kworker/0:2]
2018-12-14 01:06:06 0.00 B/s 0.00 B/s 0.00 % 0.60 % [kworker/0:2]
6、总结:
1)使用for循环的时候需要使用 IFS=$'\n' 去转义,否则你输出的结果是这样的:
[root@master ~]# ./abc123.sh
2018-12-14 00:40:00
2018-12-14 0.00
2018-12-14 B/s
2018-12-14 0.00
2018-12-14 B/s
2018-12-14 0.00
2018-12-14 %
2018-12-14 0.65
2018-12-14 %
2018-12-14 [kworker/0:1]
2018-12-14 00:40:04
2018-12-14 0.00
2018-12-14 B/s
2018-12-14 0.00
2018-12-14 B/s
2018-12-14 0.00
2018-12-14 %
2018-12-14 0.66
2018-12-14 %
2018-12-14 [kworker/0:1]
好啦!写好的监控IO使用率的脚本可以直接拿去使用,希望能够帮到大家。