zoukankan      html  css  js  c++  java
  • zabbix监控linux磁盘IO性能

    近期数据主机的磁盘IO经常峰值,影响业务的稳定运行。得到一个需求,要求通过zabbix监控agent主机的IO状态,要知道zabbix默认是没有监控zabbix模板的,那么此时需要我们定义脚本获取agent的IO性能,并在zabbix的web端定义模板来实现对数据库主机监控

    下面就来介绍如何通过zabbix对agent主机的IO性能进行监控:

    【Agent段配置详解】

    # egrep -v "#|^$" /etc/zabbix/zabbix_agentd.conf
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=0
    Server=10.15.200.72
    Include=/etc/zabbix/zabbix_agentd.d/*.conf

    # cat /etc/zabbix/zabbix_agentd.d/scripts/disk_discovery.sh   #编写自动发现磁盘脚本

    #!/bin/bash
    diskarray=(`cat /proc/diskstats |grep -E "sd[a-z]|xvd[a-z]|vd[a-z]"|awk '{print $3}'|sort|uniq  2>/dev/null`)
    length=${#diskarray[@]}
    printf "{
    "
    printf  '	'""data":["
    for ((i=0;i<$length;i++))
    do
            printf '
    		{'
            printf ""{#DISK_NAME}":"${diskarray[$i]}"}"
            if [ $i -lt $[$length-1] ];then
                    printf ','
            fi
    done
    printf  "
    	]
    "
    printf "}
    "

    # cat /etc/zabbix/zabbix_agentd.d/scripts/disk_status.sh   #获取磁盘IO数据

    #/bin/sh
    Device=$1
    DISK=$2
    case $DISK in
             rrqm)
                iostat -dxkt 1 2|grep "$Device"|tail -1|awk '{print $2}'
                ;;
             wrqm)
                iostat -dxkt 1 2|grep "$Device"|tail -1|awk '{print $3}'
                ;;
              rps)
                iostat -dxkt 1 2|grep "$Device"|tail -1|awk '{print $4}'
                ;;
              wps)
                iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $5}'
                ;;
            rKBps)
                iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $6}'
                ;;
            wKBps)
                iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $7}'
                ;;
            avgrq-sz)
                iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $8}'
                ;;
            avgqu-sz)
                iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $9}'
                ;;
            await)
                iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $10}'
                ;;
            svctm)
                iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $11}'
                ;;
             util)
                iostat -dxkt |grep "$Device" |tail -1|awk '{print $12}'
                ;;
    esac

    参数详解:

    rrqm/s:   每秒进行 merge 的读操作数目。即 delta(rmerge)/s
    wrqm/s:  每秒进行 merge 的写操作数目。即 delta(wmerge)/s
    rps:           每秒完成的读 I/O 设备次数。即 delta(rio)/s
    wps:         每秒完成的写 I/O 设备次数。即 delta(wio)/s
    rsec/s:    每秒读扇区数。即 delta(rsect)/s
    wsec/s:  每秒写扇区数。即 delta(wsect)/s
    rkBps:      每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
    wkBps:    每秒写K字节数。是 wsect/s 的一半。(需要计算)
    avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
    avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
    await:    平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
    svctm:   平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
    %util:      一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

    # cat /etc/zabbix/zabbix_agentd.d/disk_status.conf #将两个脚本授予执行权限,单独写在一个个配置文件中,

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

    【Zabbix-web端配置】

    1、新建模板,命名为DISK-IO,加入到Templates模板组。

     2、新建一个自动发现规则

     3、建立多个监控项原型

     

     4、建立触发器类型

     5、建立图形原型

     

     

     

     

    最后将定义的模板链接到某个监控主机,从图形中即可发现磁盘IO数据变化

     

     

      END!

  • 相关阅读:
    更多的bash命令
    简单的Writer和Reader
    矩阵的基本知识
    在Java中如何实现“Pless presss any key to continue.”
    递归思想解决输出目录下的全部文件
    初学File类
    如何避免遭受HTTS中间人攻击
    中间人攻击破解HTTPS传输内容
    LINE最新版6.5.0在iOS上的删除信息取证
    JB for iOS 9.3
  • 原文地址:https://www.cnblogs.com/bixiaoyu/p/12809426.html
Copyright © 2011-2022 走看看