Linux之iostat命令
Linux系统中的关键工具iostat,全称为I/O statistics监控器,用于实时监控系统的磁盘操作活动和CPU使用情况。它虽无法详细分析单个进程,但能提供整体系统状态的概览,且作为sysstat软件包的浪漫的网页源码一部分,可以通过yum install sysstat快速安装。
要使用iostat,其命令格式简洁明了:iostat[参数][时间][次数],功能多样,涵盖了CPU、网络、设备、磁盘、CD-ROM等设备的活动监控,以及负载信息的显示。例如,-x选项可显示所有设备的负载情况,%iowait值过高可能暗示硬盘I/O瓶颈,python 源码 分析工具而%idle值低则表示CPU忙碌或内存分配受限。
通过iostat,我们还能查看设备的吞吐量(如TPS,每秒传输次数)和使用率,如%util,以及响应时间(await)。当%util接近%,说明磁盘可能面临瓶颈,此时应结合其他工具如vmstat,观察b和wa参数以确认是否存在IO压力。另外,仅关注CPU状态时,同样可以利用iostat来识别硬盘I/O瓶颈和CPU空闲程度,为资源优化提供依据。
Linux 性能分析之iostat命令详解
Linux性能分析工具iostat详解,深入解析其功能与用法。作为重要的IO性能监控工具,iostat提供系统内核版本、免费社工库源码主机信息以及实时的CPU和磁盘I/O状态。首先,确保已安装sysstat包以获取iostat命令。命令的基本格式如下,通过常见的用法展示其操作。
执行iostat后,你会看到包含内核信息、CPU状态和磁盘I/O详细数据的输出。内核版本和CPU架构信息直观显示,而CPU状态部分与top命令类似,包括如idle、user、iowait等指标。其中,iowait指标容易被误解,它反映了CPU空闲且有未完成IO请求时的情况,不意味着CPU完全闲置,而是富贵棋牌2源码等待特定事件,如磁盘IO或网络数据。
理解了iowait计算方法后,我们通过示例图理解其与IO瓶颈的关系。即使iowait百分比高,也可能并不表示IO瓶颈,因为这取决于CPU空闲时间和其他因素。iostat列出了详细的磁盘读写操作速率、合并请求、丢弃请求等信息,以及%util利用率,用于判断I/O压力。在实际测试中,如使用dd命令模拟磁盘I/O,监控iostat输出的变化,可以帮助我们更准确地分析性能瓶颈。
总之,iostat是一个强大的Linux性能分析工具,通过理解其输出,金城投资源码我们可以有效地监控和优化系统的IO性能。
linux 查看磁盘IO状态操作指南
Linux系统出现了性能问题,一般我们可以通过top.iostat,vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 www.
iostat结果分析
[kefu@SZ-8 linux]$ iostat -x -k
Linux 2.6.-.el5_cyou_1.0 (SZ-8.) //
avg-cpu: %user %nice %system %iowait %steal %idle
. 0. 2. 0. 0. .
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0. . 0. . . . . 0. 0. 0. 0.
sda1 0. 0. 0. 0. 0. 0. . 0. 2. 2. 0.
sda2 0. 0. 0. 0. 0. 4. . 0. 1. 0. 0.
sda3 0. . 0. . 8. . . 0. 0. 0. 0.
sda4 0. 0. 0. 0. 0. 0. 2. 0. . . 0.
sda5 0. 1. 0. 0. 0. 8. . 0. 1. 0. 0.
sda6 0. 0. 0. 0. 0. 0. 8. 0. 5. 4. 0.
sda7 0. 0. 0. 0. 0. 0. . 0. 5. 3. 0.
sda8 0. 0. 0. 0. 0. 0. . 0. 7. 6. 0.
sda9 0. 0. 0. 0. 0. 0. . 0. 7. 5. 0.
sda 0. 0. 0. 0. 0. 0. . 0. 5. 3. 0.
sda 0. . 0. 0. 0. . . 0. . 0. 0.
sdb 0. 3. . . . . . 0. . 1. 7.
rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s
wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/0设备次数。即delta(wio)/s
rsec/s:每秒读扇区数。即delta(rsect)/s
wsec/s:每秒写扇区数。即delta(wsect)/s
rKB/s:每秒读K字节数。是rsec/s的一半,因为每扇区大小为字节
wKB/s:每秒写K字节数。是wsec/s的一半
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。即delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即delta(aveq)/s/(因为aveq的单位为毫秒)
await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)
svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。即delta(usr)/s/(因为use的单位为毫秒)
如果%util接近%,说明产生的I/O请求太多,I/O系统已经满负载,该磁盘可能存在瓶颈。
比较重要的参数
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的
svctm:平均每次设备I/O操作的服务时间
await:平均每次设备I/O操作的等待时间
avgqu-sz:平均I/O队列长度
如果%util接近%,表明I/O请求太多,I/O系统已经满负荷,磁盘可能存在瓶颈,一般%util大于%,I/O压力就比较大,读取速度有较多的wait。
同时可以结合vmstat查看查看b参数(等待资源的进程数)和wa参数(I/O等待所占用的CPU时间的百分比,高过%时I/O压力高)
await的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模式。如果svctm比较接近await,说明I/O几乎没有等待时间;如果
await远大于svctm,说明I/O队列太长,应用得到的响应时间变慢。
形象的比喻
r/s+w/s类似于交款人的总数
平均队列长度(avgqu-sz)类似于单位时间里平均排队的人数
平均服务时间(avctm)类似于收银员的收款速度
平均等待时间(await)类似于平均每人的等待时间
平均I/O数据(avgrq-sz)类似于平均每人所买的东西
I/O操作率(%util)类似于收款台前有人排队的时间比例
svctm一般要小于await(因为同时等待的请求的等待时间被重复计算了),svctm的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会
间接导致svctm的增加。await的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模式。如果svctm比较接近await,说明I/O几乎没有
等待时间;如果await远大于svctm,说明I/O队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调
整内核elevator算法,优化应用,或者升级CPU
队列长度(avcqu-sz)也可作为衡量系统I/O负荷的指标,但由于avcqu-sz是按照单位时间的平均值,所以不能反映瞬间的I/O洪水。
linuxçiostat
äºæå¡å¨å åä¸è¶³ï¼ç:äºæå¡å¨å åä¸è¶³æ¶ï¼å¯æä¸åæ¹æ³è§£å³è¿ä¸ªé®é¢:
1.æ¾å°è¿è¡å åä¸è¶³æ¯å æé«çç³»ç»è¿ç¨æææ¡£ï¼å¼å±æåæ¸ é¤ï¼
2.æ´æ°äºæå¡å¨çé ç½®ï¼å¢å å å空é´ãæ¥è¯¢æå¡å¨å åå©ç¨çLinuxäºæå¡å¨è½å¤æ ¹æ®å®è¡freeï¼topï¼å®è¡åå¯æ ¹æ®shift+m对è¿è¡å åæåï¼ï¼vmstatï¼procinfoæ令ï¼ææ¯æµè§/proc/meminfoææ¡£å¼å±æ¥è¯¢ã
3.æ¥è¯¢åç¬ç³»ç»è¿ç¨å æè¿è¡å åè½å¤æ ¹æ®å®è¡top-pPIDï¼pmap-xPIDï¼psaux|grepPIDæ令ï¼ææ¯æµè§/proc/$process_idï¼ç³»ç»è¿ç¨çPIDï¼/statusææ¡£å¼å±æ¥è¯¢ã
4.ä¸è¬ï¼å½äºæå¡å¨åº_è´è·é«çç¶åµæ¶ï¼å°ä¼å 为CPUèµæºä¸è¶³ï¼I/O读åè½åçæ¿ï¼è¿è¡å åèµæºä¸è¶³ï¼CPUå·²ç»å¼å±å³å¨å¯éåæµç®ãå¨åçææ¡£ææ°æ®ä¿¡æ¯è¿å¤è¿å¤§çãæè®®åºç¨vmstatï¼iostatï¼topæ令å辨è´è·è¿é«çç¼æ ï¼å¹¶å¯»æ¾å®é å æå¾å¤_æºçç³»ç»è¿ç¨å¼å±æå解å³ãææ¯è¦æ¯æ²¡æå¯å æçææ¡£ï¼å¼å±æ´æ°æ©å æ¯æç«å³çé¿ä¹ 解å³æ¹æ¡ã
Linuxå®è£ åï¼éä¿çåªäºèªå¯å¨æå¡ï¼
åWindowsç³»ç»ä¸æ ·ï¼Linuxæå¡å¨è¿è¡è¿ç¨ä¸ä¹ä¼ä¸äºæ²¡ç¨ç软件æå¡é»è®¤è¿è¡ï¼è¿äºå ç¨äºå¾å¤ç³»ç»èµæºï¼ä¹ä¼æå®å ¨éæ£ï¼æ以ä¸è¬æ¯å»ºè®®å ³éçãé£ä¹ï¼å·¥ä½ä¸Linux主æºå°åºéè¦æåªäºå¼æºèªå¯å¨æå¡å¢?
æ°è£ Linuxç³»ç»ä¹åï¼æå¿ è¦ä¿ççå¼æºèªå¯å¨æå¡æ5个ï¼
sshdï¼è¿ç¨è¿æ¥Linuxæå¡å¨æ¶è¦ç¨å°ï¼æä»¥å¿ é¡»å¼å¯ï¼ä¸ç¶å°±æ æ³æä¾è¿ç¨è¿æ¥æå¡äºãrsyslogï¼æ¥å¿ç¸å ³è½¯ä»¶ï¼è¿æ¯æä½ç³»ç»æä¾çä¸ç§æºå¶ï¼ç³»ç»çå®æ¤ç¨åºé常ä¼ä½¿ç¨rsyslogç¨åºå°åç§ä¿¡æ¯åå°å个系ç»æ¥å¿æ件ä¸ãnetworkï¼ç³»ç»å¯å¨æ¶ï¼å¦ææ³æ¿æ´»æå ³éå个ç½ç»æ¥å£çè¯ï¼å¯ä»¥èèå¼å¯ãcrondï¼ç¨äºå¨ææ§çæ§è¡ç³»ç»åç¨æ·é ç½®çä»»å¡è®¡åãæéè¦æ¶å¼å¯ãå ä¹æ¯è¿ç»´å·¥ä½ä¸å¿ é¡»è¦ç¨çä¸ä¸ªè½¯ä»¶ãsysstatï¼sysstatæ¯ä¸ä¸ªè½¯ä»¶å ï¼æ¯å å«çæµç³»ç»æ§è½åæççä¸ç»å·¥å ·ï¼è¿äºå·¥å ·å¯¹äºæ¶éç³»ç»æ§è½æ°æ®å¾æ帮å©ï¼æ¯å¦CPU使ç¨çã硬çåç½ç»ååæ°æ®çï¼å¯¹è¿äºæ°æ®çæ¶éååæï¼æå©äºå¤æç³»ç»è¿è¡æ¯å¦æ£å¸¸ãsysstat软件å éæç主è¦å·¥å ·ä¸ºï¼
iostatå·¥å ·æä¾CPU使ç¨çå硬çååæççæ°æ®ãmpstatå·¥å ·æä¾ä¸å个æå¤ä¸ªå¤çå¨ç¸å ³çæ°æ®ãsarå·¥å ·è´è´£æ¶éãæ¥å并åå¨ç³»ç»æ´»è·çä¿¡æ¯ãä¸è¿°5个æå¡æ¯å®è£ å®ç³»ç»å建议ä¿ççå¼æºèªå¯å¨æå¡ï¼ä¹æ¯ä¸åç产æå¡å¨å¿ é¡»ä¿ççå¼æºèªå¯å¨æå¡ãå°æ¥è¿å¯ä»¥æ ¹æ®æå¡å¨çä¸å¡ä½¿ç¨åºæ¯è°æ´ç¸åºçèªå¯å¨æå¡ã
linux常ç¨çç³»ç»å·¥å ·ï¼
Linuxç¨æ·å¸¸ç¨çä¸ªå·¥å ·ï¼å ¶ä¸å æ¬ç½ç»çæ§ãç³»ç»å®¡è®¡æå ¶å®æç¨å½ä»¤ï¼è¿ä¸ªLinuxå·¥å ·å¯ä»¥å¸®å©å¤§å®¶æé«å·¥ä½å使ç¨æçï¼é常å®ç¨ãåå«å¦ä¸ï¼
1.w
对ï¼ä½ 没çéï¼å°±æ¯wå½ä»¤ã使ç¨è¯¥å½ä»¤æ们å¯ä»¥æ¥çå°å½åç»å½ç³»ç»çç¨æ·æ¯è°ï¼ä»¥åæ§è¡äºåªäºå½ä»¤ã
2.nmon
Nmonæ¯ä¸ä¸ªå¯ä»¥çæ§å½åç³»ç»æ§è½çå°å·¥å ·ï¼ä½¿ç¨ä¹åéè¦å ç¨å¦ä¸å½ä»¤è¿è¡å®è£ ï¼
sudoapt-getinstallnmon
å®è£ 好åæ§è¡nmonå½ä»¤å³å¯æå¼ï¼
nmon
nmonå¯ä»¥æ¥çç½ç»ãCPUãå ååç£çç使ç¨æ åµã
æå¼ä¹åæcæ¥çCPUä¿¡æ¯ï¼
æå¼ä¹åænæ¥çç½ç»ä¿¡æ¯ï¼
ç£ç空é´çæ§(ç£ç使ç¨ç)æ¯ITè¿ç»´ç®¡çä¸ååéè¦ççæ§é¡¹ç®ä¹ä¸ï¼ä¸»è¦çæ§è®¡ç®æºçé»è¾ç£ç空é´ä½¿ç¨çï¼å¨ä¸äºè¾å¤§å¢é¿ççç³»ç»(æ¯å¦Oracle表空é´çååºã访é®æ¥å¿è®°å½ååºç)ä¸å¯¹ç£ç空é´ççæ§æ¾å¾ååéè¦ã
å²æ¶SUMæå¡å¨çæ§è½¯ä»¶å¯ä»¥å¯¹Windowsçç£ç空é´ãLinuxçç£ç空é´ãAIXçç£ç空é´ãSolarisçç£ç空é´ãHP-UNIXçç£ç空é´ãFreeBSDçç£ç空é´ä»¥åä»»ä½GNULinuxçæ¬çç£ç空é´è¿è¡çæ§ãSUMæå¡å¨çæ§è½¯ä»¶ä¸ç£ç空é´çæ§ä¸»è¦å æ¬ç£ç空é´ä½¿ç¨çææ ãç£çå·²ç¨ç©ºé´ãç£çå©ä½ç©ºé´ä»¥åç£çæ»ç©ºé´çççæ§é¡¹ç®ã
ç£ç空é´ä½¿ç¨ççæ§-SUMæå¡å¨çæ§è½¯ä»¶
3.ncdu
ncduå½ä»¤å¯ä»¥ç¨æ¥æ¥çååæLinuxä¸åç®å½å¯¹ç£ç空é´å ç¨æ åµçå·¥å ·ï¼è¯·ä½¿ç¨å¦ä¸å½ä»¤è¿è¡å®è£ ï¼
apt-getinstallncdu
å®è£ 好åæ§è¡å¦ä¸å½ä»¤å³å¯ä»æ ¹ç®å½å¼å§åæï¼
ncdu/
注æï¼æ§è¡ä¸è¿°å½ä»¤ä¼å ç¨å¤§éç£çI/O
åæå®æåï¼ä¼çæ类似å¦ä¸æªå¾çè¾åºï¼
æ们å¯ä»¥å¨ç»æçé¢ænæå称è¿è¡æåºææsæ大å°è¿è¡æåºã
SUMæå¡å¨çæ§è½¯ä»¶å¯¹Linuxççæ§æ¯SUMæåºæ¬çåè½ä¹ä¸ã
å²æ¶SUMæå¡å¨çæ§è½¯ä»¶ä½ä¸ºéä¸çæ§å¹³å°ç±»è½¯ä»¶ï¼å®å¯¹åç§Linuxæä½ç³»ç»å¯ä»¥è¿è¡éä¸ãç»ä¸ççæ§ï¼å®ä¸»è¦å¯¹LinuxçCPU使ç¨çãå å使ç¨çãç£ç空é´ä½¿ç¨ãè¿ç¨çè¿è¡ç»ä¸ççæ§ãå¨SUMæå¡å¨çæ§è½¯ä»¶ä¸ï¼ä¸ä» å¯ä»¥å¯¹Linuxç³»ç»åºæ¬æ§è½è¿è¡çæ§ï¼åæ¶è¿å¯ä»¥å¯¹Linuxä¸å®çéä¸ç®¡çï¼æ¯å¦æ§è¡Linuxçå½ä»¤ãéå¯Linuxæå¡å¨ãéå¯æäºè¿ç¨çã
Linuxçæ§ãLinuxæå¡å¨çæ§ãLinuxCPUçæ§ãLinuxå åçæ§ãLinuxç£ççæ§
4.slurm
slurmæ¯ä¸ä¸ªç½å¡å¸¦å®½çæ§å½ä»¤è¡å®ç¨ç¨åºï¼å®ä¼èªå¨çæASCIIå¾å½¢è¾åºã使ç¨ä¹åå ç¨å¦ä¸å½ä»¤è¿è¡å®è£ ï¼
apt-getinstallslurm
使ç¨å¦ä¸å½ä»¤è¿è¡è¾åºï¼
slurm-i
slurmçé¢ä¸å¯ä»¥æ§è¡å¦ä¸é项ï¼
âIï¼æ¾ç¤ºlx/txç¶æ
âcï¼åæ¢å°ç»å ¸çé¢
ârï¼æå¨å·æ°çé¢
âqï¼éåºå·¥å ·
5.findmnt
Findmntæ¯ä¸ä¸ªLinuxå ç½®çå½ä»¤è¡å·¥å ·ï¼å®ä¸»è¦ç¨äºæ¥æ¾æè½½çæ件系ç»ç¶æãFindmntå¯ä»¥æ¥çå°å½åç³»ç»ä¸å·²æè½½ç设å¤ï¼å¨å¿ è¦æ¶è¿å¯è¿è¡mountæunmountæä½ã
æ§è¡findmntå½ä»¤åä¼çå°å¦ä¸è¾å ¥:
å½ç¶ï¼è¿æå¦ä¸åæ°å¯ç¨ï¼
âfindmnt-lï¼ä»¥å表æ¹å¼è¿è¡è¾åº
âfindmnt-sï¼è¾åºfstabä¸æè½½ç设å¤
âfindmnt-text4ï¼ææ件系ç»ç±»åè¿è¡è¾åº
6.dstat
dstatæ¯ä¸ä¸ªå¯ä»¥é常çµæ´»ä½¿ç¨åè¿è¡ç»å使ç¨çå·¥å ·ï¼å®å¯ç¨äºçæ§å åãè¿è¡ãç½ç»åç£çæ§è½ï¼å¯ç¨äºæ¿ä»£ifstatãiostatãdmstatçå·¥å ·ã使ç¨ä¹åéå æ§è¡å¦ä¸å½ä»¤è¿è¡å®è£ ï¼
apt-getinstalldstat
æ§è¡å¦ä¸å½ä»¤å¯ä»¥çå°ææçæ§æ°æ®ï¼
dstat
å ¶å¯éåæ°é常å¤ï¼å¸¸ç¨çæï¼
âdstat-cï¼çæ§CPU
âdstat-cdl-Dsda1ï¼çæ§CPU详ç»ä¿¡æ¯
âdstat-dï¼çæ§ç£ç
7.saidar
saidaræ¯å¦ä¸ä¸ªCLIç³»ç»æ°æ®çæ§åç»è®¡å·¥å ·ï¼å¯æä¾æå ³ç£çãç½ç»ãåå¨åSWAPççæ§ä¿¡æ¯ã使ç¨ä¹åéå 使ç¨å¦ä¸å½ä»¤è¿è¡å®è£ ï¼
sudoapt-getinstallsaidar
å®è£ å®æåå¯ç´æ¥æ§è¡saidarè¿è¡è¾åºï¼ä½æ们é常使ç¨å¸¦åæ°çå½ä»¤çæ带é¢è²è¾åºï¼
saidar-c
8.ss
sså ¨ç§°socketstatisticsï¼æ¯ä¸ä¸ªå¯ä»¥æ¿ä»£netstatçç½ç»è¿æ¥æ¥çå·¥å ·ã
ç´æ¥æ§è¡sså³å¯è¿è¡æ¥çï¼
常ç¨åæ°æï¼
ss-Atcpï¼æå®æ¥çåè®®
ss-ltpï¼æ¾ç¤ºè¿ç¨å称åPID
9.ccze
cczeé常æç¨ï¼å®å¯ä»¥ç¨ä¸åé¢è²é«äº®æ¥å¿ï¼åå©ç®¡çåè¿è¡åºååæ¥çåæã使ç¨ä¹åéå 使ç¨å¦ä¸å½ä»¤è¿è¡å®è£ ï¼
apt-getinstallccze
æ们å¯ä»¥ä½¿ç¨ç±»ä¼¼å¦ä¸æ¹å¼è¿è¡ä½¿ç¨ï¼
tailf/var/log/syslog|ccze
è使ç¨ccze-låæ°å¯ä»¥æ¥çå ¶æ¯æçæ¥å¿ç±»åã
.ranwhen.py
æ们æåä»ç»çranwhen.pyæ¯ä¸ä¸ªpythonå·¥å ·ï¼å®å¯ä»¥ä»¥å¾å½¢æ¹å¼æ¾ç¤ºç³»ç»æ´»å¨ã
è¦ä½¿ç¨è¯¥å·¥å ·éè¦å å®è£ pythonè¯è¨æ¯æï¼
sudo
apt-add-repositoryppa:fkrull/deadsnakes
sudoapt-getupdate
sudoapt-getinstallpython3.2
ç¶åä¸è½½ranwhen.py
wget
/p-e-w/ranwhen/archive/master.zip
unzipmaster.zipcdranwhen-master
使ç¨å¦ä¸å½ä»¤å³å¯æ§è¡ranwhen.py
python3.2ranwhen.py
工作必备知识Linux磁盘I/O故障排查分析定位 iostat 介绍
在Linux系统中,遇到磁盘I/O故障时,了解和掌握命令iostat是至关重要的。iostat是一个强大的系统监控工具,用于实时监控系统的I/O设备使用负载,帮助我们定位和分析问题。
该命令的语法为iostat [选项] [时间间隔 interval] [次数 count],其中常用参数包括:-c 显示CPU使用情况,-y 跳过首次报告数据,-d 显示磁盘使用,-k 和 -m 以KB或MB单位展示读写数据,-N 显示LVM信息,-n NFS使用情况,-p 可指定磁盘或分区,-t 显示终端和CPU信息,-x 提供详细设备和CPU统计,-V 显示版本信息。
默认情况下,iostat会显示Linux版本、CPU平均利用率和磁盘I/O统计。当%idle持续低于%,可能表明CPU瓶颈;而%iowait高且%idle大于%,则表示I/O设备可能存在问题。磁盘I/O统计包括读取和写入操作次数、速率以及等待时间等,这些指标可以帮助我们深入分析。
使用iostat -x -d -y 1 3等详细参数选项,可以获取更详细的I/O请求合并、队列长度、请求大小和服务时间等信息。%util虽然在%时并不意味着设备饱和,但过高则可能需要关注。
对于r_await和w_await的判断,通常来说,较大的值可能表示等待时间过长,可能存在I/O瓶颈。参考相关教程如“Linux I/O问题排查”和“运维工程师系列 - 掌握iostat命令”可以得到更深入的理解。
linux iostat命令详解
基本介绍:iostat命令用于输出磁盘IO和CPU的统计信息,它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。
入门测试:
每隔两秒报告一次:
# iostat -d 2
代码说明及拓展:
-c 仅显示CPU使用情况
-d 仅显示设备利用率
-k 显示状态以千字节每秒为单位,而不使用块每秒
-m 显示状态以兆字节每秒为单位
-p 仅显示块设备和所有被使用的其他分区的状态
-t 显示每个报告产生时的时间
几个常用的Linux操作系统监控脚本代码
本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。
下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进行修改,希望能给大家一点帮助。
1、查看主机网卡流量
复制代码 代码如下:
#!/bin/bash #network #Mike.Xu while : ; do time='date +%m"-"%d" "%k":"%M' day='date +%m"-"%d' rx_before='ifconfig eth0|sed -n "8"p|awk '{ print $2}'|cut -c7-' tx_before='ifconfig eth0|sed -n "8"p|awk '{ print $6}'|cut -c7-' sleep 2 rx_after='ifconfig eth0|sed -n "8"p|awk '{ print $2}'|cut -c7-' tx_after='ifconfig eth0|sed -n "8"p|awk '{ print $6}'|cut -c7-' rx_result=$[(rx_after-rx_before)/] tx_result=$[(tx_after-tx_before)/] echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps" sleep 2 done
2、系统状况监控
复制代码 代码如下:
#!/bin/sh #systemstat.sh #Mike.Xu IP=..1. top -n 2| grep "Cpu" 》./temp/cpu.txt free -m | grep "Mem" 》 ./temp/mem.txt df -k | grep "sda1" 》 ./temp/drive_sda1.txt #df -k | grep sda2 》 ./temp/drive_sda2.txt df -k | grep "/mnt/storage_0" 》 ./temp/mnt_storage_0.txt df -k | grep "/mnt/storage_pic" 》 ./temp/mnt_storage_pic.txt time=`date +%m"."%d" "%k":"%M` connect=`netstat -na | grep "...:" | wc -l` echo "$time $connect" 》 ./temp/connect_count.txt
3、监控主机的磁盘空间,当使用空间超过%就通过发mail来发警告
复制代码 代码如下:
#!/bin/bash #monitor available disk space SPACE='df | sed -n '/ / $ / p' | gawk '{ print $5}' | sed 's/%//' if [ $SPACE -ge ] then fty@.com fi
4、 监控CPU和内存的使用情况
复制代码 代码如下:
#!/bin/bash #script to capture system statistics OUTFILE=/home/xu/capstats.csv
DATE='date +%m/%d/%Y'
TIME='date +%k:%m:%s'
TIMEOUT='uptime'
VMOUT='vmstat 1 2'
USERS='echo $TIMEOUT | gawk '{ print $4}' '
LOAD='echo $TIMEOUT | gawk '{ print $9}' | sed "s/,//' '
FREE='echo $VMOUT | sed -n '/[0-9]/p' | sed -n '2p' | gawk '{ print $4} ' '
IDLE='echo $VMOUT | sed -n '/[0-9]/p' | sed -n '2p' |gawk '{ print $}' '
echo "$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE" 》 $OUTFILE
5、全方位监控主机
复制代码 代码如下:
#!/bin/bash # check_xu.sh # 0 * * * * /home/check_xu.sh DAT="`date +%Y%m%d`" HOUR="`date +%H`" DIR="/home/oslog/host_${ DAT}/${ HOUR}" DELAY= COUNT= # whether the responsible directory exist if ! test -d ${ DIR} then /bin/mkdir -p ${ DIR} fi # general check export TERM=linux /usr/bin/top -b -d ${ DELAY} -n ${ COUNT} ${ DIR}/top_${ DAT}.log # cpu check /usr/bin/sar -u ${ DELAY} ${ COUNT} ${ DIR}/cpu_${ DAT}.log #/usr/bin/mpstat -P 0 ${ DELAY} ${ COUNT} ${ DIR}/cpu_0_${ DAT}.log #/usr/bin/mpstat -P 1 ${ DELAY} ${ COUNT} ${ DIR}/cpu_1_${ DAT}.log # memory check /usr/bin/vmstat ${ DELAY} ${ COUNT} ${ DIR}/vmstat_${ DAT}.log # I/O check /usr/bin/iostat ${ DELAY} ${ COUNT} ${ DIR}/iostat_${ DAT}.log # network check /usr/bin/sar -n DEV ${ DELAY} ${ COUNT} ${ DIR}/net_${ DAT}.log #/usr/bin/sar -n EDEV ${ DELAY} ${ COUNT} ${ DIR}/net_edev_${ DAT}.log
放在crontab里每小时自动执行:
0 * * * * /home/check_xu.sh
这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络,IO的统计数据。
如果某个时间段产生问题了,就可以去看对应的日志信息,看看当时的主机性能如何。
2024-12-23 05:40
2024-12-23 05:03
2024-12-23 05:00
2024-12-23 04:56
2024-12-23 04:15