自动寻找磁盘
说到底,所有的自动判断都是人为的设置好所有的可能性,然后根据实际情况从中选择,方法有很多,看大家具体要求。在这里,我要对磁盘监控,首先要找出有哪些磁盘,这里使用shell脚本实现。由于zabbix的discovery需要固定的格式,具体可以参考这里,最下面部分。
脚本如下:
1 #!/bin/bash 2 #written by lenwood 3 #mail:ccyhaoran@livecn 4 diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bxvd[abcdefg]\b"|grep -i "\b$1\b"|awk '{print $3}'|sort|uniq 2>/dev/null`) 5 length=${#diskarray[@]} 6 printf "{\n" 7 printf '\t'"\"data\":[" 8 for ((i=0;i<$length;i++)) 9 do10 printf '\n\t\t{'11 printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"12 if [ $i -lt $[$length-1] ];then13 printf ','14 fi15 done16 printf "\n\t]\n"17 printf "}\n"
如上,这里通过读取/proc/diskstats,选择其中的磁盘,根据实际情况,我这里就找出类似sda或者xvda的,因为我们用的是sata接口的硬盘以及部分阿里云的服务器。
脚本执行出来的结果类似如下
1 {2 "data":[3 {"{#DISK_NAME}":"sda"}4 {"{#DISK_NAME}":"sdb"}5 ]6 }
然后使用zabbix执行这个脚本,那么就要将其写到zabbix_agentdconf中去,如下
UserParameter=ioscandisk[],/infra/zabbix/os/disk_scansh $1
iostat命令
对于磁盘的监控我采用iostat命令,因为它能给出磁盘的详细信息,如扇区读写情况,io队列长度,iowait,svctime等等。
命令如下:
1 nohup iostat -m -x -d 30 >/tmp/iostat_output &
通过tail -f /tmp/iostat_output,可获得iostat命令收集的磁盘信息,结果类似下面
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
hda 000 020 000 743 000 016 4328 023 3080 243 181hda1 000 020 000 743 000 016 4328 023 3080 243 181hda2 000 000 000 000 000 000 000 000 000 000 000xvdb 000 000 000 000 000 000 000 000 000 000 000xvdb1 000 000 000 000 000 000 000 000 000 000 000hdc 000 000 000 000 000 000 000 000 000 000 000
其中部分参数的详细解释如下
rrqm/s: 每秒进行 merge 的读 *** 作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写 *** 作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/sw/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O *** 作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O *** 作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O *** 作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)%util: 一秒中有百分之多少的时间用于 I/O *** 作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
紫盘是为监控硬盘录像设备专门设计的,稳定性比之红蓝稍好,连续读写性能差不多,随机读写性能最弱,声音非常小。NAS是存储云,这是个机器,功能上就是存储数据,和电脑通过网线/wifi连接。
NAS大部分使用西部数据红盘,或者希捷/东芝等牌子的监控级硬盘,这类优点就是寿命长,不容易出现故障,但是牺牲了部分性能,求稳定性。
台式机的一般硬盘是寿命和速度适中,没有两边倒,一般来说都是速度更快些。
企业级硬盘的寿命非常长,稳定性强,速度和家用台式的盘差不多速度。
游戏盘,大部分是西部数据黑盘,速度快,声音发热较大些。但速度还是比不上SSD的。
硬盘之间区别就是速度,稳定性(平均无故障时间),看厂家如何取舍了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)