• 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!

  • 相关阅读:
    redis启动
    supervisor thinkphp6 qune
    iview table header cell tooltip; iview表格 表头、单元格文字提示 ;iview 表格 悬浮提示
    .net mvc 中引入 echarts dataTool prepareBoxplotData
    iview table 初始化为null问题
    sqlserver 视图 EF无法从数据更新模型
    sql 空格变问号;sql 无法 去掉 空格 ;sql rtrim 失效;(转载)
    MongoDB的备份与恢复(转载)
    jQuery的deferred对象详解(转载)
    今天,我们小公司的服务器被黑了!!!
  • 原文地址:https://www.cnblogs.com/bixiaoyu/p/12809426.html
Copyright © 2020-2023  润新知