配置定时任务,用于生成iostat的统计数据
crontab -e
* * * * * /usr/local/zabbix327/bin/iostat-cron.sh
编辑 /usr/local/zabbix327/bin/iostat-cron.sh
#!/bin/bash
DEST_DATA=/tmp/iostat-data
TMP_DATA=/tmp/iostat-data.tmp
iostat -kx 10 2 > $TMP_DATA
mv $TMP_DATA $DEST_DATA
添加执行权限
# chmod +x iostat-cron.sh
编辑 /usr/local/zabbix327/bin/lld-iostat.sh
#!/bin/bash
DEVICES=`iostat | awk '{ if ($1 ~ "^([shxv]|xv)d[a-z]$") { print $1 } }'`
COUNT=`echo "$DEVICES" | wc -l`
INDEX=0
echo '{"data":['
echo "$DEVICES" | while read LINE; do
echo -n '{"{#DEVNAME}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}'
添加执行权限
# chmod +x lld-iostat.sh
编辑 /usr/local/zabbix327/bin/iostat.sh
#!/bin/bash
ZBX_REQ_DATA="$2"
ZBX_REQ_DATA_DEV="$1"
SOURCE_DATA=/tmp/iostat-data
ERROR_NO_DATA_FILE="-0.9900"
ERROR_OLD_DATA="-0.9901"
ERROR_WRONG_PARAM="-0.9902"
ERROR_MISSING_PARAM="-0.9903"
if [ ! -f "$SOURCE_DATA" ]; then
echo $ERROR_NO_DATA_FILE
exit 1
fi
if [ -z "$ZBX_REQ_DATA_DEV" ]; then
echo $ERROR_MISSING_PARAM
exit 1
fi
OLD_DATA=5
if [ $(stat -c "%Y" $SOURCE_DATA) -lt $(date -d "now -$OLD_DATA min" "+%s" ) ]; then
echo $ERROR_OLD_DATA
exit 1
fi
device_count=$(grep -Ec "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA)
if [ $device_count -eq 0 ]; then
echo $ERROR_WRONG_PARAM
exit 1
fi
case $ZBX_REQ_DATA in
rrqm/s) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $2}';;
wrqm/s) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $3}';;
r/s) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $4}';;
w/s) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $5}';;
rkB/s) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $6}';;
wkB/s) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $7}';;
avgrq-sz) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $8}';;
avgqu-sz) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $9}';;
await) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $10}';;
svctm) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $11}';;
%util) grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $12}';;
*) echo $ERROR_WRONG_PARAM; exit 1;;
esac
exit 0
添加执行权限
# chmod +x iostat.sh
测试
检查/tmp/下的文件:iostat-data、iostat-data.tmp 是否生成
测试脚本在zabbix用户下是否执行正确:
$ ./lld-iostat.sh
$ ./iostat.sh hda w/s
编辑zabbix agentd 配置文件并增加自定义参数,包括 lld 参数以及监控参数
UserParameter=custom.vfs.dev.discovery,/usr/local/zabbix327/bin/lld-iostat.sh UserParameter=iostat[*],/usr/local/zabbix327/bin/iostat.sh $1 $2
配置模板/导入模板
Name: $1 $2 /****** $1 表示Key的第一个参数 $2 表示Key的第二个参数 ***/
Key : iostat[{#DEVNAME},svctm]
Type of information: Numberic (float)
Applications: iostat
Name :Disk Devices
Key : custom.vfs.dev.discovery
Update interval: 60
Configuration/Templates, 点击Create template , 输入模板名称,并选择Groups,并保存
选择 Discovery rules,点击 Create discovery rule,填写必要信息后,进行保存
选择 Discovery rules,并点击列表中的 Item prototypes , 点击 Create item prototype 按钮,配置完成后进行保存。
按以上方法依次配置以下Item prototype(只需修改Key的第二个参数):
%util,rkB/s,avgqu-sz,await,wkB/s, w/s,avgrq-sz, rrqm/s, wrqm/s,r/s
根据需要配置Trigger prototypes 选择Trigger prototypes tab,并点击Create trigger prototype,这里重点说明,Expression部分, 点击 Add 按钮,在弹出的窗口,点击 Select prototype,选择监控项,然后配置其他项目。最后点击保存。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。