需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧。大多数Linux发行版本都装备了大量的监控工具。这些工具提供了能用作取得相关信息和系统活动的量度指标。你能使用这些工具发现造成性能问题可能原因。此次讨论到的工具只是分析和调试服务器下面问题时最基本工具中的一部分。
1.找出瓶颈
2.硬盘(存储)瓶颈
3.CPU及内存瓶颈
4.网络瓶颈
1:top-进程活动
top提供一个当前运行系统实时动态的视图,也就是正在运行进程。在默认情况下,显示系统中CPU使用率最高的任务,并每5秒钟刷新一次。
图01.Linuxtop命令
常用热键
热键
用途
t
显示摘要信息开关.
m
显示内存信息开关.
A
分类显示系统不同资源的使用大户。有助于快速识别系统中资源消耗多的任务。
f
添加删除所要显示栏位.
o
调整所要显示栏位的顺序.
r
调整一个正在运行的进程Nice值.
k
结束一个正在运行的进程.
z
彩色/黑白显示开关
2:vmstat-系统活动、硬件及系统信息
使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。
#vmstat3
显示内存使用详细信息
#vmstat-m
显示内存活动/不活动的信息
#vmstat-a
3:w-显示谁已登录,他们正在做什么?
w命令显示系统当前用户及其运行进程的信息。
#w barlow
13:52:12 up 2:03, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
barlow pts/0 192.168.8.88 11:51 0.00s 16.10s 0.12s w barlow
4:uptime-告诉系统已经运行了多久?
uptime命令过去只显示系统运行多久。现在,可以显示系统运行多久、当前有多少的用户登录、在过去的1,5,15分钟里平均负载时多少。
#uptime
13:15:10 up 1:26, 1 user, load average: 0.00, 0.00, 0.00
1可以被认为是最优的负载值。负载是会随着系统不同改变得。单CPU系统1-3和SMP系统6-10都是可能接受的。
5:ps-显示进程
ps命令显示当前运行进程的快照。使用-A或-e显示所有进程。
#ps-A
ps与top非常相似,但ps提供更多的信息。
输出长格式
#ps-Al
输出附加全格式(显示进程在执行时传入的参数)
#ps-AlF
显示进程结构
#ps-AlFH
在进程后显示线程
#ps-AlLm
打印服务器上所有进程
#psax
#psaxu
打印进程树
#ps-ejH
#psaxjf
#pstree
打印安全信息
#ps-eoeuser,ruser,suser,fuser,f,comm,label
#psaxZ
#ps-eM
查看使用Vivek用户名运行的进程
#ps-Uvivek-uviveku
设置自定义输出格式
#ps-eopid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
#psaxostat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
#ps-eopid,tt,user,fname,tmout,f,wchan
只显示Nginx的进程ID
# ps -C nginx -o pid=
或者
#pgrepnginx
或者
#pgrep -u root nginx
显示PID为1386的进程名称
#ps -p 1386 -o comm=sshd
找出消耗内存最多的前10名进程
#ps-auxf|sort-nr-k4|head-10
找出使用CPU最多的前10名进程
#ps-auxf|sort-nr-k3|head-10
6:free 内存使用情况
free命令显示系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。
#free -m
total used free shared buffers cached
Mem: 482 324 158 0 43 131
-/+ buffers/cache: 148 333
Swap: 1983 0 1983
7:iostat-CPU平均负载,硬盘活动
iostat命令可报告中央处理器(CPU)的统计信息,各种设备、分区及网络文件系统输入/输出的统计信息。
#iostat
Linux 2.6.32-358.2.1.el6.x86_64 (centos) 03月19日 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.05 0.00 0.59 0.33 0.00 99.03
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
scd0 0.01 0.07 0.00 376 0
sda 2.69 54.20 25.24 298656 139106
dm-0 5.97 52.48 25.24 289194 139088
dm-1 0.06 0.47 0.00 2576 0
8:sar-搜集和报告系统活动
sar命令用来搜集、报告和储存系统活动信息。查看网路计数器,输入:
#sar-nDEV|more
显示最近24小时网络计数器
#sar-nDEV-f/var/log/sa/sa24|more
你亦可以用sar显示实时情况
#sar45
9:mpstat-多处理器使用率
mpstat命令可以显示所有可用处理器的使用情况,处理器编号从0开始。mpstat-PALL显示每个处理器的平均使用率。
#mpstat-PALL
10:pmap-进程的内存使用
pmap命令可以显示进程的内存映射,使用这个命令可以找出造成内存瓶颈的原因。
#pmap-dPID
显示PID为1386进程的内存信息。
#pmap -d 1386
1386: /usr/sbin/sshd
Address Kbytes Mode Offset Device Mapping
mapped: 0K writeable/private: 0K shared: 0K
最后一行非常重要:
*mapped:OK内存映射所占空间正常
*writeable/private: OK私有地址空间正常
*shared:OK共享地址空间正常
11和12:netstat和ss-网络相关信息
netstat可以显示网络链接、路由表信息、接口统计信息、伪装链接和多播成员(multicastmemberships),ss命令用来显示网络套接字信息,它允许显示类似netstat一样的信息。
13:iptraf-网络实时信息
iptraf是一个可交互式的IP网络监控工具(如果默认没有安装,可以在线安装)。它可以生成多种网络统计信息包括:TCP信息、UDP数量、ICMP和OSPF信息、以太网负载信息、节点状态、IP校验错误等。有下面几种信息格式:
不同网络TCP链接传输量
不同网络接口IP传输量
不同协议网络传输量
不同TCP/UDP端口和不同包大小网络传输量
不同第二层地址网络传输量
图02:功能选择界面
图03:不同网络IP传输量
14:tcpdump:详细的网络流量分析
tcpdump是一个简单网络流量转储工具,然而要使用好需要对TCP/IP协议非常熟悉。例如要显示关于DNS的网络流量,输入:
#tcpdump-ieth1'udpport53'
显示所有进出80端口IPv4HTTP包,也就是只打印包含数据的包。例如:SYN、FIN包和ACK-only包输入:
#tcpdump'tcpport80and(((ip[2:2]-((ip[0]&0xf)<<2))-((tcp[12]&0xf0)>>2))!=0)'
显示所有到的FTP会话,输入:
#tcpdump -i eth1 ' (port 21 or 20)'
显示所有到192.168.8.100的HTTP会话
#tcpdump-nieth1'dst192.168.8.100 andtcpandporthttp'
用wireshark浏览转储文件中的详细信息,输入:
#tcpdump-n-ieth1-s0-woutput.txtsrcordstport80
15:strace-系统调用
追踪系统调用和型号,这对于调试Web服务器和其他服务器非常有用。了解怎样追踪进程和他功能。
16:/proc文件系统-各种内核信息
/proc目录下文件提供了很多不同硬件设备和内核的详细信息。更多详情参见Linuxkernel/proc。一般/proc例如:
#cat/proc/cpuinfo
#cat/proc/meminfo
#cat/proc/zoneinfo
#cat/proc/mounts
17:Nagios-服务器及网络监控
Nagios是一款非常流行的系统及网络监控软件。你可以轻松监控所有的主机、网络设备及服务。它能在发生故障和重新恢复后发送警讯。FAN是"FullyAutomatedNagios"的缩写。FAN的目标就是由Nagios社群提供Nagios的安装。为了使安装Nagios服务器更加容易,FAN提供一个标准ISO格式的光盘镜像。此发行版中还会包含一组增强用户使用体验的工具。Nagios的更多使用介绍,请参考我的系列文章/server/management
18:Cacti-基于Web的监控工具
Cacti是一套完成的网络图形化解决方案,基于RRDTool的资料存储和图形化功能。Cacti提供一个快速的轮询器、进阶的图形化模板、多种数据采集方法和用户管理功能。这些功能都拥有非常友好易用的界面,确保可以部署在一个包含数百台设备的复杂网络中。它提供关于网络、CPU、内存、已登录用户、Apache、DNS等信息。
19:KDESystemGuard
KSysguard是在KDE桌面下一个网络化的系统监控工具。这个工具可以通过SSH会话运行。它提供很多功能,例如可以监控本机和远程主机的客户端/服务器架构,前端图形界面使用所谓传感器得到信息并展现出来。传感器返回的可以是一个简单的数值或是一组表格的信息。针对不同的信息类型,提供一个或多个显示。这些显示被组织多个工作表中,可以工作表可以独体储存和加载。所以,KSysguard不只是一个简单的任务管理器,还是一个可以控制多台服务器的强大工具。
20:GnomeSystemMonitor
SystemMonitor可以显示系统基本信息、监控系统进程、系统资源及文件系统使用率。你也可以使用SystemMonitor监控和修改系统行为。尽管没有KDESystemGuard功能强大,但其提供的基本信息对于入门用户还是非常有用的。
*显示关于计算机硬件和软件的各种基本信息。
*Linux内核版本
*GNOME版本
*硬件
*安装的内存
*处理器及其速度
*系统状态
*当前可用的硬盘空间
*进程
*内存及交换空间
*网络使用率
*文件系统
*所有挂载的文件系统及其基本信息