Zabbix 自动发现并监控磁盘IO、报警 引言
引言
Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用自动发现这个功能,自动发现后自动添加对服务器磁盘的监控,而且添加磁盘后也会自动添加到监控,实现自动化运维的效果,接下来我们就来看看怎么自动发现磁盘并自动监控磁盘的IO性能,再设置触发器,IO达到阈值后发出报警
iostat简介
iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。所以在使用iostat监控系统IO负载的时候,不要直接iostat取结果,而是iostat -dxkt 1 2取结果,否则得到的数据根本不正确
iostat安装
yum -y install sysstat
iostat常用参数说明
-c      # 仅显示CPU统计信息.与-d选项互斥.
-d      # 仅显示磁盘统计信息.与-c选项互斥.
-p      # 可以报告出每块磁盘的每个分区的使用情况
-k      # 以K为单位显示每秒的磁盘请求数,默认单位块.
-t      # 在输出数据时,打印搜集数据的时间.
-V      # 打印版本号和帮助信息.
-n    显示NFS(network filesystem)报告
-x      # 输出扩展信息.
iostat命令输出说明1
[root@centos181002 ~]# iostat
Linux 3.10.0-957.el7.x86_64 (centos181002)  2019年03月17日     _x86_64_    (1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.67    0.00    9.07    0.02    0.00   90.23
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              55.56        65.91     27144.77     174751   71974361
sdb               0.04         1.03         0.00       2720          0
scd0              0.01         0.39         0.00       1028          0
dm-0             54.83        61.23     27144.00     162342   71972313
dm-1              0.03         0.93         0.00       2460          0
## avg-cpu段:
%user: 在用户级别运行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O时,所占用CPU百分比.
%idle: CPU空闲时间的百分比.
## Device段:
tps    每秒I/O数(即IOPS。磁盘连续读和连续写之和)
Blk_read/s    每秒从设备读取的数据大小,单位是block/s(块每秒)
Blk_wrtn/s    每秒写入设备的数量,单位是block/s
Blk_read    从磁盘读出的块的总数
Blk_wrtn    写入磁盘的块的总数
iostat命令输出说明2
[root@centos181002 ~]# iostat dxkt
Linux 3.10.0-957.el7.x86_64 (centos181002)  2019年03月17日     _x86_64_    (1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.65    0.00    9.05    0.56    0.00   89.73
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
rrqm/s:每秒读请求被合并次数
wrqm/s:每秒写请求被合并次数
r/s:每秒完成的读次数
w/s:每秒完成的写次数
rkB/s:每秒读数据量(kb)
wkB/s:每秒写数据量(kb)
avgrq-sz:平均每次IO请求的扇区大小
avgqu-sz:平均每次IO请求的队列长度(越短越好)
await:平均每次IO请求等待时间(毫秒),一般的系统IO等待时间应该低于5ms,如果大于10ms就比较大了。
    这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短
    反之差值越大,队列时间越长,说明系统出了问题。
r_await:读的平均耗时(毫秒)
w_await:写入平均耗时(毫秒)
svctm:平均每次IO请求处理时间(毫秒)
    如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好
    如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
%util:IO队列非空比例,该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了
环境
[root@centos181001 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core) 
[root@centos181001 ~]# zabbix_server -V
zabbix_server (Zabbix) 4.0.5
Revision 90164 25 February 2019, compilation time: Feb 25 2019 09:41:55
Copyright (C) 2019 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.
This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).
Compiled with OpenSSL 1.0.1e-fips 11 Feb 2013
Running with OpenSSL 1.0.1e-fips 11 Feb 2013
[root@centos181001 ~]# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 4.0.5
Revision 90164 25 February 2019, compilation time: Feb 25 2019 09:42:17
Copyright (C) 2019 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.
This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).
Compiled with OpenSSL 1.0.1e-fips 11 Feb 2013
Running with OpenSSL 1.0.1e-fips 11 Feb 2013
第一步:Zabbix Agent端设置
1.安装iostat
yum -y install sysstat
2.编写自动发现磁盘脚本并给予执行权限
mkdir -p /etc/zabbix/scripts/
cat > /etc/zabbix/scripts/disk_discovery.sh <<\EOF
#!/bin/bash
############################################################
# $Name:         disk_discovery.sh
# $Function:     DISK DISCOVERY
# $Author:       Xiaoliu.liu 1377133225@qq.com
# $organization: Xiaoliu.liu
# $Create Date:  2019/3/17
# $Description:  Monitor DISK DISCOVERY
############################################################
disk_array=(`grep -E "(vd[a-z]$|sd[a-z]$)" /proc/partitions | awk '{print $4}'`)
length=${#disk_array[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
        printf '\n\t\t{'
        printf "\"{#DISK_NAME}\":\"${disk_array[$i]}\"}"
        if [ $i -lt $[$length-1] ];then
                printf ','
        fi
done
printf  "\n\t]\n"
printf "}\n"
EOF
cat /etc/zabbix/scripts/disk_discovery.sh
chmod +x /etc/zabbix/scripts/disk_discovery.sh
3.编写监控磁盘IO脚本
cat > /etc/zabbix/scripts/disk_io.sh <<\EOF
#!/bin/bash
############################################################
# $Name:         disk_discovery.sh
# $Function:     DISK DISCOVERY
# $Author:       Xiaoliu.liu 1377133225@qq.com
# $organization: Xiaoliu.liu
# $Create Date:  2019/3/17
# $Description:  Monitor DISK DISCOVERY
############################################################
Device=$1
DISK=$2
case $DISK in
#每秒读请求被合并次数
rrqm_s)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $2}'
;;
#每秒写请求被合并次数
wrqm_s)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $3}'
;;
#每秒完成的读次数
r_s)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $4}'
;;
#每秒完成的写次数
w_s)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $5}'
;;
#每秒读数据量(MB)
rkb_s)
        iostat -dxmt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $6}'
