# 软件介绍 iostat
# 使用iostat 需先安装sysstat软件包, 系统包中有带
# iostat用于输出CPU和磁盘I/O相关统计信息
# iostat可以显示CPU和I/O系统的负载情况及分区状态信息.
直接执行iostat可以显示下面内容:
[wmt@template ~]$ iostat
Linux 2.6.32-358.el6.x86_64 (template.xx.xx) 07/14/2017 _x86_64_ (32 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.93 0.00 0.20 0.04 0.00 96.83
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.66 6.60 14.79 462593198 1036802588
sdc 0.20 1.60 0.00 112173840 0
sdb 25.46 453.65 582.45 31805540026 40835922808
scd0 0.00 0.00 0.00 5012 0
dm-0 25.21 453.64 582.45 31805251514 40835922808
dm-1 1.89 6.35 14.55 445409130 1020026016
dm-2 0.06 0.24 0.24 17154880 16776296
# cpu段配置说明
avg-cpu
%user : 用户空间使用CPU百分比
%nice : nice使用
%system : 系统(kernel)使用cpu百分比
%iowait : cpu等待硬盘I/O时,所占用的百分比
%steal : 系统偷出CPU的百分比 (不知道什么鬼,求解释)
%idle : 系统空闲百分比
# Device磁盘段配置说明
tps : 每秒钟发送到I/O请求数
Blk_read/s : 每秒从磁盘读出的的数据量,单位B
Blk_wrtn/s : 每秒从磁盘写入的的数据量,单位B
Blk_read : 开机始从磁盘读出的数据总量
Blk_wrtn : 开机始从磁盘写入的数据总量
# 命令使用
iostat 1 # 每秒刷新一次
iostat -k # 以KB为单位 默认B
iostat -m # 以MB为单位
iostat -v # 显示版本号
iostat -c # 仅显示CPU
iostat -d # 仅显示磁盘
################## dm设备监控大概思路 ##################################
#查看dm对应设备号是哪一个
[root@template ~]# dmsetup ls
mpathb (253:0)
vg_sys-LogVol01 (253:1)
vg_sys-LogVol00 (253:2)
# 找到设备号对应信息
[root@template ~]# ll /dev/mapper/
total 0
crw-rw----. 1 root root 10, 58 Apr 25 2015 control
lrwxrwxrwx. 1 root root 7 Apr 25 2015 mpathb -> ../dm-0
lrwxrwxrwx. 1 root root 7 Apr 25 2015 vg_sys-LogVol00 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Apr 25 2015 vg_sys-LogVol01 -> ../dm-1
# 再检查设备挂载目录,比如swap就可不用监控,一般也不会往里写入数据
[root@template ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Apr 25 01:09:22 2015
#
/dev/mapper/vg_sys-LogVol01 / ext4 defaults 1 1
/dev/mapper/vg_sys-LogVol00 swap swap defaults 0 0
/dev/mapper/mpathb /home ext4 defaults 1 0
# 找着对应的目录了,以及磁盘信息了,咱只需要监控 sda sdc sdb 三个设备就行,
# sdb = dm-0 + dm-2 LVM磁盘
############### 在需要监控的机器中增加这个脚本 #########################
# 脚本文件
[root@oracle script]# cat system_io.sh #!/bin/bash # set -e abc=`/usr/bin/iostat -k | grep $1` echo "$abc" > /tmp/1.txt case $2 in read) awk ‘{print $3}‘ /tmp/1.txt ;; wrtn) awk ‘{print $4}‘ /tmp/1.txt ;; *) echo " Please Use read | wrtn , Use ./bash.sh sdb read|wrtn " esac
# 最后需要配置文件中在zabbix_agentd.conf中增加这行
UserParameter=sys.io[*],/usr/local/zabbix/script/system_io.sh $1 $2
# 在服务器端测试是脚本是否可以
[root@zabbixd bin]# zabbix_get -s ipaddress -p port -k sys.io[sdb,read]
226.81
[root@zabbixd bin]# zabbix_get -s ipaddress -p port -k sys.io[sdb,wrtn]
291.21
# 可能会报权限错误,如果运行前有执行过脚本的话,需要删除/tmp/1.txt文件
扩展:dm设备详解 http://blog.chinaunix.net/uid-26230811-id-3265484.html
iostat详解 http://blog.csdn.net/zhangjay/article/details/6656771
# 模板明天添加 2017年07月14日 18:15:06
本文出自 “xiong” 博客,请务必保留此出处http://xiong51.blog.51cto.com/5239058/1947663
原文地址:http://xiong51.blog.51cto.com/5239058/1947663