你的位置:首页 > 操作系统

[操作系统]Linux 服务器监控


标签:iostat/free/top/dstat

概述  

 文字主要讲述使用linux自带的几个命令监控io、CPU、磁盘、内存等信息。

 

 

目录

  •  IO和CPU监控
    •  iostat命令
  •  其它监控
    •  内存
    •  磁盘
    •  进程
    •  系统负载
  •  总结

IO和CPU监控

iostat命令

主要用于监控系统设备的IO负载情况

查看命令帮助

iostat --help

[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ][ <设备> [...] | ALL ] [ -p [ <设备> [,...] | ALL ] ]

iostat

Linux 2.6.32-71.el6.x86_64 (localhost.localdomain) 2015年12月24日 _x86_64_(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           1.98    0.00    0.80    3.04    0.00   94.18

%user:用户CPU百分比

%nice: nice操作所使用的CPU的百分比.

%system:操作系统所使用的CPU百分比

%iowait:CPU等等IO操作所占用的CPU百分比,当磁盘IO比较大的时候该值会增加。

%steal:分配给虚拟机占用的CPU百分比

%idle:CPU空闲时间的百分比

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda              17.78       128.39      1107.66    9968098   86000772

tps: 每秒钟发送到的I/O请求数(可以理解成每秒磁盘IO处理的请求,这样可能更好理解)Blk_read /s: 每秒读取的block数
Blk_wrtn/s: 每秒写入的block数
Blk_read:   读入的block总数
Blk_wrtn:  写入的block总数

 

-c参数:

分成CPU的状态,也就是上面的CPU部分

-d参数

分析磁盘设备状态,也就是上面的Device部分。

-n参数

分析文件系统的状态

Filesystem:              rBlk_nor/s   wBlk_nor/s   rBlk_dir/s   wBlk_dir/s   rBlk_svr/s   wBlk_svr/s     ops/s    rops/s    wops/s 

[-N或者-h]参数

和直接运行iostat的区别主要是device部分,这里显示的是设备每秒的读写、读写字节情况,默认是kB

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           2.06    0.00    0.82    3.09    0.00   94.03

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda              18.20        65.63       556.45    5169933   43834154

kB_read/s:每秒从设备读的KB数

kB_wrtn/s:每秒写入设备的KB数

kB_read:每秒从设备读的KB字节

kB_wrtn:每秒写入设备的KB字节

[ -k | -m ]参数

是单位,分别是KB和MB,默认单位是KB,用来做磁盘分析的时候使用

例如iostat -d -M(以MB作为单位显示)

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn

sda              18.65         0.06         0.55       5102      43654

-t参数

显示的时候打印出时间

2015年12月24日 09时39分31秒

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

               2.07    0.00    0.83    3.17    0.00   93.94

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda              18.59       131.96      1128.88   10450530   89403980

[-v或-Z]参数

暂时没发现什么特别的功能

-x参数

最详细的显示CPU和设备信息

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           2.06    0.00    0.83    3.16    0.00   93.96

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util

sda               1.58   125.86    2.49   16.04   131.51  1124.71    67.80     0.41   22.29   2.69   4.98

其中CPU部分没有什么变化,这里主要来看device部分:

rrqm/s:将读入请求合并后,每秒发送到设备的读入请求数.
wrqm/s:将写入请求合并后,每秒发送到设备的写入请求数.
r/s:每秒发送到设备的读入请求数.
w/s:每秒发送到设备的写入请求数.
rsec/s:每秒从设备读入的扇区数.
wsec/s:每秒向设备写入的扇区数.
rkB/s:每秒从设备读入的数据量,单位为K.
wkB/s:每秒向设备写入的数据量,单位为K.
avgrq-sz:发送到设备的请求的平均大小,单位是扇区.
avgqu-sz:发送到设备的请求的平均队列长度.
await:I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.
svctm:发送到设备的I/O请求的平均执行时间.单位是毫秒.
%uti:在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.
当这个值接近100%时,表示设备带宽已经占满.

-P参数

分析指定的设备:例如sda,sdb

iostat -p sda

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           2.05    0.00    0.82    3.13    0.00   93.99

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda              18.40       130.78      1116.56   10472250   89406772

sda1              0.01         0.07         0.00       5232         28

sda2             16.72       118.34      1089.36    9476202   87228408

sda3              0.36        12.36        27.20     989616    2178336

常见的用法:

显示设备和CPU状态,每秒打印一次,并显示时间

iostat -x -k -t 1

显示设备和CPU状态,每秒显示一次,显示10次,并显示时间

iostat -x -k -t 1 10

显示设备sda和CPU状态,每秒显示一次,显示10次,并显示时间

iostat -x -k -t -p sda 1 10

其它监控 

内存 

free命令

查看文件/etc/proc/ meminfo

磁盘 

df命令

查看文件cat /etc/proc/diskstats

进程 

top命令

/etc/proc

这里有每个进程的文件

系统负载 

uptime命令

10:18:23 up 22:43,  3 users,  load average: 0.00, 0.00, 0.79

  • 当前时间 10:18:23
  • 系统已运行的时间 22小时43分钟
  • 当前在线用户 3 user
  • 平均负载:0.00, 0.00, 0.79最近1分钟、5分钟、15分钟系统的负载

查看文件

cat /proc/loadavg

0.00 0.00 0.70 1/317 41562

除了前3个数字表示平均进程数量外,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID

 

系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:

  • 它没有在等待I/O操作的结果
  • 它没有主动进入等待状态(也就是没有调用'wait')
  • 没有被停止(例如:等待终止)

一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.

uptime部分摘自:http://www.cnblogs.com/kaituorensheng/p/3602812.html

总结

 linux系统自带的这几个命令做为日常监控使用还是挺不错的,当然还有很多第三方工具也很不错,比如监控IO的dstat工具,后面有时间会单独讲一下dstat工具的使用。

 

 

 希望文章可以帮助到更多的人,帮忙顶上去,谢谢!!!


备注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

《欢迎交流讨论》