;;
#每秒写数据量(MB)
wkb_s)
        iostat -dxmt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $7}'
;;
#平均每次IO请求的扇区大小
avgrq_sz)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $8}'
;;
#平均每次IO请求的队列长度(越短越好)
avgqu_sz)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $9}'
;;
#平均每次IO请求等待时间(毫秒)
await)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $10}'
;;
#读的平均耗时(毫秒)
r_await)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $11}'
;;
#写入平均耗时(毫秒)
w_await)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $12}'
;;
#平均每次IO请求处理时间(毫秒)
svctm)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $13}'
;;
#IO队列非空比例
util)
        iostat -dxkt 1 2 | grep "\b$Device\b" | awk 'NR==2{print $14}'
;;
#IOPS
iops)
    iostat -dk 1 2 | grep "\bsda\b" | awk 'NR==2{print $2}'
;;
esac
EOF
cat /etc/zabbix/scripts/disk_io.sh
chmod +x /etc/zabbix/scripts/disk_io.sh
4.编辑zabbix_agentd的配置文件支持自定义脚本并
vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
5.创建disk_io的key文件
cat > /etc/zabbix/zabbix_agentd.d/disk_status.conf <<\EOF
UserParameter=disk.discovery[*],/etc/zabbix/scripts/disk_discovery.sh
UserParameter=disk.io[*],/etc/zabbix/scripts/disk_io.sh $1 $2
EOF
cat /etc/zabbix/zabbix_agentd.d/disk_status.conf
    参数说明:
    其中的格式为UserParameter=<key>,<command>
    <key>:就是在web端添加监控脚本时的key值
    <command>:就是该key值对应的执行脚本,也就是脚本执行路径
