配置定時(shí)任務(wù),用于生成iostat的統(tǒng)計(jì)數(shù)據(jù)
成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管維護(hù)等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出成都創(chuàng)新互聯(lián)。
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
添加執(zhí)行權(quán)限
# 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 ']}'
添加執(zhí)行權(quán)限
# 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
添加執(zhí)行權(quán)限
# chmod +x iostat.sh
測(cè)試
檢查/tmp/下的文件:iostat-data、iostat-data.tmp 是否生成
測(cè)試腳本在zabbix用戶下是否執(zhí)行正確:
$ ./lld-iostat.sh
$ ./iostat.sh hda w/s
編輯zabbix agentd 配置文件并增加自定義參數(shù),包括 lld 參數(shù)以及監(jiān)控參數(shù)
UserParameter=custom.vfs.dev.discovery,/usr/local/zabbix327/bin/lld-iostat.sh UserParameter=iostat[*],/usr/local/zabbix327/bin/iostat.sh $1 $2
配置模板/導(dǎo)入模板
Name: $1 $2 /****** $1 表示Key的第一個(gè)參數(shù) $2 表示Key的第二個(gè)參數(shù) ***/
Key : iostat[{#DEVNAME},svctm]
Type of information: Numberic (float)
Applications: iostat
Name :Disk Devices
Key : custom.vfs.dev.discovery
Update interval: 60
Configuration/Templates, 點(diǎn)擊Create template , 輸入模板名稱,并選擇Groups,并保存
選擇 Discovery rules,點(diǎn)擊 Create discovery rule,填寫必要信息后,進(jìn)行保存
選擇 Discovery rules,并點(diǎn)擊列表中的 Item prototypes , 點(diǎn)擊 Create item prototype 按鈕,配置完成后進(jìn)行保存。
按以上方法依次配置以下Item prototype(只需修改Key的第二個(gè)參數(shù)):
%util,rkB/s,avgqu-sz,await,wkB/s, w/s,avgrq-sz, rrqm/s, wrqm/s,r/s
根據(jù)需要配置Trigger prototypes 選擇Trigger prototypes tab,并點(diǎn)擊Create trigger prototype,這里重點(diǎn)說明,Expression部分, 點(diǎn)擊 Add 按鈕,在彈出的窗口,點(diǎn)擊 Select prototype,選擇監(jiān)控項(xiàng),然后配置其他項(xiàng)目。最后點(diǎn)擊保存。