一、Monitoring tools 监控工具列表
- top命令显示实际进程的运行情况。
- vmstat能提供进程、内存、分页、块I/O、traps和CPU活动相关信息。
- uptime命令可以用来查看服务器运行时长、用户数、评价负载值。
- ps命令可以显示当前运行的进程列表。
- free 显示内存使用情况。
- iostat主要用于监控系统设备的IO负载情况。
- mpstat命令可以显示所有可用处理器的使用情况,也会显示所有CPU活动的平均值。
- numastat查看一个进程在每个Numa节点上使用内存的情况。
- pmap命令可以显示一个或多个进程所使用的内存数量。
- netstat 网络相关信息如套接字使用情况、路由、接口、协议、网络数据统计
- iptraf是一个基于ncurses开发的IP局域网监控工具,它可以实时地监视网卡流量,可以生成各种网络统计数据,包括TCP信息、UDP统计、ICMP和OSPF信息、以太网负载信息、节点统计、IP校验和错误和其它一些信息。
二、Monitoring tools的用法
1. top
top命令显示实际进程的运行情况。在默认情况下,它显示服务器上占用CPU最多的任务并每5秒刷新列表一次。你也可以按 PID(数值)、age(最新的排第一)、time(累计的时间)、常驻内存或时间(自启动开始进程所占用的CPU时间)排序。
你可以使用renice命令来修改进程的优先级。如果进程挂起或占据过多的CPU,你可以使用kill命令杀死此进程。 输出的栏位有:
PID:进程ID
USER:进程所有者的用户名
PRI:进程优先级NI:Nice值(Whether the process tries to be nice by adjusting the priority by the number given. See below for details.)
SIZE:进程使用的内存大小(code+data+s tack),单位为KB
RSS:所使用的物理内存大小,单位为KB
SHARE:与其它进程共享的内存大小,单位为KB
STAT:进程状态:S=sleeping, R=running, T=stopped or traced,D=interruptible sleep, Z=zombie。
%CPU:使用的CPU百分比
%MEM:物理内存百分比
TIME:进程使用的CPU时间(自从此启动)
COMMAND:启动任务所使用的命令(包括参数)
top支持多个有用的热键,如下:
t:隐藏或显示摘要信息
m:隐藏或显示内存信息
A:分类显示各种系统资源,可用于快速找出系统中影响性能的任务。
o:在交互模式下选择排序的栏位
r:renice命令
k:kill命令
top输出示例:
2.vmstat
vmstat能提供进程、内存、分页、块I/O、traps和CPU活动相关信息。vmstat命令可以显示平均值或实际取样值。使用取样 频率和取样时间等参数启用vmstat取样模式。
注意:在取样模式中需要考虑实际数据搜集中存在误差的可能,设定较低的取样频率能减少这样的可能。
vmstat输出示例:
注释:vmstat输出结果中第一行展示的是自最后一次启动以来的平均值,所以此行可以忽略。
输出栏位如下:
Process(procs)
r :等待运行时间的进程数。
b :处于不可中断睡眠状态的进程数
Memory
swpd :虚拟内存使用量(KB)。
free :空闲内存量(KB)。
buff :用作buffer的内存量(KB)。
cache :用作cache的 内存量(KB)。
Swap
si :从硬盘交换到内存的数量(KBps)。
so :交换到硬盘的内存数量(KBps)。
IO
bi:发送到块设备的块的数量(blocks/s)。
bo:从块设备获取的块的数量(blocks/s)。
System
in :每秒钟的中断数量,包括时钟中断。
cs :每秒钟上下文交换的数量。
CPU(整个CPU时间的百分比)
us :花费在非内核代码的CPU时间(用户时间,包括Nice时间)。
sy :花费在内核代码的CPU时间(系统时间)。
id :空闲时间。
vmstat命令提供了许多命令行参数,使用man手册查看参数的详细文档。常用的参数有:
-m:显示内核的内存使用情况(slabs)
-a:显示活动和非活动内存分页相关信息
-n:只显示一次栏位名称行,当在取样模式通下将输出信息存储到文件时非常有用。(例如,root#vmstat –n 2 10 以每2秒 钟的频率执行10次取样)
3.uptime
uptime命令可以用来查看服务器已经运行了多久和曾经登录过的用户有多少,以及服务器的平均负载值是多少。它可以显示过去1分钟、5分钟、15分钟的系统平均负载值。
平均负载的最佳值是1,这意味着每个进程都可以立即执行不会错过CPU周期。负载的正常值在不同的系统中有着很大的差 别。在单处理器的工作站中,1或2都是可以接受的。然而在多处理器的服务器上你可能看到8到10。你能使用uptime来确定是服务器还是网络出了问题。
4.ps pstree
ps和pstree是用于系统分析的基本命令。ps有3中不同风格的命令选项,UNIX风格、BSD风格和GNU风格。这里我们只介绍UNIX风格选项。
ps 命令可以显示当前运行的进程列表。top命令也可以显示进程信息,但ps 可以提供更加详细的内容。使用相应选项可以影 响进程显示的数量。ps -A命令可以列出所有进程及其相应的进程ID(PID),当我们使用如pmap或renice等工具时会用到此 PID。
当系统运行java应用时,ps -A产生的输出结果很容易填满整个显示区域,这导致很难得到所有运行中进程的完整视图。在这 种情况下,pstree命令就派上用场了,它使用树状显示所有运行中的进程并合并所有的子进程(例如java线程),pstree命令有助于确认原始进程。
执行
#ps -A
-e :所有进程。等同于-A
-l :显示长格式
-F :附加全格式
-H :显示进程的层次结构
-L :显示线程,可能出现LWP和NLWP 栏位
-m :在进程后显示线程
执行
#ps -elFL
F :进程标志
4 used super-user privileges 表示使用root权限的进程
1 forked but didn't exec表示此子进程仅通过复制(fork)而未实际执行(exec)
5 = 1 + 4
S :进程状态
S=sleeping,R=running,T=stopped/traced,D=interruptable sleep, Z=zombie。
UID:进程所有者 (可能是启动者)用户名
PID:进程ID
PPID:父进程ID
LWP:LWP(轻量级进程(light weight process),也称作线程)ID
C:处理器使用率百分比
NLWP:进程中lwp(线程)的数量。(别名thcount)
PRI:进程的优先级。
NI:Nice值(whether the process tries to be nice by adjusting the priority by the number given; see below for details)
ADDR:进程地址空间(不显示)
SZ:进程所有内存(code+data+stack)总数,单位为KB。
WCHAN:内核功能名称,如果 - 进程正在运行中
RSS:常驻集大小,任务所使用的非交换物理内存(KB)
PSR:当前执行进程的处理器
STIME:开始时间
TTY:终端名称
TIME:进程所用的CPU时间总数(自从启动)
CMD:启动任务的命令行(包括参数)
5.free
free命令常用的参数包括:
-b, -k, -m, -g :分别使用byte、KB、MB、GB为单位显示。
-l:区分低内存和高内存
-c:显示输出结果的次数
6.iostat
iostat名利可以显示自从系统启动开始的CPU平均时间(与uptime相似)。它也可以产生关于服务器硬盘子系统活动情况的报告,报告包括两部分内容:CPU使用情况和硬盘使用情况。
iostat可以用来获得I/O瓶颈的详细信息和系统性能调优
CPU使用情况分为六个部分:
%user:显示用户级别(应用)所占用CPU的百分比。
%nice:显示拥有Nice优先级用户级别所占用CPU的百分比。
%sys:显示系统级别(内核)所占用CPU的百分比。
%idle:显示空闲CPU的百分比。
%iowait:显示处于wait状态的百分比。
%steal:显示被虚拟化偷走的的百分比。
设备使用情况分为下面几个部分:
Device:块设备名称
tps:设备每秒钟传输的数量(每秒钟I/O请求数)。多个单独的I/O请求可以合并到一个传输请求中, 因为每个传输请求可以有不同的大小。
Blk_read/s,Blk_wrtn/s:每秒钟块设备读写块的数量。
Blk_read,Blk_wrtn:显示自系统启动后读写块的总数。
7.mpstat
在多处理器服务器上使用mpstat命令可以显示所有可用处理器的使用情况,也会显示所有CPU活动的平均值。
8.numastat
使用非一致性内存架构(NUMA)的系统在企业数据中心已经成为主流。然而NUMA 却为性能调优过程带来新的挑战。numastat能提供关于使用本地内存与远端内存的比例和各节点内存配置的相关信息。在 numa_miss栏中显示分配失败的本地内存,在numa_foreign栏中显示分配的远端内存(较慢的内存)。过多分配远端内存 会增加系统延迟并可能降低整体性能。绑定节点的进程使用本地RAM的内存映射可以大大提高系统性能。
9.pmap
pmap命令可以显示一个或多个进程所使用的内存数量。你可以使用这个工具来了解服务器上的某个进程分配了多少内存, 并以此来判断这是否是导致内存瓶颈的原因。
要得到更加详细的信息,使用pmap -d选项。
在输出结果的最后一行显示了一些重要的信息,如下:
mapped:映射到文件的内存数量
writable/private:进程所占用的私有地址空间数量
shared:与其它进程共享的地址空间数量
10.netstat
netstat是常用工具之一。如果你在网络环境中工作,应该对它非常熟悉。它可以显示许多网络相关信息如套接字使用情况、 路由、接口、协议、网络数据统计等。
下面是以下基本的选项:
-a:显示所有套接字信息
-r:显示路由信息
-i:显示网络接口信息
-s:显示网络协议信息
Proto:套接字使用的协议(tcp,udp,raw)。
Recv-Q:连接此套接字的用户程序为复制的字节数量。
Send-Q:远程主机未确认的字节数量。
Local Address:本地套接字的地址和端口。
Foreign Address:远程主机套接字的地址和端口号。
State:套接字状态。由于在原始模式(raw mode)和UDP没有状态,此列显示为空。
11.iptraf
如果没有iptraf命令,则需要安装:
# yum install iptraf -y
执行iptraf-ng 则能看到tui界面
#iptraf-ng
可以通过选择进入更下一级的子菜单,看到更详细的信息
IP traffic monitor:TCP连接相关的网络传输统计信息
General interface statistics:网络接口的网络传输统计信息
Detailed interface statistics:按协议分类显示网络传输统计信息
Statistical breakdowns:按TCP/UDP和封包大小分类显示网络传输统计信息LAN station monitor:按第二层地址分类显示网络传输统计信息
结论:
无论是个人电脑的日常管理,还是企业服务器的运维监控,MonitorTool 能很好的帮助你找到何时发生错误,以便快速修复它们
以上就是全部的内容。