6.重启Zabbix Agent服务
systemctl restart zabbix-agent.service
7.在Zabbix Server端测试
zabbix_get -s 11.11.11.62 -k 'disk.discovery[*]' [root@zabbix-new ~]# zabbix_get -s 192.168.1.118 -k 'disk.discovery[*]'
{
"data":[
{"{#DISK_NAME}":"sda"}
]
第二步:Zabbix Server端导入模板并关联到主机即可。
模板下载:https://pan.baidu.com/s/10Jcwt2ScdjW_rwHdz7QBdw
提取码: tqzw
链接:https://pan.baidu.com/s/1sJ68wDarGP6I9aqxA5d5Ww 密码:ssq8
在被监控端上模拟磁盘写入进行测试
1  | 
dd if=/dev/zero of=/a.txt bs=8k count=30000  | 
转自:https://www.jianshu.com/p/4b1c83d50e1a
Zabbix 自动发现并监控磁盘IO、报警 引言的更多相关文章
- Zabbix自动发现并监控磁盘IO、报警
		
本文转载自: https://www.93bok.com 引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务 ...
 - 添加zabbix自动发现(监控多tomcat实例)
		
说明 何为自动发现?首先我们监控多tomcat实例,如果一个个实例地添加或许可以完成当前需求.但是日后随着实例的增多,再手动一个个去添加就十分不方便了.这时候需要自动发现这个功能,来帮助我们自动添加监 ...
 - zabbix自动发现与监控内存和CPU使用率最高的进程,监测路由器
		
https://cloud.tencent.com/info/488cfc410f29d110c03bcf0faaac55b2.html (未测试) https://www.cnblo ...
 - zabbix自动发现功能实现批量web url监控
		
需求: 现在有大量url需要监控,形式如http://www.baidu.com ,要求url状态不为200即报警. 需求详细分析: 大量的url,且url经常变化,现在监控用的是zabbix,如果手 ...
 - zabbix主机自动发现和监控
		
在主机较多的时候,配置主机自动发现并加入监控可以代替手动的添加主机,减轻工作量,自动发现由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器.设备.可以根据需要,在对主 ...
 - Zabbix整合MegaCLI实现物理硬盘的自动发现和监控
		
MegaCLI是LSI提供的用户空间管理RAID卡(LSI芯片)工具,适用于大多数的Dell服务器. MegaCLI介绍: http://zh.community.dell.com/techcente ...
 - zabbix应用之Low-level discovery监控磁盘IO
		
参考文章: http://qicheng0211.blog.51cto.com/3958621/1599776/ zabbix自带的"Template OS Linux"模板支持监 ...
 - zabbix自动发现监控mysql
		
一. 数据库给只读权限 1.1 grant usage on *.* to 'zabbix'@'127.0.0.1' identified by 'zabbix'; flush privileges; ...
 - Zabbix 监控磁盘IO
		
Zabbix 监控磁盘IO 1.数据获取脚本 #!/bin/bash # resource: http://www.muck.net/19/getting-hard-disk-performance- ...
 
随机推荐
- [Fundamental of Power Electronics]-PART II-9. 控制器设计-9.3 关键项1/(1+T)和T/(1+T)以及闭环传递函数的构建
			
9.3 关键项\(1/(1+T)\)和\(T/(1+T)\)以及闭环传递函数的构建 从式(9.4)到(9.9)的传递函数可以很容易的由图形代数方法进行构建.假设我们已经分析了反馈系统模块,并且已经画出 ...
 - 【OO第二次作业】关于Homework2性能分的思考
			
为了获得更多的性能分,个人目前想到了以下注意点: Homework2与Homework1还是有不少相似之处的,因此在上次作业中的这些性能提升点,此次依然有效-- 表达式之间不含空格 如果存在正项,则表 ...
 - Web协议详解与抓包实战,高效解决网络难题
			
无论你是前后端工程师,还是运维测试,如果想面试更高的职位,或者要站在更高的角度去理解技术业务架构,并能在问题出现时快速.高效地解决问题,Web 协议一定是你绕不过去的一道坎. 旨在帮助你对各种常用 W ...
 - JavaScript深入理解-正则表达式
			
正则表达式 正则表达式是用于匹配字符串中字符组合的模式.在JavaScript中,正则表达式也是对象.这些模式被用于RegExp的 exec和 text方法,以及String中的 match.matc ...
 - Java刷题-list
			
一.打印两个有序链表的公共部分 补充一个关于节点的链表构造方法 Node next是设置指针域 import java.io.IOException;这个是报错信息 这是两个lO流 import ja ...
 - HMS Toolkit自动化环境配置,助您高效集成HMS Core
			
HMS Toolkit是一个IDE插件,提供包括应用创建.编码和转换.调测和测试.提交上架等多个端到端开发工具,借助HMS Toolkit可提升3倍以上集成开发效率,可以帮助开发者以更高的开发效率.更 ...
 - Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationOutsideTLAB
			
重新申请 TLAB 分配对象事件:jdk.ObjectAllocationOutsideTLAB 引入版本:Java 11 相关 ISSUES: JFR: RecordingStream leaks ...
 - 05- web网站链接测试与XENU工具使用
			
什么是链接 链接也叫超链接,是指从某一个网页元素指向另一个目标的连接关系,这个目标可以是另一个网站的网页,可以是本网站的一个网页,可以使同一个网页的不同位置,还可以是一个图片,一个视频,一个文件甚至是 ...
 - Andrew Ng机器学习算法入门(一):简介
			
简介 最近在参加一个利用机器学习来解决安全问题的算法比赛,但是对机器学习的算法一直不了解,所以先了解一下机器学习相关的算法. Andrew Ng就是前段时间从百度离职的吴恩达.关于吴恩达是谁,相信程序 ...
 - ecloud云主机限速相关配置说明
			
目前与云主机限速相关的内容共有三处: neutron qos-xxx命令,通过neutron qos的形式为云主机port绑定相应的网络限速策略(对应弹性公网IP) 通过flavor对云主机进行默认限 ...