前提环境:

perl和python,以及zabbix-agent已是可用状态
需要主要监控的指标:

    1:每秒IO数,即iops或tps2:吞吐率3:平均IO尺寸,avgrq-sz4:IO等待队列长度,avgqu-sz5:磁盘活动时间百分比,util

第一:安装iostat工具

 yum install sysstat -y    #centos7安装iostat工具,centos6之前自带

第二:在agent端创建用于存放执行脚本的目录,并修改权限

    mkdir /usr/lib/zabbix/alertscripts/ -pchown zabbix:zabbix /usr/lib/zabbix/ -R

第三:在/usr/lib/zabbix/alertscripts/目录下创建磁盘发现脚本

 cd /usr/lib/zabbix/alertscripts/vim discover_disk.pl#!/usr/bin/perl
# give disk dmname, returns Proxmox VM name
sub get_vmname_by_id{$vmname=`cat /etc/qemu-server/$_[0].conf | grep name | cut -d \: -f 2`;$vmname =~ s/^\s+//; #remove leading spaces$vmname =~ s/\s+$//; #remove trailing spacesreturn $vmname}
$first = 1;
print "{\n";
print "\t\"data\":[\n\n";for (`cat /proc/diskstats`){($major,$minor,$disk) = m/^\s*([0-9]+)\s+([0-9]+)\s+(\S+)\s.*$/;$dmnamefile = "/sys/dev/block/$major:$minor/dm/name";$vmid= "";$vmname = "";$dmname = $disk;$diskdev = "/dev/$disk";# DM nameif (-e $dmnamefile) {$dmname = `cat $dmnamefile`;$dmname =~ s/\n$//; #remove trailing \n$diskdev = "/dev/mapper/$dmname";# VM name and IDif ($dmname =~ m/^.*--([0-9]+)--.*$/) {$vmid = $1;#$vmname = get_vmname_by_id($vmid);}}#print("$major $minor $disk $diskdev $dmname $vmid $vmname \n");print "\t,\n" if not $first;$first = 0;print "\t{\n";print "\t\t\"{#DISK}\":\"$disk\",\n";print "\t\t\"{#DMNAME}\":\"$dmname\",\n";print "\t\t\"{#VMNAME}\":\"$vmname\",\n";print "\t\t\"{#VMID}\":\"$vmid\"\n";print "\t}\n";}print "\n\t]\n";
print "}\n";

第四:在/usr/lib/zabbix/alertscripts/目录下创建定义key需要的文件,用于获取io监控值

vim zbx_parse_iostat_values.sh#!/bin/bash
dev=$1
type=$2#enable debug mode
debug=0if [[ -z "$dev" ]]; thenecho "error: wrong input value (device)"exit 1
fiif [[ -z "$type" ]]; thenecho "error: wrong input value (type)"exit 1
ficolumns=`iostat -xN |egrep -o "^Device.*"`columnsarray=($columns)column_id=1for i in "${columnsarray[@]}"
do#echo "column: $i"if [[ "$i" = "$type" ]]; thenif [[ $debug -eq 1 ]]; thenecho "right column (${i}) found...column_id: $column_id "fiid="$"column_id_id=$id$column_idiostats=`iostat -xN |egrep -o "^${dev}[[:space:]]+.*" |awk "{print ${column_id_id}}"`ficolumn_id=$[column_id + 1]
doneif [ -z "$iostats" ]; thenecho "error: \"device\" or \"type\" not found (${dev},${type})"exit 3
fiiostats_lines=`wc -l <<< "$iostats"`if [ $iostats_lines -ne 1 ]; thenecho "error: wrong output value (${iostats_lines})"exit 2
fiecho $iostatsif [[ $debug -eq 1 ]]; thenecho "- - - - - - - - - -"echo $columnsiostats_debug=`iostat -xN |egrep -o "^${dev}[[:space:]]+.*"`echo $iostats_debugecho "- - - - - - - - - -"
fiexit 0

第五:为刚才创建的两个文件赋予执行权限

 chmod +x /usr/lib/zabbix/alertscripts/*

第六:在zabbix-agent的配置文件上添加如下内容

vim /etc/zabbix/zabbix_agentd.conf# diskio discovery
UserParameter=discovery.disks.iostats,/usr/lib/zabbix/alertscripts/discover_disk.pl
UserParameter=custom.vfs.dev.iostats.rrqm[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "rrqm/s"
UserParameter=custom.vfs.dev.iostats.wrqm[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "wrqm/s"
UserParameter=custom.vfs.dev.iostats.rps[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "r/s"
UserParameter=custom.vfs.dev.iostats.wps[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "w/s"
UserParameter=custom.vfs.dev.iostats.avgrq[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "avgrq-sz"
UserParameter=custom.vfs.dev.iostats.avgqu[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "avgqu-sz"
UserParameter=custom.vfs.dev.iostats.await[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "await"
UserParameter=custom.vfs.dev.iostats.svctm[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "svctm"
UserParameter=custom.vfs.dev.iostats.util[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "%util"
UserParameter=custom.vfs.dev.iostats.rkB[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "rkB/s"
UserParameter=custom.vfs.dev.iostats.wkB[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "wkB/s"

第七:重启zabbix-agent端

systemctl restart zabbix-agent.service

下面是在zabbix的web界面下操作

将zabbix关于linux磁盘的模板文件下载下来并导入

wget https://qiniu.wsfnk.com/Template_Linux_Disk_IO_Stats.xml

第一:按如图要求导入模板Template_Linux_Disk_IO_Stats.xml


第二:创建发现磁盘的正则表达式,模板需要使用它

#这里的名称一定要是它,建议复制粘贴 “Linux disks for autodiscovery”

第三:将主机链接到该模板上

第四:查看图形

参考链接 :

zabbix如何监控linux磁盘性能IO
https://www.wsfnk.com/archives/249.html

zabbix如何监控linux磁盘性能IO相关推荐

  1. zabbix监控linux文件目录,zabbix监控linux磁盘性能

    原标题:zabbix监控linux磁盘性能 前提环境 perl和python,以及zabbix-agent已是可用状态. 需要主要监控的指标 1:每秒IO数,即iops或tps 2:吞吐率 3:平均I ...

  2. zabbix计算型监控项函数last_面试官:如何用zabbix实现监控linux服务器进程使用率...

    概述 今天主要介绍怎么用zabbix来监控linux服务器进程使用率,下面一起来看看吧~ 1.配置监控项 proc.num 是用来统计某些状态的进程数量的. proc.num[,,,] name - ...

  3. linux 磁盘性能监控

    linux下对于查看进程的命令非常多也非常强大.经常使用的如:ps  top 可是在磁盘性能监控方面就没有那么统一了. 以下列举一些磁盘监控命令.此处仅仅是起到抛砖引玉作用,具体使用參数请參考man手 ...

  4. zabbix3.4监控linux磁盘使用率_一文看懂Linux全能型监控命令--dstat,值得收藏

    概述 在linux上有top.free.iostat.vmstat.netstat等诸多监控系统各项性能的工具,如top,可以实时监控到系统负载.内存等使用情况,iostat能监控系统I/O情况,而v ...

  5. Linux 磁盘性能优化 ——磁盘性能及高I/O排查

    文章目录 磁盘容量查看:df 如何衡量磁盘性能 每块磁盘使用观测:iostat 进程io观测:pidstat.iotop 案例分析 参考文献 作者邮箱:2107810343@qq.com 时间:202 ...

  6. zabbix如何监控WEB应用性能

    HTTP服务目前最流行的互联网应用之一,如何监控服务的健康状态对系统运维来说至关重要.   Zabbix本身提供了对WEB应用程序的监控,比如监控WEB程序的Download Speed,Respon ...

  7. 硬盘io监控linux,zabbix3.2监控linux磁盘IO

    我这里主要是通过分析/proc/diskstats文件,来对IO的性能进行监控. 客户端配置 1.编辑zabbix配置文件,新添加一个配置文件userparameter_disk.conf vi /e ...

  8. linux 磁盘并发io,Linux系统 磁盘IO过高排查总结

    最近做的一个电商网站因为磁盘 I/O 过高导致访问速度奇慢,问题存在两个月有余未得到解决办法.此次排查原因的经验可以作下次问题的参考. 1.会看懂 top 系统命令出来的各项参数.此次是无意中发现 u ...

  9. linux 硬盘使用监控,zabbix3.2监控linux磁盘使用空间

    本文省略了zabbix服务端和客户端的安装,关于zabbix服务端和客户端安装可以查看我之前的文章,这里以centos系统为例来监控磁盘使用率,zabbix版本为3.2,其他版本请自测. 当前zabb ...

最新文章

  1. centos memcached php,centos系统为php安装memcached扩展步骤
  2. python的_thread模块来实现多线程(python核心编程例子)
  3. python三大结构、顺序结构_Python学习笔记3——三大结构:顺序,分支,循环3
  4. oracle用EXPLAIN PLAN 分析SQL语句
  5. 马云卸任浙江阿里小额贷款股份有限公司法定代表人、董事长
  6. 谷歌母公司2019Q1财报出炉,营收增速放缓,盘后大跌7.34%,市值蒸发700亿刀
  7. Python 添加类型标注 | 散发着自由松散气息的代码
  8. java.util.concurrent.locks.LockSupport
  9. 伺服驱动器cn1引脚定义_伺服驱动器CN1引脚定义,和面板操作设置,跪求高手指点。说明书弄丢了.脉冲,使能,方向,接第几引脚...
  10. 《自拍教程47》Python adb重启设备100次
  11. 区块链架构与扩容方案
  12. NMT:神经网络机器翻译
  13. uniapp 动态背景图写法
  14. 近年来,小样本学习取得重大进展了吗?
  15. 获取Angular中的AngularJS功能
  16. 4.9 GHz异帧干扰问题研究
  17. 传递函数的幅值计算公式_设积分环节的传递函数为G(s)=1/s ,则其频率特性幅值M(ω)=( )...
  18. 云信api_云信Web SDK API文档
  19. 电脑按F1/F12/F10等进不去BIOS进入BIOS里面Advance下设置CPU Setup的Intel Virtualization Technology设置Linux长模式不兼容
  20. 【数据库】逻辑设计-ER模型转换为关系模型

热门文章

  1. python列表、元组、字典、集合区别及他们之间的转换(超全)
  2. 中科研研究生:从算法工程师转行产品经理之后
  3. Machine Learning Yearning 中文翻译稿
  4. 将Python和R整合进一个数据分析流程
  5. 昔年浅谈电商服务业务应如何推广
  6. oracle报27040错误,【oracle案例】创建表空间时遇到 ORA-01119,0RA-27040,0SD-04002
  7. 冷热分离和直接使用大数据库_用读写分离与分表分库解决高访问量和大数据量...
  8. java中的多态性_[转载] c++多态与java多态性_Java中的多态性
  9. effective_transformer
  10. 数据结构java版 大学_数据结构(Java版)