服务器监控之zabbix监控IO篇

1、配置脚本

在被监控端编写自动发现和监控磁盘IO脚本

脚本目录/etc/zabbix/zabbix_agentd.d/script

 

[root@baiwang_database1 zabbix]# mkdir script

[root@baiwang_database1 zabbix]# cd script/

  • 配置磁盘发现脚本

[root@baiwang_database1 script]# vi 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"

  • 配置抽取磁盘io信息的脚本

[root@baiwang_database1 script]# vi disk_status.sh

内容如下

#/bin/sh

Device=$1

DISK=$2

case $DISK in

         "rrqm") iostat -dxkt 1 3 |grep "\b$Device\b"|tail -1|awk '{print $2}'

                   ;;

         "wrqm") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $3}'

                   ;;

         "read.ps") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $4}'

                   ;;

         "write.ps") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $5}'

                   ;;

         "rKB.ps") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $6}'

                   ;;

         "wKB.ps") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $7}'

                   ;;

         "avgrq-sz") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $8}'

                   ;;

         "avgqu-sz") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $9}'

                   ;;

         "await") iostat -dxkt 1 3|grep "\b$Device\b" |tail -1|awk '{print $10}'

                   ;;

         "r_await") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $11}'

                   ;;

         "w_await") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $12}'

                   ;;

         "svctm") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $13}'

                   ;;

         "util") iostat -dxkt 1 3 |grep "\b$Device\b" |tail -1|awk '{print $14}'

                   ;;

     "tps") iostat -dk 1 2|grep "\b$Device\b" |tail -1|awk '{print $2}'

                ;;

esac

  • 赋予脚本执行权限

[root@baiwang_database1 script]# chmod a+x disk_discovery.sh

[root@baiwang_database1 script]# chmod a+x disk_status.sh

 

④本地测试脚本

[root@baiwang_database1 script]# sh disk_discovery.sh

{

         "data":[

                   {"{#DISK_NAME}":"sda"}

         ]

}

[root@baiwang_database1 script]# sh disk_status.sh sda util

18.20

[root@baiwang_database1 script]# sh disk_status.sh sda await

13.38

[root@baiwang_database1 script]# sh disk_status.sh sda w_await

13.25

[root@baiwang_database2 script]# sh disk_status.sh sda tps

93.00

测试取数正常

创建zabbix配置文件

# cat disk_io.conf

#!/bin/bash

UserParameter=disk.discovery[*],/etc/zabbix/scripts/disk_discover.sh

UserParameter=disk.status[*],/etc/zabbix/scripts/disk_status.sh $1 $2

2、创建监控模板

2.1 创建模板名称

配置à模板à创建模板

 

2.2 创建自动发现

 

点击创建自动发现规则

键值disk.discovery

 

 

更新后,在自动发现的项里创建监控项,触发器,图形等

 

(下图为后来补充的图)

 

下面开始创建

2.3 创建监控项

配置参数如下所示

{#DISK_NAME}每个写IO的平均耗时(毫秒)

disk.status[{#DISK_NAME},w_await]

信息类型:浮点数

单位: ms

        

{#DISK_NAME}平均每次设备I/O请求的操作时间(毫秒)

disk.status[{#DISK_NAME},svctm]

信息类型:浮点数

单位: ms

 

{#DISK_NAME}平均每次IO请求的数据块大小

disk.status[{#DISK_NAME},avgrq-sz]

信息类型:浮点数

单位: KB

 

{#DISK_NAME}平均每次IO请求的队列长度

disk.status[{#DISK_NAME},avgqu-sz]

信息类型:浮点数

单位:

 

{#DISK_NAME}平均每次设备I/O等待和操作的时间(毫秒)

disk.status[{#DISK_NAME},await]

信息类型:浮点数

单位: ms

 

{#DISK_NAME}每秒写入设备的大小

disk.status[{#DISK_NAME},wKB.ps]

信息类型:浮点数

单位:

 

 {#DISK_NAME}每秒合并到设备的写入请求数

disk.status[{#DISK_NAME},wrqm]

信息类型:浮点数

单位:

 

{#DISK_NAME}每秒写I/O设备次数

disk.status[{#DISK_NAME},write.ps]

信息类型:浮点数

单位:

 

 {#DISK_NAME}每秒读I/O设备次数

disk.status[{#DISK_NAME},read.ps]

信息类型:浮点数

单位:

 

 {#DISK_NAME}每秒读取设备大小

disk.status[{#DISK_NAME},rKB.ps]

信息类型:浮点数

单位:KB

 

 {#DISK_NAME}每秒合并到设备的读取请求数

disk.status[{#DISK_NAME},rrqm]

信息类型:浮点数

单位:

 

{#DISK_NAME}每秒IO请求操作占比(util)

disk.status[{#DISK_NAME},util]

信息类型:浮点数

单位: %

 

{#DISK_NAME}每个读请求平均所需时间(毫秒)

disk.status[{#DISK_NAME},r_await]

信息类型:浮点数

单位:ms

 

{#DISK_NAME}设备每秒I/O的请求次数

disk.status[{#DISK_NAME},tps]

信息类型:浮点数

 

 

 

 

创建完成后,如下

 

2.4 创建触发器

 

2.5 创建图形

{#DISK_NAME} IO队列长度

{#DISK_NAME} I/O时间占比util

{#DISK_NAME} I/O 请求处理时间

{#DISK_NAME} I/O 读写大小

{#DISK_NAME} I/O 请求次数

{#DISK_NAME} I/O 每秒请求的块平均大小

 

创建每秒io时间图形

 

 

创建每秒io 次数图形

 

 

创建io 读写大小的图形

 

后面略…………………………

创建完成后如下

 

3、测试自动发现脚本

登录zabbix server 10.249.100.251测试脚本是否能取到数值

[root@localhost ~]# ip a|grep inet

    inet 127.0.0.1/8 scope host lo

    inet 10.249.100.251/24 brd 10.249.100.255 scope global eno16777728

[root@localhost ~]# zabbix_get -s 10.249.2.185 -k disk.discovery

{

         "data":[

                   {"{#DISK_NAME}":"sda"}

         ]

}

[root@localhost ~]# zabbix_get -s 10.249.2.185 -k "disk.status[sda,w_await]"

30.75

[root@localhost ~]# zabbix_get -s 10.249.2.185 -k "disk.status[sda,util]"

8.60

[root@master script]# sh disk_discovery.sh

{

         "data":[

                   {"{#DISK_NAME}":"sda"}

         ]

}

 

测试其他客户端

[root@localhost ~]# # zabbix_get -s 10.249.4.143 -k disk.discovery

{

         "data":[

                   {"{#DISK_NAME}":"sda"},

                   {"{#DISK_NAME}":"sdb"},

                   {"{#DISK_NAME}":"sdc"}

         ]

}

[root@localhost ~] # zabbix_get -s 10.249.4.143 -k "disk.status[sdc,r_await]"

2.09

[root@localhost ~] # zabbix_get -s 10.249.4.143 -k "disk.status[sdc,write.qps]"

0.45

4、配置zabbix客户端

 

 

5、效果展示

 

 

到此配置完毕。

如果zabbix安装了grafana插件,显示会更加美观

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值