前言

日常工作中,对于磁盘IO的监控必不可少,通过zabbix来实现对磁盘的监控,可以让我们对磁盘的工作状态有充分的了解,对可能由于磁盘的原因造成的性能瓶颈提前预防

1. 客户端配置

1.1 磁盘自动发现脚本

cat /etc/zabbix/scripts/io_stats/discover_disk.pl

# G. Husson - Thalos - 20120713
# Zabbix 2 - disk autodiscovery for linux
# all disks listed in /proc/diskstats are returned
# special processing on LVMs
# special processing on Proxmox VE disks (VM id and VM name are returned)
# rq : in Zabbix, create a regexp filter on which disks you want to monitor on your IT System
# ex : ^(hd[a-z]+|sd[a-z]+|vd[a-z]+|dm-[0-9]+|drbd[0-9]+)$
#      ^(loop[0-9]+|sr[0-9]*|fd[0-9]*)$# Custom keys :
#UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep "$1" | head -1 | awk '{print $$4}'
#UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep "$1" | head -1 | awk '{print $$7}'
#UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep "$1" | head -1 | awk '{print $$8}'
#UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep "$1" | head -1 | awk '{print $$11}'
#UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep "$1" | head -1 | awk '{print $$12}'
#UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep "$1" | head -1 | awk '{print $$13}'
#UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep "$1" | head -1 | awk '{print $$6}'
#UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep "$1" | head -1 | awk '{print $$10}'#Discovery items creation :
#Disk {#VMNAME}:{#DMNAME} io spent      custom.vfs.dev.io.ms[{#DISK}]
#Disk {#VMNAME}:{#DMNAME} read bw       custom.vfs.dev.read.sectors[{#DISK}]
#Disk {#VMNAME}:{#DMNAME} read io       custom.vfs.dev.read.ops[{#DEV}]
#Disk {#VMNAME}:{#DMNAME} write bw      custom.vfs.dev.write.sectors[{#DISK}]
#Disk {#VMNAME}:{#DMNAME} write io      custom.vfs.dev.write.ops[{#DEV}]#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 spaces
return $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 name
if (-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\"{#DISKDEV}\":\"$diskdev\",\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";

1.2 获取监控值脚本

cat /etc/zabbix/scripts/io_stats/zbx_parse_iostat_values.sh

#!/bin/bashdev=$1type=$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=1
#echo $columnsarray
for 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

1.3 监控项配置文件

cat /etc/zabbix/zabbix_agentd.d/diskio_discovery.conf

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

2.服务端配置

2.1 导入监控模版

下载链接

2.2 主机链接导入的模版

按上述配置完成后,稍等一会儿,然后查看最新数据,就可以看到关于磁盘IO的监控数据了

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

  1. zabbix监控磁盘io

    1 客户端操作 编辑vim /etc/zabbix/zabbix_agentd.conf添加下面这些 UserParameter=disk.read.ops[*],cat /proc/diskstat ...

  2. linux 访问磁盘bin,zabbix应用之Low-level discovery监控磁盘IO

    zabbix自带的"Template OS Linux"模板支持监控已挂载的磁盘空间利用率,是利用LLD(Low-level discovery)实现的,却没有对磁盘IO监控.本篇 ...

  3. windows下磁盘IO性能数据评测

    windows下如何查看磁盘IO性能 http://www.51testing.com/?uid-211722-action-viewspace-itemid-233892 服务器性能瓶颈如何判断.C ...

  4. 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO

    原文: 第七章--DMVs和DMFs(4)--用DMV和DMF监控磁盘IO 前言: 本文为本系列最后一篇,作为DBA,你必须经常关注磁盘的I/O问题,一旦出现问题,要尽快分析出是什么问题.SQLSer ...

  5. linux查看磁盘io性能

    1. 查看磁盘 IO 性能 1.1 top 命令 top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过大,很可能是磁盘 IO 太高了,当然也可能是其他原因,例如网络 ...

  6. Linux确认服务所在磁盘io性能状态

    Linux确认服务所在磁盘io性能状态 1.背景 监控服务应用influxdb在上线前需要检查磁盘io性能,防止磁盘io性能太低影响监控数据量写入延迟. 下面以influxdb服务为例,且数据落盘在/ ...

  7. windows监控磁盘IO、cpu、内存、网络等使用情况

    windows监控磁盘IO.cpu.内存.网络等使用情况 IO(Input/Output)主要是针对系统内部的信息输入或输出,并发.若IO越优系统则处理性能越好.这里只是简单的对windows系统下进 ...

  8. 提升磁盘IO性能的几个技巧

    目前磁盘都是机械方式运作的,主要体现在磁盘读写前寻找磁道的过程.磁盘自带的读写缓存大小,对于磁盘读写速度至关重要.读写速度快的磁盘,通常 都带有较大的读写缓存.磁盘的寻道过程是机械方式,决定了其随机读 ...

  9. Cacti添加IO模板并监控磁盘IO

    1.下载Cacti_Net-SNMP_DevIO_v3.1.zip 下载Cacti_Net-SNMP_DevIO_v3.1.zip,解压并上传net-snmp_devio.xml到/resource/ ...

最新文章

  1. 如何使用SQL Server 2008打开和关闭IDENTITY_INSERT?
  2. html显示任务进度,(原创)asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例(二)...
  3. visual studio code Python终端运行_VS Code 6 月 Python 扩展更新
  4. 机器学习-算法背后的理论与优化(part2)--广义线性模型
  5. [C++] iota语句的语法
  6. leetcode - 375. 猜数字大小 II
  7. h5评论直接显示代码_全套H5教程免费学,让你0基础自学制作H5页面
  8. [转载] 算法导论:分治法,python实现合并排序MERGE-SORT
  9. matlab如何持续存贮多维矩阵,matlab多维矩阵在内存中存储顺序
  10. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(六):基于github的木马
  11. vscode 脑图插件mindmap
  12. python h5游戏_记一次游戏H5开发经验
  13. 计算机改变世界英语作文,2013年3月3日托福独立写作范文:年轻人改变世界(英文版)...
  14. 【转】胡侃学习(理论)计算机
  15. 怎么把数据文件上传云服务器,如何将数据上传到云服务器上
  16. 《安富莱嵌入式周报》第266期:真正模拟DA神的威力,全开源nV级测量仪表挑战赛结束,欣赏震撼设计过程
  17. python编程计算器_Python设计实现的计算器功能完整实例
  18. 许纪霖《中华儒家文化发展脉络》思维导图
  19. 利用树莓派搭建家庭NAS简要
  20. 机器视觉-相机镜头光源介绍及选型-8.镜头选型

热门文章

  1. 3D陶瓷模型如何从创建到精准贴图,完整教程来了!
  2. 咖喱函数(Curry Func)
  3. 新冠DNA疫苗获准与灭活疫苗开展探索序贯免疫策略的临床试验 | 医药健闻
  4. 摩托第一个Android手机,摩托Android手机元年回顾 王者归来!
  5. vue 仿照抖音视频效果(滑动切换)
  6. SqlSession 详解
  7. linux sublime中文输入法,完美解决 Linux 下 Sublime Text 中文输入
  8. 依靠可信AI的鲁棒性有效识别深度伪造,帮助银行对抗身份欺诈
  9. T3220,T1207,T1391,T1163
  10. 一根吸管的智慧:用创意为传统制造注活力