Linux系统维护的主要工作就是保证系统和应用的稳定。而如果想保证稳定就必须时刻了解系统的状态;cpu、内存、磁盘、网络和各种应用程序的运行于占用资源的状态等。同时掌握了系统资源的状态信息;也可以对系统进行优化,以发挥更好的性能。
对于这些信息的查看;需要一些工具能够及时的查看和分析;下面就对Linux系统资源监控常用的工具进行简单的介绍:
1、sar(System Activity Recorder)
sar可以显示CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情
# yum -y install sysstat 安装sar # sar -h Usage: sar [ options ] [ <interval> [ <count> ] ] Main options and reports: -b I/O and transfer rate statistics -B Paging statistics -d Block device statistics -I { <int> | SUM | ALL | XALL } Interrupts statistics -m Power management statistics -n { <keyword> [,...] | ALL } Network statistics Keywords are: DEV Network interfaces EDEV Network interfaces (errors) ..... 详细请查看帮助信息测试:
# sar -b -r -u 1 为了方便;这里一次性显示三项 Linux 2.6.32-431.el6.x86_64 (node2.soul.com) 05/25/2014 _x86_64_ (1 CPU) #cpu信息 09:07:24 PM CPU %user %nice %system %iowait %steal %idle 09:07:25 PM all 0.00 0.00 2.02 0.00 0.00 97.98 #I/O信息 09:07:24 PM tps rtps wtps bread/s bwrtn/s 09:07:25 PM 0.00 0.00 0.00 0.00 0.00 #内存信息 09:07:24 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 09:07:25 PM 764828 247524 24.45 11772 102232 1142588 36.75 #对于这其中每项的含义就不做一一解释;基本表示的很清楚;大都是词面意思。sar还记录每天的cpu信息
显示块设备的信息
网络相关的
详细查阅帮助信息即可。
-------------------------------------------------------------------------------------------
2、Htop
Htop是一个Linux实时监控的应用程序。它显示了运行的进程的完整列表和正在运行的任务。可以直接鼠标点击操作。可以上下左右的拉动菜单查看完整的信息。
系统一般默认没有安装;需要安装该工具。
# yum -y install htop # htop可以看到详细的CPU和内存等信息;下方定义的F1-F10快捷键。也可以直接鼠标点击。
按t显示树状视图
信息显示和帮助也都很信息;一目了然。直接按"/"可以进行搜索关键字。
-------------------------------------------------------------------------------------------
3、dstat
dstat是一个全能系统信息统计工具。与sysstat相比,dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察;而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示。和sysstat相同的是, dstat也可以收集指定的性能资源, 譬如 dstat -c 即显示CPU的使用情况。
# dstat -h 查看帮助信息 Usage: dstat [-afv] [options..] [delay [count]] Versatile tool for generating system resource statistics Dstat options: -c, --cpu enable cpu stats -C 0,3,total include cpu0, cpu3 and total -d, --disk enable disk stats -D total,hda include hda and total -g, --page enable page stats -i, --int enable interrupt stats -I 5,eth2 include int5 and interrupt used by eth2 -l, --load enable load stats -m, --mem enable memory stats -n, --net enable network stats -N eth1,total include eth1 and total查看cpu信息
同时显示多个状态信息
可以看出每项都有颜色标记出来。显示很清楚。
还支持插件监控
显示最占用cpu进程
占用内存最多的进程
具体需要慢慢了解。
-------------------------------------------------------------------------------------------
4、Glances
Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具。 通过 Glances,我们可以监视 CPU,平均负载,内存,网络流量,磁盘 I/O,其他处理器 和 文件系统 空间的利用情况。
Glances 是一个用来监视 GNU/Linux 和 FreeBSD 操作系统的 GPL 授权的自由软件。
Glances 同时也提供了很多实用的选项。 其中我们能够在配置文件见到的一项主要的功能就是设置关键值及相应的标签 (careful[小心], warning[警告] 和 critical[严重]), 然后她会自动帮我们用不同颜色标出系统达到某个瓶颈的信息。
Glances主要功能:
CPU 信息 (用户的相关应用, 系统核心程序和空闲程序)
总内存信息,包括了物理内存,交换空间和空闲内存等等
之前的 1 分钟、5 分钟和 15 分钟平均的 CPU 负载
网络链接的下行和上行速度
处理器总数,以及其活动状态
硬盘 I/O 相关(读写)速度详情
当前挂载设备的磁盘使用情况
高 CPU 和内存使用的进程名,和相关应用的位置
在底部显示当前日期和时间
将消耗最高系统资源的进程用红色标出
可以看出显示cpu/Memroy/network/disk I/O等的相关信息。
帮助信息。
同时还可以远程监控:
在服务器端启动 # glances -s -B 192.168.0.113 Define the password for the Glances server Password: Password (confirm): Glances server is running on 192.168.0.113:61209客户端连接:
同时还可以在web页面监控:
#安装jinja # yum -y install python-jinja2 # glances -o HTML -f /var/www/html/ -o:输出格式;HTML/CSS,-f:指定文件目录-------------------------------------------------------------------------------------------
5、vmstat
Linux 的 VmStat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动 等的统计信息。缺省情况下, vmstat 命令在 Linux 系统下不可用,你需要安装一个包含了 vmstat 程序的 sysstat 软件包。命令格式的常见用法是:
# vmstat -h usage: vmstat [-V] [-n] [delay [count]] -V prints version. -n causes the headers not to be reprinted regularly. -a print inactive/active page stats. -d prints disk statistics -D prints disk table -p prints disk partition statistics -s prints vm table -m prints slabinfo -t add timestamp to output -S unit size delay is the delay between updates in seconds. unit size k:1000 K:1024 m:1000000 M:1048576 (default is K) count is the number of updates. # vmstat 1 基本的显示信息 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 28052 52108 6748 113832 1 7 98 26 73 47 1 2 89 3 4 0 0 28052 52108 6748 113832 0 0 0 0 52 77 0 0 100 0 0各类事件的汇总信息和内存统计信息
磁盘信息
以M显示;默认显示的是字节
# vmstat -S M 1 5 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 27 62 6 111 0 0 87 23 67 44 1 2 90 3 4 0 0 27 62 6 111 0 0 0 0 36 53 0 0 100 0 0 0 0 27 62 6 111 0 0 0 0 32 53 0 0 100 0 0 0 0 27 62 6 111 0 0 0 0 59 65 0 0 100 0 0 0 0 27 62 6 111 0 0 0 28 45 62 0 0 100 0 0-------------------------------------------------------------------------------------------
6、lsof
在许多Linux或者类Unix系统里都有lsof命令,它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。使用这条命令,你可以很容易地看到正在使用哪个文件。这条命令最常用的格式如下:
# lsof | more COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 253,0 4096 2 / init 1 root rtd DIR 253,0 4096 2 / init 1 root txt REG 253,0 150352 393260 /sbin/init init 1 root mem REG 253,0 65928 917536 /lib64/libnss_files-2.12.so init 1 root mem REG 253,0 1926800 917921 /lib64/libc-2.12.solsof选项信息:
lsof /path/to/somefile:显示打开指定文件的所有进程之列表
lsof -c string:显示其COMMAND列中包含指定字符(string)的进程所有打开的文件;此选项可以重复使用,以指定多个模式;
lsof -p PID:查看该进程打开了哪些文件;进程号前可以使用脱字符“^”取反;
lsof -u USERNAME:显示指定用户的进程打开的文件;用户名前可以使用脱字符“^”取反,如“lsof -u ^root”则用于显示非root用户打开的所有文件;
lsof -g GID:显示归属gid的进程情况
lsof +d /DIR/:显示指定目录下被进程打开的文件
lsof +D /DIR/:基本功能同上,但lsof会对指定目录进行递归查找,注意这个参数要比grep版本慢:
lsof -a:按“与”组合多个条件,如lsof -a -c httpd -u apache
lsof -N:列出所有NFS(网络文件系统)文件
lsof -d FD:显示指定文件描述符的相关进程;也可以为描述符指定一个范围,如0-2表示0,1,2三个文件描述符;另外,-d还支持其它很多特殊值,如:
mem: 列出所有内存映射文件;
mmap:显示所有内存映射设备;
txt:列出所有加载在内存中并正在执行的进程,包含code和data;
cwd:正在访问当前目录的进程列表;
lsof -n:不反解IP至HOSTNAME
lsof -i:用以显示符合条件的进程情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46:IPv4或IPv6
protocol:TCP or UDP
hostname:Internet host name
hostaddr:IPv4地址
service:/etc/service中的服务名称(可以不只一个)
port:端口号 (可以不只一个)
查看22号端口运行信息
# lsof -i TCP:22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1474 root 3u IPv4 10212 0t0 TCP *:ssh (LISTEN) sshd 1474 root 4u IPv6 10214 0t0 TCP *:ssh (LISTEN) sshd 2411 root 3u IPv4 13421 0t0 TCP node3.soul.com:ssh->172.16.250.40:53791 (ESTABLISHED) sshd 2503 root 3u IPv4 13630 0t0 TCP node3.soul.com:ssh->172.16.250.40:56215 (ESTABLISHED) sshd 2536 root 3u IPv4 14680 0t0 TCP node3.soul.com:ssh->192.168.253.30:56727 (ESTABLISHED)列出非root用户所打开的文件
显示指定PID
kill掉指定用户的所有进程
-------------------------------------------------------------------------------------------
7、iostat
Iostat是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。这个工具常常用来追踪存储设备的性能问题,其中存储设备包括设备、本地磁盘,以及诸如使用NFS等的远端磁盘。
# iostat Linux 3.4.68-9.el6.centos.alt.x86_64 (node3.soul.com) 05/25/2014 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.64 0.00 1.37 1.97 2.35 93.67 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn scd0 0.02 0.14 0.00 520 0 sda 8.28 219.67 62.23 801198 226980 dm-0 1.29 30.71 2.87 112018 10472 dm-1 2.36 3.00 15.85 10960 57800 dm-2 3.78 63.66 9.56 232194 34856 dm-3 3.75 120.42 33.95 439202 123824简单帮助信息
# iostat --help 详细可以使用man查看 Usage: iostat [ options ] [ <interval> [ <count> ] ] Options are: [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } [ <device> [...] | ALL ] ] [ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ] # iostat -c 仅显示cpu Linux 3.4.68-9.el6.centos.alt.x86_64 (node3.soul.com) 05/25/2014 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.62 0.00 1.33 1.91 2.28 93.85-----------------------------------------------------------------------------------------
8、iftop
iftop是另一个在控制台运行的开放源代码系统监控应用,它显示了系统上通过网络接口的应用网络带宽使用(源主机或者目的主机)的列表,这个列表定期更新。iftop用于监视网络的使用情况,而'top'用于监视CPU的使用情况。iftop是'top'工具系列中的一员,它用于监视所选接口,并显示两个主机间当前网络带宽的使用情况。
#安装软件 # yum -y install iftop # iftop interface: eth0 IP address is: 192.168.0.113 MAC address is: 00:0c:29:16:59:ffffffc5 12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb └─────────────────────┴─────────────────────┴──────────node3.soul.com─────┴────────.=> 192.168.0.254.────┴─────────.4.09Kb 2.05Kb 2.05Kb <= 5.18Kb 2.59Kb 2.59Kb node3.soul.com => 172.16.250.40 2.55Kb 4.21Kb 4.21Kb <= 160b 320b 320b node3.soul.com => server.magelinux.com 0b 578b 578b <= 0b 1.03Kb 1.03Kb 172.16.255.255 => 172.16.250.40 0b 0b 0b <= 1.22Kb 702b 702b ... Press H or ? for help 2.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb └─────────────────────┴─────────────────────┴──────────node3.soul.com─────┴────────.=> 172.16.250.40.────┴─────────.2.95Kb 3.96Kb 3.96Kb── <= 656b 387b 387b node3.soul.com => 192.168.0.254 0b 1.64Kb 1.64Kb <= 0b 2.07Kb 2.07Kb node3.soul.com => server.magelinux.com 584b 579b 579b <= 1.05Kb 1.04Kb 1.04Kb 172.16.255.255 => 172.16.250.40 0b 0b 0b <= 1.22Kb 811b 811b ───────────────────────────────────────────────────────TX: cum: 8.02KB peak: 8.68Kb ──────────rates: 3.52Kb 6.17Kb 6.17KbRX: 6.84KB 7.22Kb 4.66Kb 5.44Kb 5.44Kb-----------------------------------------------------------------------------------------
9、tsar
Tsar是淘宝开发的一个非常好用的系统监控工具,在淘宝内部大量使用。
它不仅可以监控CPU、IO、内存、TCP等系统状态,也可以监控Apache,Nginx/Tengine,Squid等服务器状态。
# yum -y install tsar-2.1.0-0.el4.x86_64.rpm # tsar -h 安装完成后需要等待一段时间来收集数据 Usage: tsar [options] Options: --cron/-c run in cron mode, output data to file --interval/-i specify intervals numbers, in minutes if with --live, it is in seconds --list/-L list enabled modules --live/-l running print live mode, which module will print --ndays/-n show the value for the past days (default: 1) --merge/-m merge multiply item to one --help/-h help Modules Enabled: --cpu CPU share (user, system, interrupt, nice, & idle) --mem Physical memory share (active, inactive, cached, free, wired) --swap swap usage --tcp TCP traffic (v4) --udp UDP traffic (v4) --traffic Net traffic statistics --io Linux I/O performance --pcsw Process (task) creation and context switch --partition Disk and partition usage --tcpx TCP connection data --load System Run Queue and load average监控cpu
监控内存
# tsar --mem -l 1 Time -----------------------mem---------------------- Time free used buff cach total util 25/05-23:39 64.7M 288.5M 1.9M 46.3M 401.4M 71.9 25/05-23:39 68.1M 285.2M 1.9M 46.3M 401.4M 71.0 25/05-23:39 71.5M 281.7M 1.9M 46.3M 401.4M 70.2---------------------------------------------------------------------------------
10、ss
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计。
常用命令:
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接
ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程
ss -s 列出当前socket详细信息
列出当前已经连接,关闭,等待的tcp连接:
# ss -s Total: 196 (kernel 244) TCP: 46 (estab 2, closed 28, orphaned 0, synrecv 0, timewait 27/0), ports 13 Transport Total IP IPv6 * 244 - - RAW 0 0 0 UDP 8 5 3 TCP 18 11 7 INET 26 16 10 FRAG 0 0 0列出当前监听所有tcp/udp进程信息:
ss -tunlp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:604 *:* users:(("rpcbind",1277,7)) udp UNCONN 0 0 *:631 *:* users:(("cupsd",1347,9)) udp UNCONN 0 0 *:648 *:* users:(("rpc.statd",1320,5)) udp UNCONN 0 0 *:60161 *:*ss列出所有http在连接状态的信息:
# ss -o state established '( dport = :http or sport = :http )' Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 ::ffff:192.168.0.113:http ::ffff:192.168.253.30:61742 timer:(keepalive,120min,0)ss列出处在FIN-WAIT-1状态的http、https连接:
# ss -o state fin-wait-1 '( sport = :http or sport = :https )'ss常用的state状态:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : All of the above states
connected : All the states except for listen and closed
synchronized : All the connected states except for syn-sent
bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
big : Opposite to bucket state.
-------------------------------------------------------------------------------------------
11、netstat
Netstat是一个用于监控进出网络的包和网络接口统计的命令行工具。它是一个非常有用的工具,系统管理员可以用来监控网络性能,定位并解决网络相关问题。
列出全部的tcp/udp连接
# netstat -a | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:41038 *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 192.168.122.1:domain *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 node2.soul.com:61209 *:* LISTEN tcp 0 0 localhost:smtp *:* LISTEN tcp 0 0 localhost:x11-ssh-offset *:* LISTEN tcp 0 0 localhost:6011 *:* LISTEN tcp 0 0 localhost:6012 *:* LISTEN tcp 0 0 localhost:6013 *:* LISTEN tcp 0 0 *:36994 *:* LISTEN tcp 0 0 node2.soul.com:9989 *:* LISTEN tcp 0 0 *:mysql *:* LISTEN tcp 0 0 node2.soul.com:ssh 172.16.250.40:53987 ESTABLISHED tcp 292 0 node2.soul.com:61209 node3.soul.com:52258 CLOSE_WAIT ....显示协议统计信息
# netstat -s Ip: 29462 total packets received 4994 with invalid addresses 0 forwarded 0 incoming packets discarded 24468 incoming packets delivered 21227 requests sent out Icmp: 805 ICMP messages received 6 input ICMP message failed. ICMP input histogram: destination unreachable: 804 redirects: 1 804 ICMP messages sent 0 ICMP messages failed ICMP output histogram: destination unreachable: 804 IcmpMsg: InType3: 804 InType5: 1 OutType3: 804帮助信息
工具还有很多;且每个工具的选项都有很多;具体使用方法需要在平时多加使用才能熟练掌握;在此就不一一介绍了。
如有错误;恳请纠正。