zabbi监控linux磁盘io,自动发现 - Zabbix监控磁盘IO状态详解_服务器应用_Linux公社-Linux系统门户网站...

上篇写了一个zabbix_系统IO监控,但每次都需要手动加,比较费劲,监控项跟图形都只能一个一个加

这次使用zabbix_自动发现的模式来搞一次,

大概思路,

1、在zabbix客户端先配置iostat最新数据,

1.1、不能直接使用iostat,因为它的数据一直会固定不动,使用iostst -xdkt 5 3  (5秒3次)

1.2、 定义好脚本之后需要使用crontab配置每1分钟或者30秒更新一次数据,直接输送到文件就成

2、写一个自动发现的脚本,发现iostat有几个磁盘,格式必须为JSON,key值必须大写

2.1、 小写会出现 这个  Cannot create item: item with the same key “custom.vfs.dev.read.ops [[xxxxxx]] already exists

2.2、 避免出现坑,配置完成之后在zabbix服务端上运行,出现下图的结果说明脚本运行正常

2.3、 在测试之前,必须在zabbix客户端的配置文件中加一行,io.dis为自己定义的键

UserParameter=io.dis.status[*],/usr/local/zabbix/scripts/discovery_iostat_disk.sh

681c9e2a94bd66a150f2cf6a1dc700f8.png

3、最后在弄一个脚本,配置你想要监控的项就成

rrqm/s  wrqm/s    r/s    w/s    rkB/s    wkB/s avgrq-sz avgqu-sz  await r_await w_await  svctm  %util

各项值的详解

rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s

wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s

r/s: 每秒完成的读 I/O 设备次数。即 rio/s

w/s: 每秒完成的写 I/O 设备次数。即 wio/s

rsec/s: 每秒读扇区数。即 rsect/s

wsec/s: 每秒写扇区数。即 wsect/s

rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。

wkB/s: 每秒写K字节数。是 wsect/s 的一半。

avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。

avgqu-sz: 平均I/O队列长度。

await: 平均每次设备I/O操作的等待时间 (毫秒)。

svctm: 平均每次设备I/O操作的服务时间 (毫秒)。

%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

4、 附上脚本一共四个  所有脚本都需要7的权限 rwx 使用zabbix用户

#!/bin/bash

#

#  Name:service 取出io数据用于分析

#  Version Number:1.01

#  Type: 取出I/O数据

#  Language:bash shell

#  Date:2017-08-07

#  Author:xiong

iostat -xdkt 5 3 > /tmp/io.txt

times=`date +%H":"%M":"%S`

# 取出最后一次iostat更新的数据,为最新数据,将最新的数据更新至/tmp/2.txt 不输出

grep "$times" -A 100 /tmp/io.txt  > /tmp/io2.txt

#!/bin/bash

#

#  Name:service 自动发现io_磁盘

#  Version Number:1.01

#  Type: 自动发现io_磁盘

#  Language:bash shell

#  Date:2017-08-07

#  Author:xiong

disk=(`awk '{print $1}' /tmp/io2.txt | sed -e "1,2d"`)

length=${#disk[@]}

printf "{\n"

printf "\t\"data:\"[\n"

for ((i=0;i

printf '\t\t{'

printf "\"{#disk_name}\":\"${disk[$i]}\"}"

if [ $i -lt $[$length - 1] ];then

printf ",\n"

fi

done

printf "\n\t]\n"

printf "}\n"

############### 配置脚本

#!/bin/bash

#

#  Name:service 自动发现io_磁盘

#  Version Number:1.01

#  Type: 自动发现io_磁盘

#  Language:bash shell

#  Date:2017-08-07

#  Author:xiong

disk=$1

case $2 in

rrqm)

grep "$disk" /tmp/io2.txt | awk '{print $2}' ;;

wrqm)

grep "$disk" /tmp/io2.txt | awk '{print $3}' ;;

rs)

grep "$disk" /tmp/io2.txt | awk '{print $4}' ;;

ws)

grep "$disk" /tmp/io2.txt | awk '{print $5}' ;;

rkB)

grep "$disk" /tmp/io2.txt | awk '{print $6}' ;;

wkB)

grep "$disk" /tmp/io2.txt | awk '{print $7}' ;;

avgrqsz)

grep "$disk" /tmp/io2.txt | awk '{print $8}' ;;

avgqusz)

grep "$disk" /tmp/io2.txt | awk '{print $9}' ;;

await)

grep "$disk" /tmp/io2.txt | awk '{print $10}' ;;

rawait)

grep "$disk" /tmp/io2.txt | awk '{print $11}' ;;

wawait)

grep "$disk" /tmp/io2.txt | awk '{print $12}' ;;

svctm)

grep "$disk" /tmp/io2.txt | awk '{print $13}' ;;

util)

grep "$disk" /tmp/io2.txt | awk '{print $14}' ;;

esac*)

echo "使用方法  /bash disk_name disk_type"

exit 5 ;;

esac

# 附上一个临时配置脚本文件,懒得写的 可以先运行一下这个脚本,然后再修改一下就成

#!/bin/bash

#

a=(`cat io2.txt |sed '1d' | grep '^Device'`)

length=${#a[@]}

printf "#!/bin/bash\n"

printf "#\n"

printf "case \$1 in\n"

for ((i<0;i

printf "${a[$i]})\n"

printf "\tgrep \"\$disk\" /tmp/io2.txt | awk \'{print $i}\' ;;\n"

done

printf "esac\n"

5、  配置计划任务,让iostat.sh脚本能够1分钟或者30秒执行一次,取最新的数据

crontab -e 中添加一行

0 */1 * * * /bin/bash /usr/local/zabbix/scripts/iostat.sh

6、 zabbix客户端配置

vim ../etc/zabbix_agentd.conf  # 此处为自己配置的zabbix目录 使用绝对路径最为妥当

UserParameter=io.dis.status[*],/usr/local/zabbix/scripts/discovery_iostat_disk.sh

UserParameter=io.status[*],/usr/local/zabbix/scripts/zabbix_iostat_disk.sh  $1 $2

7、 效果图,所有的键值类型都是字符型

93b2f6814a385886e65325bb9359d23b.png

04ad0c550afbd3904358be2b34cf362b.png

189b89da5405d0c894bb4f4340f98bd5.png

983d5c9156cc912a80a1f8ccc909a88e.png

8、 最后附上模板

太长不方便看,请附件中下载

可以到Linux公社资源站下载:

------------------------------------------分割线------------------------------------------

具体下载目录在 /2017年资料/8月/23日/Zabbix监控磁盘IO状态详解/

------------------------------------------分割线------------------------------------------

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值