设为首页 收藏本站
查看: 1578|回复: 0

[经验分享] Zabbix动态监控磁盘I/O

[复制链接]

尚未签到

发表于 2017-4-20 11:03:01 | 显示全部楼层 |阅读模式
  最近做压测,需要监控每台服务器的磁盘I/O,由于每台服务器的磁盘名称可能不一样,所以需要用到Zabbix的LLD功能来发现磁盘并监控I/O。
参考文章
http://www.programering.com/a/MDOwYDNwATc.html
一、客户端(被监控端)
1.发现磁盘的脚本(disk_discovery.sh)
#!/bin/bash
#written by lenwood
#mail:
diskarray=(`cat /proc/diskstats |grep -E "\b[sv]d[abcdefg]\b|\bxvd[abcdefg]\b"|grep -i "\b$1\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"
我把这个脚本放到zabbix-agent的/etc/zabbix/os目录下
执行结果如下:
root@ubuntu-14:/etc/zabbix/os# ./disk_discovery.sh 
{
"data":[
{"{#DISK_NAME}":"sda"}
]
}
 
说明:执行结果看到此台测试机上面只有一块磁盘sda
 
2.获取磁盘I/O信息
 
a.使用iostat收集磁盘I/O信息(这条指令是每隔一秒将磁盘信息内容写入到/tmp/iostat_output,并且后台运行)
     1.apt-get install sysstat(有些机器上面没有安装sysstat,如果有了可以忽略此步骤)
      安装完之后可以使用 iostat 展示信息如下:
      root@ubuntu-14:/etc/zabbix/os# iostat
     Linux 3.13.0-24-generic (ubuntu-14) 11/20/2015 _x86_64_(2 CPU)
 
      avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                      1.70    0.01    1.30    0.01    0.00   96.99
 
      Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
        sda               0.55         1.17        12.60    1715312   18448440
       dm-0              0.89         0.98        12.20    1440157   17864000
       dm-1              0.15         0.19         0.40     272380     584364
 
     2.nohup /usr/bin/iostat -dxkt 1 > /tmp/iostat_output 2>/dev/null
 
b.编写脚本(disk_status.sh)
 
#/bin/bash
device=$1
item=$2
 
case $item in
         rrqm)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $2}'
            ;;
         wrqm)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $3}'
            ;;
          rps)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $4}'
            ;;
          wps)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $5}'
            ;;
        rKBps)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $6}'
            ;;
        wKBps)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $7}'
            ;;
     avgrq-sz)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $8}'
            ;;
     avgqu-sz)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $9}'
            ;;
        await)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $10}'
            ;;
        svctm)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $11}'
            ;;
         util)
            /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $12}'
            ;;
 
esac
 
3.修改zabbix-agent配置文件(zabbix-agentd.conf)
 
      1.添加用户参数
              UserParameter=disk.discovery,/bin/bash /etc/zabbix/os/disk_discovery.sh 
              UserParameter=disk.status
  • ,/bin/bash /etc/zabbix/os/disk_status.sh $1 $2
          2.检查ServerActive(我的是服务器和客户端不在同一台机器上面)
                  #ServerActive=127.0.0.1
                  ServerActive= 服务器IP
     
    二、服务端(监控端)
    1.root@zabbixserv:/usr/bin# zabbix_get -s 客户端IP -p 10050 -k disk.discovery
    {
    "data":[
    {"{#DISK_NAME}":"sda"}
    ]
    }
    2.root@zabbixserv:/usr/bin# zabbix_get -s 客户端IP -p 10050 -k disk.status[sda,avgrq-sz]
    8.00
    在此过程中如果没有显示数据,那么请去查看日志/var/log/zabbix-agent/zabbix-agentd.log
    和/var/log/zabbix-server/zabbix-server.log(查看具体错误进行处理)。
    三、在网页上进行设置模板
    1.create discovery rule

    DSC0000.png
     2.create Item prototypes
    这里我创建了5个
     

    DSC0001.png
     
    以avgqu-sz为例设置如下:
    DSC0002.png
     3.create graph prototypes

    DSC0003.png
     
    查看结果如下:

    DSC0004.png
     
     
     如果是2.4.4的版本可以直接导入模板 (附件中zbx_export_disk_template.xml)
     
     
     
     
     
     
     
     

  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-366789-1-1.html 上篇帖子: zabbix_api之perl语言写法 下篇帖子: Zabbix中文英文对照实现功能
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表