91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用zabbix動態監控磁盤I/O

發布時間:2020-06-18 22:02:21 來源:網絡 閱讀:17587 作者:自由linux 欄目:移動開發

最近在看Linux I/O子系統相關的資料,需要監控每臺服務器的磁盤I/O,特別是MongoDB數據庫服務器的磁盤I/O,由于每臺服務器的磁盤名稱可能不一樣,所以需要用到Zabbix的LLD功能來發現磁盤并監控I/O

參考文章

http://www.programering.com/a/MDOwYDNwATc.html


  1. 編寫發現磁盤的腳步

    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}'
            ;;
esac


3.修改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.00

5.添加磁盤監控模板

利用zabbix動態監控磁盤I/O

利用zabbix動態監控磁盤I/O

利用zabbix動態監控磁盤I/O

利用zabbix動態監控磁盤I/O

利用zabbix動態監控磁盤I/O

利用zabbix動態監控磁盤I/O

利用zabbix動態監控磁盤I/O


在添加item的時候注意,由于使用的是iostat -k 獲取每秒的讀寫大小,所以iostat顯示的是以KB為單位,在zabbix上以B為基本單位,需要用到Use custom multiplier 這個選項將zabbix agent返回的KB值乘以1024變成B,然后zabbix agent再以B為單位顯示成B或KB或MB便于查看。




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

房产| 天长市| 营口市| 遂溪县| 和田县| 海安县| 聂拉木县| 阳原县| 屏南县| 博兴县| 宜黄县| 仙桃市| 康定县| 浦东新区| 瑞安市| 辽宁省| 五常市| 沁源县| 长子县| 同仁县| 淮南市| 沙雅县| 白城市| 台中市| 鲁山县| 灌阳县| 罗城| 化德县| 蕲春县| 扶绥县| 和顺县| 山西省| 平乐县| 永兴县| 万盛区| 宁明县| 明溪县| 长宁区| 滨海县| 林甸县| 木兰县|