阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

结合Zabbix监控系统io相关性能服务

427次阅读
没有评论

共计 6859 个字符,预计需要花费 18 分钟才能阅读完成。

一、环境及说明

本次实验基于 CentOS6.x_x64  zabbix2.4.5(其实可以是其他版本的 zabbix 服务端),i 测试的客户端机器:10.168.118.61(安装 zabbix-agent 的机器)上,所使用到的工具如下:

iostat 来源于 syssat 软件包

#rpm -qa |grep sysstat

如果没有安装 请执行

#yum install sysstat -y

iostat 工具常用说明:

常用 $iostat -dxkt 1 输出选项说明:
rrqm/s 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s 每秒完成的读 I / O 设备次数。即 delta(rio)/s
w/s 每秒完成的写 I / O 设备次数。即 delta(wio)/s
rsec/s 每秒读扇区数。即 delta(rsect)/s
wsec/s 每秒写扇区数。即 delta(wsect)/s
rkB/s 每秒读 K 字节数。是 rsect/ s 的一半,因为每扇区大小为 512 字节。(需要计算)
wkB/s 每秒写 K 字节数。是 wsect/ s 的一半。(需要计算)
avgrq-sz 平均每次设备 I / O 操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz 平均 I / O 队列长度。即 delta(aveq)/s/1000(因为 aveq 的单位为毫秒)。
await 平均每次设备 I / O 操作的等待时间(毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm 平均每次设备 I / O 操作的服务时间(毫秒)。即 delta(use)/delta(rio+wio)
%util
一秒中有百分之多少的时间用于 I / O 操作,或者说一秒中有多少时间 I / O 队列是非空的。即 delta(use)/s/10
00(因为 use 的单位为毫秒)

二、利用 iostat -dxkt 1 手动监控 disk io

1、编写发现磁盘的脚本(shell):
$cd /etc/zabbix/bin
$cat disk_discovery.sh

#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "\bsd[a-z]\b|\bxvd[a-z]\b|\bvd[a-z]\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"
$ sh disk_discovery.sh
{
"data":[
{"{#DISK_NAME}":"xvda"},
{"{#DISK_NAME}":"xvdb"}
]
}

2、编写获取磁盘 I / O 信息的脚本
nohup /usr/bin/iostat -dxkt 1 > /tmp/iostat_output 2>/dev/null &
运行并放入 /etc/rc.local 临时解决方案,看后面添加 iostat sysv 服务开机启动并定期清除
iostat_output 文件大小
3、编写 disk_status.sh 脚本用于实时检测磁盘 io
$cd /etc/zabbix/bin
$vim disk_status.sh

#/bin/sh
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

4、修改 zabbix agent 配置文件
cd /etc/zabbix/zabbix_agentd.d/
vim disk_status.conf

UserParameter=disk.discovery,/bin/bash /etc/zabbix/bin/disk_discovery.sh
UserParameter=disk.status[*],/bin/bash /ect/zabbix/bin/disk_status.sh $1 $2

重启 zabbix agent

#service zabbix-agent restart

5、测试(zabbix server 上):
$sudo zabbix_get -s 10.168.118.61 -k “disk.discovery”
{
“data”:[
{
“{#DISK_NAME}”:”xvda”
},
{
“{#DISK_NAME}”:”xvdb”
}
]
}
如果能获得 10.168.118.61 上磁盘信息说明 disk_discovery.sh 脚本正确
$sudo zabbix_get -s 10.168.118.61 -k disk.status[xvda,wps]
10.00
如上能获取 xvda 盘的 wps 值说明 disk_status.sh 脚本正常

三、到 zabbix server 前端 web 上添加磁盘 IO 监控模板
configuration(中文叫组态)–Templates(模板)– 选择一个你常用的模板(或先创建一个模块)Applications(应用集)–Create application(创建应用)输入名为 DISK_IO

Discovery — Create discovery rule
Name:Disk_Discovery
Key:disk.discovery
Update interval(in sec):3600
Filters:{#DISK_NAME}
Name Key Interval
Item prototypes–Create item prototypes — Write
requests merqed per second on {#DISK_NAME}
disk.status[{#DISK_NAME},wrqm] 60 90 120 Zabbix
agent DISK_IO Enabled
Write
requests issued per second to {#DISK_NAME} disk.status[{#DISK_NAME},wps] 60 90 120
Zabbix agent DISK_IO Enabled
Requests
average size(sectors) issued to {#DISK_NAME} disk.status[{#DISK_NAME},avgrq-sz] 60 90
120 Zabbix agent DISK_IO Enabled
Requests
average queue length issued to {#DISK_NAME} disk.status[{#DISK_NAME},avgqu-sz] 60 90
120 Zabbix agent DISK_IO Enabled
Read
requests merqed per second on{#DISK_NAME} disk.status[{#DISK_NAME},rrqm] 60 90 120
Zabbix agent DISK_IO Enabled
Read
requests issued per second to {#DISK_NAME} disk.status[{#DISK_NAME},rps] 60 90 120
Zabbix agent DISK_IO Enabled
I/O
requests average time(Miliseconds) issued to {#DISK_NAME} disk.status[{#DISK_NAME},await]
60 90 120 Zabbix agent DISK_IO Enabled
Bytes
written per second on {#DISK_NAME} disk.status[{#DISK_NAME},wKBps] 60 90 120 Zabbix
agent DISK_IO Enabled
Bytes
read per second on {#DISK_NAME} disk.status[{#DISK_NAME},rKBps] 60 90 120 Zabbix
agent DISK_IO Enabled
Bandwidth utilization for {#DISK_NAME} disk.status[{#DISK_NAME},util] 60 90 120 Zabbix
agent DISK_IO Enabled
在添加 item 的时候注意,由于使用的是 iostat -k
获取每秒的读写大小,所以 iostat 显示的是以 KB 为单位,在 zabbix 上以 B 为基本单位,需要用到 Use
custom multiplier 这个选项将 zabbix agent 返回的 KB 值乘以 1024 变成 B,然后 zabbix
agent 再以 B 为单位显示成 B 或 KB 或 MB 便于查看。
以上的监控不能算完美,缺陷在于 iostat_output 文件大小会不断增长一般一个月差不多到 1G,所以为了让
它开机能自动启动并能重置 iostat_output 文件大小大小,做成系统服务并添加到计划任务中,指定时间重
启,这样就会自动重置 iostat_output 文件大小

四、添加 iostate 系统服务并添加到计划任务
cat iostat

#!/bin/sh
# chkconfig: - 99 11
# description: iostat
# processname: iostatus
# Author: san 2015-12-29
/etc/init.d/functions
iostat=${IOSTAT-/usr/bin/iostat}
prog=iostat
iostat_tmp=/tmp/iostat_output
pidfile=${PIDFILE-/var/run/iostat.pid}
lockfile=${LOCKFILE-/var/lock/subsys/iostat}
RETVAL=0
if [! -f "$iostat" ]
then
echo "iostat startup: command cannot found.cannot start."
exit 2
fi
start(){
if [! -f ${pidfile} ]; then
echo -n $"Starting $prog:"
$iostat -dxkt 1 > $iostat_tmp 2>/dev/null &
["$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
iostat_pid=$(ps aux |grep iostat|grep dxkt |grep -v grep|awk '{print $2}')
echo $iostat_pid >$pidfile
RETVAL=$?
echo
[$RETVAL = 0] && touch ${lockfile}
return $RETVAL
else
status -p ${pidfile}
exit 0
fi
}
stop(){
echo -n $"Stoping $prog:"
killproc -p ${pidfile} iostat
RETVAL=$?
echo
[$RETVAL = 0] && rm -f ${lockfile} ${pidfile}
rm -rf $iostat_tmp
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $iostat
RETVAL=$?
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: iostat {start | stop | restart | status}"
exit 1
esac

添加到系统服务和开机自启

#chkconfig –add iostat

#chkconfig iostat on

#service iostat start
Starting iostat: [确定]
#service iostat status
iostat (pid 2810) 正在运行 …
cat /tmp/iostat_output
-rw-r–r– 1 root root 443M 1 月 13 10:48 iostat_output
### 运行 13 天 iostat_output 文件大小
添加到计划任务中 每月 1 号 1 时 1 分重启 iostat
$crontab -l
1 1 1 1 * service iostat restart
到此完美自动监控系统 io

更多 Zabbix 相关教程集合

Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装  http://www.linuxidc.com/Linux/2015-05/117657.htm

CentOS 7 LNMP 环境搭建 Zabbix3.0  http://www.linuxidc.com/Linux/2017-02/140134.htm

Ubuntu 16.04 安装部署监控系统 Zabbix2.4  http://www.linuxidc.com/Linux/2017-03/141436.htm

Zabbix 监控安装部署及警报配置  http://www.linuxidc.com/Linux/2017-03/141611.htm

Zabbix 触发器表达式详解 http://www.linuxidc.com/Linux/2017-03/141921.htm

Ubuntu 16.04 下安装部署 Zabbix3.0  http://www.linuxidc.com/Linux/2017-02/140395.htm

CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm

CentOS 7 下 Zabbix 3.0 安装详解 http://www.linuxidc.com/Linux/2017-03/141716.htm

64 位 CentOS 6.2 下安装 Zabbix 2.0.6   http://www.linuxidc.com/Linux/2014-11/109541.htm

ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-07/145386.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6859字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7961589
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...