最近在看Linux I/O子系統(tǒng)相關(guān)的資料,需要監(jiān)控每臺服務器的磁盤I/O,特別是MongoDB數(shù)據(jù)庫服務器的磁盤I/O,由于每臺服務器的磁盤名稱可能不一樣,所以需要用到Zabbix的LLD功能來發(fā)現(xiàn)磁盤并監(jiān)控I/O
創(chuàng)新互聯(lián)公司專注于沙灣網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供沙灣營銷型網(wǎng)站建設,沙灣網(wǎng)站制作、沙灣網(wǎng)頁設計、沙灣網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務,打造沙灣網(wǎng)絡公司原創(chuàng)品牌,更為您提供沙灣網(wǎng)站排名全網(wǎng)營銷落地服務。
參考文章
http://www.programering.com/a/MDOwYDNwATc.html
編寫發(fā)現(xiàn)磁盤的腳步
shell版本disk_discovery.sh
#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "\bsd[a-z]\b|\bxvd[a-z]\b|\bvd[a-z]\b"|awk '{print $3}'|sort|uniq 2>/dev/null`)
length=${#diskarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
$ sh disk_discovery.sh
{
"data":[
{"{#DISK_NAME}":"xvda"},
{"{#DISK_NAME}":"xvdb"}
]
}
python版本disk_discovery.py
#/usr/bin/python
#This script is used to discovery disk on the server
import subprocess
import json
args="cat /proc/diskstats |grep -E '\ssd[a-z]\s|\sxvd[a-z]\s|\svd[a-z]\s'|awk '{print $3}'|sort|uniq 2>/dev/null"
t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]
disks=[]
for disk in t.split('\n'):
if len(disk) != 0:
disks.append({'{#DISK_NAME}':disk})
print json.dumps({'data':disks},indent=4,separators=(',',':'))
$ python disk_discovery.py
{
"data":[
{
"{#DISK_NAME}":"xvda"
},
{
"{#DISK_NAME}":"xvdb"
}
]
}2.編寫獲取磁盤I/O信息的腳本
使用iostat收集磁盤I/O信息
nohup /usr/bin/iostat -dxkt 1 > /tmp/iostat_output 2>/dev/null &
#/bin/sh
device=$1
item=$2
case $item in
rrqm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $2}'
;;
wrqm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $3}'
;;
rps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $4}'
;;
wps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $5}'
;;
rKBps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $6}'
;;
wKBps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $7}'
;;
avgrq-sz)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $8}'
;;
avgqu-sz)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $9}'
;;
await)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $10}'
;;
svctm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $11}'
;;
util)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $12}'
;;
esac3.修改Zabbix agent配置文件
添加disk_status.conf
### Option: UserParameter # User-defined parameter to monitor. There can be several user-defined parameters. # Format: UserParameter=<key>,<shell command> # See 'zabbix_agentd' directory for examples. # # Mandatory: no # Default: # UserParameter= UserParameter=disk.discovery,/usr/bin/python /usr/local/zabbix/bin/disk_discovery.py UserParameter=disk.status[*],/usr/local/zabbix/bin/disk_status.sh $1 $2
然后重新加載zabbix agent
4.通過在zabbix server或zabbix proxy端使用zabbix_get獲取磁盤信息
$ /usr/local/zabbix/bin/zabbix_get -s 192.168.1.190 -p 10055 -k "disk.discovery"
{
"data":[
{
"{#DISK_NAME}":"xvda"
},
{
"{#DISK_NAME}":"xvdb"
},
{
"{#DISK_NAME}":"xvdc"
}
]
}
$ /usr/local/zabbix/bin/zabbix_get -s 192.168.1.190 -p 10055 -k "disk.status[xvda,wps]"10.005.添加磁盤監(jiān)控模板







在添加item的時候注意,由于使用的是iostat -k 獲取每秒的讀寫大小,所以iostat顯示的是以KB為單位,在zabbix上以B為基本單位,需要用到Use custom multiplier 這個選項將zabbix agent返回的KB值乘以1024變成B,然后zabbix agent再以B為單位顯示成B或KB或MB便于查看。
名稱欄目:利用zabbix動態(tài)監(jiān)控磁盤I/O
網(wǎng)頁網(wǎng)址:http://chinadenli.net/article26/jpcscg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、商城網(wǎng)站、網(wǎng)頁設計公司、動態(tài)網(wǎng)站、面包屑導航、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)