博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zabbix监控磁盘IO
阅读量:6610 次
发布时间:2019-06-24

本文共 3572 字,大约阅读时间需要 11 分钟。

我这里有两种方法,感觉都不错。我这里主要是写一下监控的脚本。

1、使用iostat命令监控

1)首先打开配置文件的自定义脚本功能,然后编写脚本。

#!/bin/bashif [ $# -ne 1 ];then    echo "Follow the script name with an argument"ficase $1 in    rrqm)        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $2}'        ;;    wrqm)        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $3}'        ;;    rps)        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $4}'        ;;    wps)        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $5}'        ;;    rKBps)        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $6}'        ;;    wKBps)        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $7}'        ;;    avgrq-sz)        iostat -dxk 1 2|grep -w vda | tail -1  |awk '{print $8}'        ;;    avgqu-sz)        iostat -dxk 1 2|grep -w vda |tail -1  |awk '{print $9}'        ;;    await)        iostat -dxk 1 2|grep -w vda|tail -1 |awk '{print $10}'        ;;    svctm)        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $13}'        ;;    util)        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $14}'        ;;    *)        echo -e "\e[033mUsage: sh $0 [rrqm|wrqm|rps|wps|rKBps|wKBps|avgqu-sz|avgrq-sz|await|svctm|util]\e[0m"esac

2)添加至agent的脚本路径里面。

 

完成之后就可以在zabbix里面添加items了

2、第二种方法,

第二种是使用iotop命令来获取数据

#!/bin/bash#Date: 2016/11/11#Author:zhangjiedisk_read(){  NUM=`/usr/bin/sudo iotop -b -n 3 -d 1| grep "Total DISK READ" | grep -v grep | awk  -F "|" '{print $1}' | awk -F ":" '{print $2}' |  tail -n1 | awk -F "/" '{print $1}'`  NUM2=`echo $NUM | awk '{print $1}'`  UNIT=`echo $NUM | awk '{print $2}'`  if [ $UNIT == "B" ];then    echo $NUM2  elif [ $UNIT == "K" ];then    NUM3=$(echo "$NUM2 * 1024" | bc)    echo $NUM3  elif [ $UNIT == "M" ];then    NUM3=$(echo "$NUM2 * 1024 * 1024" | bc)    echo $NUM3  elif [ $UNIT == "G" ];then    NUM3=$(echo "$NUM2 * 1024 * 1024 * 1024" | bc)    echo $NUM3  fi}disk_write(){  NUM=`/usr/bin/sudo iotop -b -n 3 -d 1 | grep "Total DISK WRITE :" |  grep -v grep | awk  -F "|" '{print $2}' | awk -F ":" '{print $2}' | tail -n1 | awk -F "/" '{print $1}'`  NUM2=`echo $NUM | awk '{print $1}'`  UNIT=`echo $NUM | awk '{print $2}'`  if [[ $UNIT == "B" ]];then    echo $NUM2  elif [[ $UNIT == "K" ]];then    NUM3=$(echo "$NUM2 * 1024" | bc)    echo $NUM3  elif [[ $UNIT == "M" ]];then    NUM3=$(echo "$NUM2 * 1024 * 1024" | bc)    echo $NUM3  elif [[ $UNIT == "G" ]];then    NUM3=$(echo "$NUM2 * 1024 * 1024 * 1024" | bc)    echo $NUM3  fi}main(){    case $1 in        disk_read)           disk_read;           ;;        disk_write)            disk_write;            ;;    esac}main $1

编写完脚本以后,我们还需要再做一件事情,修改sudoers文件

把这个添加注释,去掉此功能。

完成之后就可以进行监控了。

上面是两个脚本,选择任意一个都是可以的,接下来就是按照下面的步骤添加items,可能稍有出入,需酌情修改。

3、接下来开始进行测试:在server端使用zabbix_get命令测试脚本是否正确:

[root@ELK-chaofeng zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p 10050 -k io_check['wKBps']40.00[root@ELK-chaofeng zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p 10050 -k IO_check['disk_write']87.00

3、看的出来没有什么问题,那么此时我们在zabbix的监控界面进行添加。

 

4、添加item

 

5、填写内容即可

 

填写完之后点击update”保存

6、添加graph

 

还是在这个界面点击“graph”

7、添加graph

 

8、填写内容

 

添加成功后我们就可以查看了。

 9、最后我们看看效果(我这里以上面的第二个脚本为例)

可以看到没有什么问题。

疑难总结:之前的脚本中,出来的图像是断断续续的,感觉挺是奇怪的。感觉像是时间间隔采集数据的问题。

就是出现上面的这种情况。items里面的监控项是没有问题,显示是正常的。

 

然后我换一种方式查看,发现确实read上有很长一段时间没有数据出现。感觉很不对劲。

后来在脚本中的iotop命令中,将iotop命令后面的参数修改了一下成功了:“iotop -b -n 3 -d 1” ,-d表示多长时间采集一次数据,-n表示采集数据的次数。之前我设置的是0.2秒采集一次数据,现在看来是不合适的。可能这个数值最好与zabbix界面的items里面的“update inteval”保持一致最好,都是1s。

此外,iotop命令第三次采集的数据是稍微稳定点的。所以最好采集3次以上的数据。

修改好之后,我们再次来看看效果:

 发现这个时候是正常的了。

再来看看时间间隔:

发现时间间隔也是有序的,看来就没有什么毛病了。整个监控搭建成功了。

转载于:https://www.cnblogs.com/FengGeBlog/p/10369177.html

你可能感兴趣的文章
Visual Studio 2017各版本安装包离线下载
查看>>
C#线程安全的那些事
查看>>
【论文笔记】Social Role-Aware Emotion Contagion in Image Social Networks
查看>>
rpm安装PostgreSQL
查看>>
k sum(lintcode)
查看>>
Android 控件属性
查看>>
【244】◀▶IEW-Unit09
查看>>
Unity5.1 新的网络引擎UNET(十五) Networking 引用--中
查看>>
用任务计划管理计划任务对付任务计划-禁止WPS提示升级
查看>>
Android——SlidingMenu学习总结
查看>>
React-Native 之 GD (十六)首页筛选功能
查看>>
UI概念体系要素
查看>>
SSISDB5:使用TSQL脚本执行Package
查看>>
performSelectorInBackground V.S detachNewThreadSelector?
查看>>
linux,Centos,bash: service: command not found
查看>>
【转】UIColor对颜色的自定义
查看>>
php编译报错 configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-...
查看>>
asp.net后台进程做定时任务
查看>>
Ural_1671. Anansi's Cobweb(并查集)
查看>>
给vs2012换肤
查看>>