當前位置:
首頁 > 科技 > zabbix監控linux磁碟性能

zabbix監控linux磁碟性能

前提環境

perl和python,以及zabbix-agent已是可用狀態。

需要主要監控的指標

1:每秒IO數,即iops或tps

2:吞吐率

3:平均IO尺寸,avgrq-sz

4:IO等待隊列長度,avgqu-sz

5:磁碟活動時間百分比,util

安裝iostat工具

yum install sysstat -y#centos7安裝iostat工具,centos6之前自帶

在agent端創建用於存放執行腳本的目錄,並修改許可權

mkdir /usr/lib/zabbix/alertscripts/ -p

chown zabbix:zabbix /usr/lib/zabbix/ -R

在/usr/lib/zabbix/alertscripts/目錄下創建磁碟發現腳本

cd/usr/lib/zabbix/alertscripts/

vim discover_disk.pl

#!/usr/bin/perl

# give disk dmname, returns Proxmox VM name

sub get_vmname_by_id

{

$vmname=`cat /etc/qemu-server/$_[0].conf | grep name | cut -d \: -f 2`;

$vmname=~ s/^\s //;#remove leading spaces

$vmname=~ s/\s $//;#remove trailing spaces

return$vmname

}

$first= 1;

print"{\n";

print"\t\"data\":[\n\n";

for(`cat /proc/diskstats`)

{

($major,$minor,$disk) = m/^\s*([0-9] )\s ([0-9] )\s (\S )\s.*$/;

$dmnamefile="/sys/dev/block/$major:$minor/dm/name";

$vmid="";

$vmname="";

$dmname=$disk;

$diskdev="/dev/$disk";

# DM name

if(-e$dmnamefile) {

$dmname= `cat$dmnamefile`;

$dmname=~ s/\n$//;#remove trailing \n

$diskdev="/dev/mapper/$dmname";

# VM name and ID

if($dmname=~ m/^.*--([0-9] )--.*$/) {

$vmid=$1;

#$vmname = get_vmname_by_id($vmid);

}

}

#print("$major $minor $disk $diskdev $dmname $vmid $vmname \n");

print"\t,\n"ifnot$first;

$first= 0;

print"\t{\n";

print"\t\t\"{#DISK}\":\"$disk\",\n";

print"\t\t\"{#DMNAME}\":\"$dmname\",\n";

print"\t\t\"{#VMNAME}\":\"$vmname\",\n";

print"\t\t\"{#VMID}\":\"$vmid\"\n";

print"\t}\n";

}

print"\n\t]\n";

print"}\n";

在/usr/lib/zabbix/alertscripts/目錄下創建定義key需要的文件,用於獲取io監控值

vim zbx_parse_iostat_values.sh

#!/bin/bash

dev=$1

type=$2

#enable debug mode

debug=0

if[[ -z"$dev"]];then

echo"error: wrong input value (device)"

exit1

fi

if[[ -z"$type"]];then

echo"error: wrong input value (type)"

exit1

fi

columns=`iostat -xN |egrep -o"^Device.*"`

columnsarray=($columns)

column_id=1

foriin"$"

do

#echo "column: $i"

if[["$i"="$type"]];then

if[[$debug-eq 1 ]];then

echo"right column ($) found...column_id:$column_id"

fi

id="$"

column_id_id=$id$column_id

iostats=`iostat -xN |egrep -o"^$[[:space:]] .*"|awk"}"`

fi

column_id=$[column_id 1]

done

if[ -z"$iostats"];then

echo"error: \"device\" or \"type\" not found ($,$)"

exit3

fi

iostats_lines=`wc -l

if[$iostats_lines-ne 1 ];then

echo"error: wrong output value ($)"

exit2

fi

echo$iostats

if[[$debug-eq 1 ]];then

echo"- - - - - - - - - -"

echo$columns

iostats_debug=`iostat -xN |egrep -o"^$[[:space:]] .*"`

echo$iostats_debug

echo"- - - - - - - - - -"

fi

exit

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux資訊速推 的精彩文章:

方舟編譯器8月正式開源!
最小化安裝CentOS 7.6後的優化

TAG:Linux資訊速推 |