【转】管理员必备的Linux系统监控工具
原文连接:
#1: top - 进程活动
top提供一个当前运行系统实时动态的视图,也就是正在运行进程。在默认情况下,显示系统中CPU使用率最高的任务,并每5秒钟刷新一次。
#2: vmstat -系统活动、硬件及系统信息
使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。
#3: w - 显示谁已登录,他们正在做什么?
w命令显示系统当前用户及其运行进程的信息。
#4:uptime - 告诉系统已经运行了多久?
uptime命令过去只显示系统运行多久。现在,可以显示系统运行多久、当前有多少的用户登录、在过去的1,5,15分钟里平均负载时多少。
#5:ps - 显示进程
ps命令显示当前运行进程的快照。使用-A或-e 显示所有进程。ps 与 top 非常相似,但ps 提供更多的信息。
#6: free - 内存使用情况
free命令显示系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。
#7: iostat - CPU平均负载,硬盘活动
iostat命令可报告中央处理器(CPU)的统计信息,各种设备、分区及网络文件系统输入/输出的统计信息。
#8: sar - 搜集和报告系统活动
sar命令用来搜集、报告和储存系统活动信息。
#9:mpstat - 多处理器使用率
mpstat命令可以显示所有可用处理器的使用情况,处理器编号从 0开始。mpstat -P ALL 显示每个处理器的平均使用率。
#10: pmap - 进程的内存使用
pmap命令可以显示进程的内存映射,使用这个命令可以找出造成内存瓶颈的原因。
#11:netstat - 网络相关信息
netstat 可以显示网络链接、路由表信息、接口统计信息、伪装链接和多播成员(multicast memberships)
#12:ss - 网络相关信息
ss命令用来显示网络套接字信息,它允许显示类似netstat一样的信息。
#13: iptraf - 网络实时信息
iptraf是一个可交互式的IP网络监控工具。它可以生成多种网络统计信息包括:TCP 信息、UDP数量、ICMP和OSPF信息、以太网负载信息、节点状态、IP校验错误等。
#14:tcpdump:详细的网络流量分析
tcpdump 是一个简单网络流量转储工具,然而要使用好需要对TCP/IP协议非常熟悉。
#15:strace - 系统调用
追踪系统调用和型号,这对于调试 Web服务器和其他服务器非常有用。了解怎样追踪进程和他功能。
#16:/proc文件系统 - 各种内核信息
/proc目录下文件提供了很多不同硬件设备和内核的详细信息。
#17:Nagios - 服务器及网络监控
Nagios 是一款非常流行的系统及网络监控软件。你可以轻松监控所有的主机、网络设备及服务。它能在发生故障和重新恢复后发送警讯。
#18:Cacti - 基于Web的监控工具
Cacti是一套完成的网络图形化解决方案,基于RRDTool的资料存储和图形化功能。Cacti提供一个快速的轮询器、进阶的图形化模板、多种数据采集方法和用户管理功能。这些功能都拥有非常友好易用的界面,确保可以部署在一个包含数百台设备的复杂网络中。它提供关于网络CPU、内存、已登录用户、Apache、DNS等信息。
#19:KDE System Guard
KSysguard 是在 KDE 桌面下一个网络化的系统监控工具。这个工具可以通过SSH会话运行。它提供很多功能,例如可以监控本机和远程主机的客户端/服务器架构,前端图形界面使用所谓传感器得到信息并展现出来。传感器返回的可以是一个简单的数值或是一组表格的信息。针对不同的信息类型,提供一个或多个显示。这些显示被组织多个工作表中,可以工作表可以独体储存和加载。所以,KSysguard不只是一个简单的任务管理器,还是一个可以控制多台服务器的强大工具。
#20:Gnome System Monitor
System Monitor可以显示系统基本信息、监控系统进程、系统资源及文件系统使用率。你也可以使用System Monitor监控和修改系统行为。尽管没有KDE System Guard功能强大,但其提供的基本信息对于入门用户还是非常有用的。
Linux常用监控命令简介
- top
指令介绍
-b : 批次模式运行。
-c : 显示执行任务的命令行。
-d : 设定延迟时间
-h : 帮助
-H : 显示线程。将显示所有进程产生的线程。
-i : 显示空闲的进程。
-n : 执行次数。一般与-b搭配使用
-u : 监控指定用户相关进程
-U : 监控指定用户相关进程
-p : 监控指定的进程。
-s : 安全模式操作
-S : 累计时间模式
-v : 显示top版本,然后退出。
-M : 自动显示内存单位(k/M/G)
top作为日常管理工作中最常用也是最重要的Linux 系统监控工具之一,可以动态观察系统进程状况。top命令显示的项目很多,默认值是每5秒更新一次,按q键可以退出。显示的各项目为:
输出数值解读为:
15:06:57 up 129 days, 19:03, 5 users, load average: 1.21, 1.20, 1.25
uptime 该项显示的是系统启动时间、已经运行的时间和三个平均负载值(最近1秒,5秒,15秒的负载值)。
222 processes: 219 sleeping, 2 running, 1 zombie, 0 stopped
processes 自最近一次刷新以来的运行进程总数。这些进程被分为正在运行的,休眠的,停止的。
CPU states: cpu user nice system irq softirq iowait idle
total 0.9% 0.0% 27.4% 0.0% 0.0% 0.2% 71.2%
cpu00 1.9% 0.0% 19.4% 0.0% 0.0% 0.0% 78.6%
cpu01 0.0% 0.0% 33.0% 0.0% 0.0% 0.0% 66.9%
cpu02 1.9% 0.0% 22.3% 0.0% 0.0% 0.9% 74.7%
cpu03 0.0% 0.0% 35.2% 0.0% 0.0% 0.0% 64.7%
CPU states 显示用户模式,系统模式,优先级进程(只有优先级为负的列入考虑)和闲置等各种情况所占用CPU时间的百分比。优先级进程所消耗的时间也被列入到用户和系统的时间中,所以总的百分比将大于100%。
Mem: 16214336k av, 15682832k used, 531504k free, 0k shrd, 215016k buff
10896844k actv, 3379680k in_d, 446432k in_c
Mem 内存使用情况统计,其中包括总的可用内存,空闲内存,已用内存,共享内存和缓存所占内存的情况。
Swap: 10482404k av, 0k used, 10482404k free 14856500k cached
Swap 交换空间统计,其中包括总的交换空间,可用交换空间,已用交换空间。
PID USER PRI NI SIZE rss SHARE STAT %CPU %MEM TIME CPU COMMAND
27869 root 25 0 460M 460M 455M R 25.0 2.9 12559m 1 vmware-vmx
31819 root 16 0 6016 6016 5048 S 1.6 0.0 17573m 2 magicdev
27837 root 15 -10 460M 460M 455M S < 0.7 2.9 1328m 0 vmware-vmx
27868 root 15 -10 460M 460M 455M S < 0.3 2.9 644:35 3 vmware-vmx
PID 每个进程的ID。PPID 每个进程的父进程ID。UID 每个进程所有者的UID 。
USER 每个进程所有者的用户名。
PRI 每个进程的优先级别。
NI 该进程的优先级值。
SIZE 该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。
TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。
DSIZE 数据和堆栈的大小。
TRS 文本驻留大小。
D 被标记为“不干净”的页项目。
LIB 使用的库页的大小。对于ELF进程没有作用。
RES 该进程占用的物理内存的总数量,单位是KB。
SHARE 该进程使用共享内存的数量。
STAT 该进程的状态。S=休眠;D=不可中断的休眠;R=运行;Z=僵死;T=停止或跟踪。
TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME。
%CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。
%MEM 该进程占用的物理内存占总内存的百分比。
COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行。
:Linux常用监控命令简介 – vmstat,ps等
vmstat [-a] [-n] [delay [ count]]
vmstat [-f] [-s] [-m]
vmstat [-S unit]
vmstat [-d]
vmstat [-p disk partition]
vmstat [-V]
指令介绍
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数。
delay:刷新时间间隔。如果不指定,只显示
一条结果。
count:刷新次数。如果不指定刷新次数,但
指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k , K, m, M,
分别代表 1000, 1024, 1000000, 1048576
字节。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
方便用法推荐
每2秒输出一条结果
vmstat 2
显示活跃和非活跃内存
vmstat -a 2
输出数值解读
(Procs)r: 运行队列中进程数量
(Procs)b: 等待IO的进程数量
(Memory)swpd: 使用虚拟内存大小
(Memory)free: 可用内存大小
(Memory)buff: 用作缓冲的内存大小
(Memory)cache: 用作缓存的内存大小
(Swap)si: 每秒从交换区写到内存的大小
(Swap)so: 每秒写入交换区的内存大小
(IO)bi: 每秒读取的块数
(IO)bo: 每秒写入的块数
(System)in: 每秒中断数,包括时钟中断。
(System)cs: 每秒上下文切换数。
(CPU)us: 用户进程执行时间(user time)
(CPU)sy: 系统进程执行时间(system time)
(CPU)id: 空闲时间(包括IO等待时间)
(CPU)wa: 等待IO时间
ps 命令
ps [options]
指令介绍
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的
r 只显示正在运行的进程。
x 显示没有控制终端的进程。
方便用法推荐
查看使用Vivek用户名运行的进程
# ps -U vivek -u vivek u
只显示Lighttpd的进程ID
# ps -C lighttpd -o pid=
找出消耗内存最多的前10名进程
# ps -auxf | sort -nr -k 4 | head -10
找出使用CPU最多的前10名进程
# ps -auxf | sort -nr -k 3 | head -10
free 命令
free [-b|-k|-m][-o][-s delay][-t][-V]
指令介绍
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
输出数值解读
total used free shared buffers cached
Mem: 3266180 3250004 16176 0 110652
2668236
-/+ buffers/cache: 471116 2795064
Swap: 2048276 80160 1968116
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
used:已使用多大。
free:可用有多少。
uptime 命令
uptime
uptime [-V]
输出数值解读
18:02:41 up 41 days, 23:42, 1 user,
load average: 0.00, 0.00, 0.00
10:19:04:系统当前时间
up 257 days, 18:56:主机已运行时间,时间越大,说明你的机器越稳定。
12 user:用户连接数,是总连接数而不是用户数
load average:系统平均负载,统计最近1, 5,15分钟的系统平均负载,如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。