• Zabbix监控IO


    导入模板

    configuration->templates->import,选择你需要导入的模板文件

    #zabbix_agentd配置

    # iostat
    #磁盘读的次数
    UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$4}'
    #磁盘读的毫秒数
    UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$7}'
    #磁盘写的次数
    UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$8}'
    #磁盘写的毫秒数
    UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$11}'
    #正在处理的输入/输出请求数 -- -I/O的当前进度
    UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$12}'
    #花费在IO操作上的毫秒数
    UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | egrep $1 | head -1 y| awk '{print $$13}'
    #读扇区的次数(一个扇区的等于512B)
    UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$6}'
    #写扇区的次数(一个扇区的等于512B)
    UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$10}
    

    #io监控脚本

    #!/bin/bash
    
    # Zabbix requested parameter
    ZBX_REQ_DATA="$2"
    ZBX_REQ_DATA_DEV="$1"
    
    # source data file
    SOURCE_DATA=/tmp/iostat-data
    
    #
    # Error handling:
    #  - need to be displayable in Zabbix (avoid NOT_SUPPORTED)
    #  - items need to be of type "float" (allow negative + float)
    #
    ERROR_NO_DATA_FILE="-0.9900"
    ERROR_OLD_DATA="-0.9901"
    ERROR_WRONG_PARAM="-0.9902"
    ERROR_MISSING_PARAM="-0.9903"
    
    # No data file to read from
    if [ ! -f "$SOURCE_DATA" ]; then
      echo $ERROR_NO_DATA_FILE
      exit 1
    fi
    
    # Missing device to get data from
    if [ -z "$ZBX_REQ_DATA_DEV" ]; then
      echo $ERROR_MISSING_PARAM
      exit 1
    fi
    
    #
    # Old data handling:
    #  - in case the cron can not update the data file
    #  - in case the data are too old we want to notify the system
    # Consider the data as non-valid if older than OLD_DATA minutes
    #
    OLD_DATA=5
    if [ $(stat -c "%Y" $SOURCE_DATA) -lt $(date -d "now -$OLD_DATA min" "+%s" ) ]; then
      echo $ERROR_OLD_DATA
      exit 1
    fi
    
    # 
    # Grab data from SOURCE_DATA for key ZBX_REQ_DATA
    #
    # 1st check the device exists and gets data gathered by cron job
    device_count=$(grep -Ec "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA)
    if [ $device_count -eq 0 ]; then
      echo $ERROR_WRONG_PARAM
      exit 1
    fi
    
    # 2nd grab the data from the source file
    case $ZBX_REQ_DATA in
      rrqm/s)     grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $2}';;
      wrqm/s)     grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $3}';;
      r/s)        grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $4}';;
      w/s)        grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $5}';;
      rkB/s)      grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $6}';;
      wkB/s)      grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $7}';;
      avgrq-sz)   grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $8}';;
      avgqu-sz)   grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $9}';;
      await)      grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $10}';;
      svctm)      grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $11}';;
      %util)      grep -E "^$ZBX_REQ_DATA_DEV " $SOURCE_DATA | tail -1 | awk '{print $12}';;
      *) echo $ERROR_WRONG_PARAM; exit 1;;
    esac
    
    exit 0
    

      

    #重启zabbix客户端

    service zabbix_agentd restart
    

  • 相关阅读:
    检查c# 内存泄漏
    条件请求与区间请求
    python排序算法
    webpack+react+redux+es6
    Wireshark命令行工具tshark
    Web的形式发布静态文件
    PyQT制作视频播放器
    DotNet二维码操作组件ThoughtWorks.QRCode
    给你讲个笑话,我是创业公司CEO
    分库分表总结
  • 原文地址:https://www.cnblogs.com/love19791125/p/5220930.html
Copyright © 2020-2023  润新知