zabbix自定义脚本监控---I/O监控

时间:2024-05-19 11:18:15

zabbix部署本文就不讲解了,有需要的请转至

https://blog.****.net/weixin_41492695/article/details/104839637

下面我们开始自定义脚本监控linux设备的I/O情况。

1.首先进入linux系统命令行

创建自动发现脚本

cat /etc/zabbix//scripts/Disk-discovery.sh

#!/bin/bash

disk_array=(`grep -E "(vd[a-z]$|sd[a-z]$)" /proc/partitions | awk '{print $4}'`)

length=${#disk_array[@]}

printf "{\n"

printf  '\t'"\"data\":["

for ((i=0;i<$length;i++))

do

        printf '\n\t\t{'

        printf "\"{#DISK_NAME}\":\"${disk_array[$i]}\"}"

        if [ $i -lt $[$length-1] ];then

                printf ','

        fi

done

printf  "\n\t]\n"

printf "}\n"

创建磁盘I/O监控脚本

cat /etc/zabbix/scripts/Disk-io-stat.sh

#!/bin/bash

Device=$1
DISK=$2

case $DISK in 

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

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

    rs)
        iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $4}'
        ;;

    ws)
        iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $5}'
        ;;

    rKB)
        iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $6}'
        ;;

    wKB)
        iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $7}'
        ;;

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

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

    await)
        iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $10}'
        ;;

    svctm)
        iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $13}'
        ;;

    util)
        iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $14}'
        ;;

    *)
        echo -e "\e[033mUsage: sh $0 [rrqm|wrqm|rs|ws|rKB|wKB|avgqu-sz|avgrq-sz|await|svctm|util]\e[0m"
esac


2.修改agent配置文件

vim /etc/zabbix/zabbix_agentd.conf

EnableRemoteCommands=1    #开启远程命令

Server=192.168.1.189    #zabbix server的ip

ServerActive=192.168.1.189    #zabbix server的ip

Hostname=agent-189    #主机名,需与zabbix server上的配置名一致

Include=/etc/zabbix/zabbix_agentd.d/*.conf    #可执行该目录下的conf文件

UnsafeUserParameters=1    #允许自定义key

3.创建conf文件,执行1、2中的脚本

cat /etc/zabbix/zabbix_agentd.d/zabbix-disk-io-stats.conf

UserParameter=disk.discovery,/etc/zabbix/scripts/Disk-discovery.sh
UserParameter=disk.io[*],/etc/zabbix/scripts/Disk-io-stat.sh $1 $2

上面步骤都配置好后需重启agent生效,systemctl restart zabbix-agent.service

可在zabbix server端执行命令检查上面配置是否正确

自动发现key:zabbix_get -s 192.168.1.189 -k disk.discovery

zabbix自定义脚本监控---I/O监控

磁盘I/O监控key:zabbix_get -s 192.168.1.189 -k disk.io[sda,util]

zabbix自定义脚本监控---I/O监控

获取到上面的值,说明前面步骤都没问题,下面还是zabbix server端web页面配置

4.进入Configuration-Templates,先创建模板,点击Create template

zabbix自定义脚本监控---I/O监控

zabbix自定义脚本监控---I/O监控

添加applications

zabbix自定义脚本监控---I/O监控

5.创建discovery

点击discovery

zabbix自定义脚本监控---I/O监控

点击Create discovery rule

zabbix自定义脚本监控---I/O监控

6.创建监控原型

zabbix自定义脚本监控---I/O监控

zabbix自定义脚本监控---I/O监控

{#DISK_NAME} I/O avgqu-sz 平均等待处理的IO请求队列长度    disk.io[{#DISK_NAME},avgqu-sz]

{#DISK_NAME} I/O avgrq-sz 平均每次IO操作的数据量    disk.io[{#DISK_NAME},avgrq-sz]

{#DISK_NAME} I/O await 平均每次IO请求等待时间    disk.io[{#DISK_NAME},await]

{#DISK_NAME} I/O r/s 每秒完成的读次数    disk.io[{#DISK_NAME},rs]
{#DISK_NAME} I/O rKB/s 每秒读数据量        disk.io[{#DISK_NAME},rKB]
{#DISK_NAME} I/O rrqm 每秒对该设备的读请求被合并次数    disk.io[{#DISK_NAME},rrqm]
{#DISK_NAME} I/O svctm 平均每次IO请求的处理时间    disk.io[{#DISK_NAME},svctm]
{#DISK_NAME} I/O util 队列非空的时间比率    disk.io[{#DISK_NAME},util]
{#DISK_NAME} I/O w/s 每秒完成的写次数    disk.io[{#DISK_NAME},ws]
{#DISK_NAME} I/O wKB/s 每秒写数据量    disk.io[{#DISK_NAME},wKB]
{#DISK_NAME} I/O wrqm 每秒对该设备的写请求被合并次数    disk.io[{#DISK_NAME},wrqm]

7.创建图像原型

zabbix自定义脚本监控---I/O监控

zabbix自定义脚本监控---I/O监控

到这里就配置结束了,等几分钟后去monitoring-graphs查看图像监控

zabbix自定义脚本监控---I/O监控