海运的博客

用Cacti监控服务器硬盘IO

发布时间:May 14, 2012 // 分类:Cacti // 3 Comments

此监控模板以iostat命令为数据源,需先安装cacti和sysstat组件。

yum -y install systat unzip
wget https://www.haiyun.me/download/cacti-iostat.zip
unzip cacti-iostat.zip
cd markround-Cacti-iostat-templates-7394c7b/

复制iostat.pl到被监控服务器目录:

cp scripts/iostat.pl  /usr/local/bin/iostat.pl

被监控服务器snmp配置文件添加:

echo "pass .1.3.6.1.3.1 /usr/bin/perl /usr/local/bin/iostat.pl" >> /etc/snmp/snmpd.conf
service snmpd restart

复制iostat.xml至Cacti安装目录:

cp snmp_queries/linux/iostat.xml  /cactipath/resource/snmp_queries/
#新版本cacti如果无法采集数据需删除ioName字段
#sed -i 's/:ioName//g' cactipath/resource/snmp_queries/iostat.xml 

添加计划任务,用于采集数据。

cat > /etc/cron.d/iostat <<EOF
*/5 * * * * root cd /tmp && iostat -xkd 2 2 | sed 's/,/\./g' > io.tmp && mv io.tmp iostat.cache
EOF

测试数据采集是否正常:

snmpwalk -v1 -c public www.haiyun.me .1.3.6.1.3.1.2
SNMPv2-SMI::experimental.1.2.1 = STRING: "sda"
SNMPv2-SMI::experimental.1.2.2 = STRING: "sda1"
SNMPv2-SMI::experimental.1.2.3 = STRING: "sda2"
SNMPv2-SMI::experimental.1.2.4 = STRING: "dm-0"
SNMPv2-SMI::experimental.1.2.5 = STRING: "dm-1"
SNMPv2-SMI::experimental.1.2.6 = STRING: "hdc"

Cacti界面导入templates/linux目录下模板:
cacti导入模板.png
然后在新建设备时添加相应的模板,效果图如下:
cacti监控io效果图(iostat).png

Linux服务器用iostat监测硬盘I/O性能

发布时间:May 4, 2012 // 分类:系统调优 // No Comments

iostat使用语法:

iostat [ -c | -d] [ -k ] [ -t ] [ -x [device] ] [ <interval> [ <count> ] ]

使用参数:

-c 显示CPU的使用情况
-d 显示磁盘的使用情况
-k 以K为单位输出
-m 以M为单位输出
-t 显示执行时间
-x 更为详细的输出
interval 指定间隔时间
count 指定统计次数

iostat应用示例:

iostat -x 2 2 #统计2次,间隔2秒
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.04    0.00    1.55    0.00    0.00   97.41

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00    36.79  0.00  7.25     0.00   352.33    48.57     0.00    0.50   0.50   0.36
sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2              0.00    36.79  0.00  7.25     0.00   352.33    48.57     0.00    0.50   0.50   0.36
dm-0              0.00     0.00  0.00 44.04     0.00   352.33     8.00     0.04    0.86   0.08   0.36
dm-1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
hdc               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

iostat参数说明:

Blk_read/s:每秒钟块设备写入块的数量,每块一般是4096字节
Blk_wrtn/s :每秒钟块设备读取块的数量
tps:每秒磁盘连续读次数和连续写次数之和
rrqm/s:每秒进行合并的读操作数目
wrqm/s:每秒进行合并的写操作数目
r/s:每秒完成读IO的次数
w/s:每秒完成写IO的次数
rsec/s:每秒读扇区数,每扇区512字节
wsec/s:每秒写扇区数,每扇区512字节
rkB/s:每秒读千字节数
wkB/s:每秒写千字节数
avgrq-sz:平均每次IO操作的数据大小(扇区),即(rsec/s+wsec/s)/(r/s+w/s)。
avgqu-sz:平均IO队列的长度
await:平均每次IO操作的等待时间,单位毫秒
svctm:平均每次IO操作的服务时间,单位毫秒
%util:一秒中有百分之多少的时间用于IO操作,即(r/s+w/s)*(svctm/1000)。

总结:

如果%util较大代表IO请求太多,硬盘可能存在瓶颈。
如果avctm比较接近await,说明IO几乎没等待时间。
如果await远大于avctm,说明IO队列太长,应用响应时间也变长。
avgqu-sz队列长度也可衡量IO负荷的指标,avgqu-sz是单位时间内的平均值。
其它还可参考vmstat结果b参数(等待资源的进程数)和wa参数(IO等待所占用CPU时间百分比)。

XenServer下查找占用硬盘IO较高的虚拟机

发布时间:April 12, 2012 // 分类:虚拟化 // No Comments

首先用iostat查看各个磁盘读写情况,虚拟机磁盘是以dm-id为名显示的。

iostat 2 2 #取样两次,每次相隔2秒

查找tps大于20的vm,并按大小排序

iostat 2 2|grep ^dm-|awk -F"[ ]+|[-]" '{if($3>20){print $2"\t"$3}}'|sort -rnk 2
#第一列为磁盘ID,第二列为当前tps

根据磁盘ID查找相应的虚拟机

#!/bin/bash
#根据iostat结果ID找出相应VM
#执行sh file.sh 编号
case $1 in
*)
  id=`ls -l /dev/mapper/|awk '{if ($6=="'$*'"){print $NF}}'|awk -F-- '{print $NF}'`;xe vdi-list|grep -A 1 $id
;;
esac   
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...