Centos-7使用的性能监控工具
Linux命令行的性能监控工具:htop、top、netstat、dstat、ss、vmstat、glances
1、dstat命令
dstat命令整合了vmstat,iostat和ifstat三种命令。同时增加了新的特性和功能可以让你能及时看到各种的资源使用情况,从而能够使你对比和整合不同的资源使用情况。通过不同颜色和区块
布局的界面帮助你能够更加清晰容易的获取信息。它也支持将信息数据导出到cvs格式文件中,从而用其他应用程序打开,或者导入到数据库中。你可以用该命令来监控cpu,内存和网络状态随着集一次
安装方法:
1、[root@Test ~]# yum install -y dstat
2、[root@Test ~]# wget http://dag.wieers.com/rpm/packages/dstat/dstat-0.6.7-1.rh7.rf.noarch.rpm rpm -ivh dstat-0.6.7-1.rh7.rf.noarch.rpm
简介:
dstat - versatile tool for generating system resource statistics
格式:
dstat [-afv] [options..] [delay [count]]
选项:
-c: 显示cpu相关信息
-C #,#,...,total
-d: 显示disk相关信息
-D total,sda,sdb,...
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数据
--top-cpu:显示最占用CPU的进程
--top-io: 显示最占用io的进程
--top-mem: 显示最占用内存的进程
--top-latency: 显示延迟最大的进程
- -raw:显示裸套接字
- -socket:套接字
- -ipc:进程间通信信息
实例1:显示tcp、udp协议和raw和socket套接字以及进程间通信的信息
[root@Test ~]# dstat --tcp --udp --raw --socket --ipc
----tcp-sockets---- --udp-- raw ------sockets------ --sysv-ipc-
lis act syn tim clo|lis act|raw|tot tcp udp raw frg|msg sem shm
4 2 0 0 0| 5 0| 0|565 4 3 0 0| 0 0 0
4 2 0 0 0| 5 0| 0|565 4 3 0 0| 0 0 0
4 2 0 0 0| 5 0| 0|565 4 3 0 0| 0 0 0
4 2 0 0 0| 5 0| 0|565 4 3 0 0| 0 0 0
4 2 0 0 0| 5 0| 0|565 4 3 0 0| 0 0 0
4 2 0 0 0| 5 0| 0|565 4 3 0 0| 0 0 0
4 2 0 0 0| 5 0| 0|565 4 3 0 0| 0 0 0
实例2:显示cpu、进程、内存、io线程以及swap等相关信息
[root@Test ~]# dstat -c -d -g -m -n -p -r -s
----total-cpu-usage---- -dsk/total- ---paging-- ------memory-usage----- -net/total- ---procs--- --io/total- ----swap---
usr sys idl wai hiq siq| read writ| in out | used buff cach free| recv send|run blk new| read writ| used free
1 1 98 0 0 0| 124k 129k| 0 0 | 220M 2108k 292M 462M| 0 0 |0.0 0 1.0|3.61 3.74 | 0 2048M
0 1 99 0 0 0| 0 0 | 0 0 | 220M 2108k 292M 462M| 120B 1306B| 0 0 0| 0 0 | 0 2048M
2 0 98 0 0 0| 0 0 | 0 0 | 220M 2108k 292M 462M| 263B 886B| 0 0 0| 0 0 | 0 2048M
1 1 98 0 0 0| 0 0 | 0 0 | 220M 2108k 292M 462M| 25k 2443B| 0 0 0| 0 0 | 0 2048M
实例3:显示系统中cpu和io线程以及内存使用的情况
[root@Test ~]# dstat --top-cpu --top-io --top-mem
-most-expensive- ----most-expensive---- --most-expensive-
cpu process | i/o process | memory process
a.py 0.2|bash 275k 97k|firewalld 28.0M
|sshd: root@ 388B 436B|firewalld 28.0M
|sshd: root@ 155B 196B|firewalld 28.0M
|sshd: root@ 155B 196B|firewalld 28.0M
kworker/0:2 1.0|sshd: root@ 155B 196B|firewalld 28.0M
a.py 4.0|a.py 270k 1197B|firewalld 28.0M
2、top命令
top命令经常用来监控Linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。本文通过一个运行中的WEB服务器的top监控截图,讲述top视图中的各种数据的含义,还包括视图中各进程(任务)的字段的排序
简介:
top - display Linux processes
格式:
top -hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]
交互模式的一些快捷操作:
全局命令: <回车/空格> ?, =, A, B, d, G, h, I, k, q, r, s, W, Z
统计区的命令: l, m, t, 1
任务区的命令:
外观: b, x, y, z 内容: c, f, H, o, S, u 大小: #, i, n 排序: <, >, F, O, R
色彩方案: <Ret>, a, B, b, H, M, q, S, T, w, z, 0 - 7
窗口命令: -, _, =, +, A, a, G, g, w
实例1:
[root@Test ~]# top
top - 10:16:34 up 45 min, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 999696 total, 478100 free, 144552 used, 377044 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 661440 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1285 root 20 0 157688 2152 1512 R 0.3 0.2 0:00.02 top
1 root 20 0 128164 6812 4044 S 0.0 0.7 0:00.70 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.57 ksoftirqd/0
top命令参数具体含义:
top – 13:26:57 up 1:38, 2 users, load average: 0.00, 0.01, 0.04
13:26:57:当前时间
1:38:运行时长
2 users:登录当前系统上的用户数
load average: 0.00, 0.01, 0.04:平均负载(等待运行的队列长度的负载)
Tasks: 367 total, 1 running, 366 sleeping, 0 stopped, 0 zombie
Tasks:任务
367 total:一共运行367进程
1 running:1个处于运行
366 sleeping:366个进程睡眠
0 stopped:0个停止
0 zombie:0个僵死
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu:cpu占用百分比
0.0 us:用户空间占用的百分比
0.1 sy:内核空间占用时间的百分比
0.0 ni:对nice调整占用的内存百分比
99.9 id:空闲百分比
0.0 wa:等待IO完成所消耗的百分比
0.0 hi:处理硬件中断所占用的百分比
0.0 si:处理软件中断所占用的百分比
0.0 st:被偷走的百分比(虚拟化程序)
KiB Mem : 1868688 total, 1328280 free, 127580 used, 412828 buff/cache
KiB Mem:内存空间占用,以KB为单位:
1868688 total:总内存空间
1328280 free:剩余内存空间
127580 used:已用内存空间
412828 buff/cache:用于缓存和缓冲的内存空间
KiB Swap: 2097148 total, 2097148 free, 0 used. 1564488 avail Mem
KiB Swap:swap空间占用,以KB为单位
2097148 total:总空间
2097148 free:剩余空间
0 used:已用空间
698100 avail Mem :有效swap大小
栏位信息简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
实例2:
按m键:将内存使用率用|||显示 或者白空格显示
[root@Test ~]# top
top - 10:19:32 up 48 min, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 97 total, 2 running, 95 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.8 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 33.8/999696 [||||||||||||||||||||||||||||||||| ]
KiB Swap: 0.0/2097148 [ ]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128164 6812 4044 S 0.0 0.7 0:00.70 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.59 ksoftirqd/0
实例3:
按t键:禁用显示硬盘及cpu相关消息
[root@Test ~]# top
top - 10:22:07 up 50 min, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0/0.3 0[ ]
KiB Mem : 999696 total, 478260 free, 144392 used, 377044 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 661600 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1288 root 20 0 157688 2152 1512 R 0.3 0.2 0:00.16 top
1 root 20 0 128164 6812 4044 S 0.0 0.7 0:00.70 systemd
实例4:
按k键:终止指定的进程
[root@Test ~]# top
top - 10:24:59 up 53 min, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 98 total, 1 running, 97 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 999696 total, 477912 free, 144632 used, 377152 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 661376 avail Mem
Maximum tasks = 0, change to (0 is unlimited) kill -0 9242 #此处输入kill 进程
3、netstat命令
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等
安装方法:
1、[root@Test ~]# yum -y install net-tools
Linux发行版本的一部分,netstat的许多命令在 netstat和它的不同输出中有详细的描述。最为常用的如下:
简介:
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
格式:
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
选项:
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口;
-e:扩展格式
-s:按各个协议进行统计
-r:显示路由信息,路由表
-c:每隔一个固定时间,执行该netstat命令
-p: 显示建立相关链接的程序名 显示相关进程及PID 常用组合
-tan, -uan, -tnl, -unl, -tunlp
实例1:以数字显示tcp协议的ip和端口
[root@Test ~]# netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 10.1.11.169:22 10.1.11.63:55157 ESTABLISHED ###显示用户连接22端口
tcp 0 52 10.1.11.169:22 10.1.11.63:55969 ESTABLISHED ###显示用户连接22端口
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
实例2:显示tcp、udp协议的ip和端口以及相关进程及PID
[root@Test ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 999/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1096/master
tcp6 0 0 :::22 :::* LISTEN 999/sshd
4、vmstat
vmstat是虚拟内存(virtual memory statistics)的缩写,作为一个内存监控工具,它收集和显示关于内存,进程,终端和分页和I/O阻塞的概括信息。作为一个开源程序,它可以在大部分Linux发行版本
中找到,包括Solaris和FreeBSD。它用来诊断大部分的内存性能问题和其他相关问题。
简介:
vmstat - Report virtual memory statistics
格式:
vmstat [options] [delay [count]]
实例1:
[root@Test ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 462268 2108 390028 0 0 37 39 55 61 0 0 99 0 0
procs r: 等待运行的进程的个数 b:处于不可中断睡眠态的进程个数;(被阻塞的队列的长度);
memory swpd: 交换内存的使用总量 free:空闲物理内存总量
buffer: 用于buffer的内存总量 cache:用于cache的内存总量
swap si: 数据进入swap中的数据速率(kb/s) so:数据离开swap中的数据速率(kb/s)
io bi: 从块设备读入数据到系统的速率;(kb/s) bo: 保存数据至块设备的速率
system in: interrupts, 中断速率 cs: context switch, 进程切换速率
cpu us: 用户空间 sy:内核空间 id:空闲
wa: 等待IO时间 st:虚拟机偷走的时间
5、Htop
htop 是 top 命令的增强版。
左边部分:从上至下,分别为cpu、内存、交换分区的使用情况。
右边部分:Tasks为进程总数,当前运行的进程数;Load average为系统1分钟,5分钟,10分钟的平均负载情况;Uptime为系统运行的时间
安装方式:
1、[root@Test ~]# yum -y install epel-release
[root@Test ~]# yum -y install htop
简介:
htop - interactive process viewer
格式:
htop [-dChusv]
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程;
-s COLOMN: 以指定字段进行排序; 子命令:
s: 跟踪选定进程的系统调用;
l: 显示选定进程打开的文件列表;
a:将选定的进程绑定至某指定CPU核心;
t: 显示进程树
实例1:
htop
PID:进行的标识号
USER:运行此进程的用户
PRI:进程的优先级
NI:进程的优先级别值,默认的为0,可以进行调整
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR:进程占用的共享内存值
S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态
%CPU:该进程占用的CPU使用率
%MEM:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间
COMMAND:进程启动的启动命令名称
6、ss命令
ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。
ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。
简介:
ss - another utility to investigate sockets
格式:
ss [options] [ FILTER ]
选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-s: 显示Sockets摘要
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-r: 解析服务名称
-o:计时器信息 常用组合:
-tan, -tanl, -tanlp, -uan
实例1:
查看建立的 TCP 连接
-a --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
[root@Test ~]# ss -tna
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
ESTAB 0 0 10.1.11.169:22 10.1.11.63:55157
ESTAB 0 0 10.1.11.169:22 10.1.11.63:55969
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
实例2:
显示监听套接字
[root@Test ~]# ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:ssh *:*
LISTEN 0 100 127.0.0.1:smtp *:*
LISTEN 0 128 :::ssh :::*
LISTEN 0 100 ::1:smtp :::*
实例3:
列出已建立的连接
默认情况下,如果我们运行ss
命令而没有指定其他选项,它将显示所有已建立连接的打开的非侦听套接字的列表,例如TCP
,UDP
或UNIX
套接字。
[root@Test ~]# ss | head -n 5
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 19837 * 19836
u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 16831 * 16830
u_str ESTAB 0 0 * 19836 * 19837
u_str ESTAB 0 0 * 19839 * 19840
实例4:
IPv4套接字
我们可以通过-4
选项只显示与IPv4
套接字对应的信息。在下面的例子中,我们还使用-l
选项列出了在IPv4
地址上监听的所有内容
[root@Test ~]# ss -l4
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:53157 *:*
udp UNCONN 0 0 *:bootpc *:*
udp UNCONN 0 0 127.0.0.1:323 *:*
tcp LISTEN 0 128 *:http *:*
tcp LISTEN 0 128 *:ssh *:*
tcp LISTEN 0 100 127.0.0.1:smtp *:*
实例5:
Unix套接字
-x选项只能用来显示unix域套接字
[root@Test ~]# ss -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 19837 * 19836
u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 16831 * 16830
u_str ESTAB 0 0 * 19836 * 19837
u_str ESTAB 0 0 * 19839 * 19840
u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 19395 * 19394
7、Glances命令
Glances – 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具。 通过 Glances,我们可以监视 CPU,平均负载,内存,网络流量,磁盘 I/O,
其他处理器 和 文件系统 空间的利用情况。(需配epel源安装)
简介:
glances - A cross-platform curses-based monitoring tool
格式:
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]
选项:
-b: 以Byte为单位显示网卡数据速率;
-d: 关闭磁盘I/O模块;
-f /path/to/somefile: 设定输入文件位置;
-o {HTML|CSV}:输出格式;
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 延迟时间间隔
-1:每个CPU的相关数据单独显示; 内建命令:
a Sort processes automatically l Show/hide logs
c Sort processes by CPU% b Bytes or bits for network I/O
m Sort processes by MEM% w Delete warning logs
p Sort processes by name x Delete warning and critical logs
i Sort processes by I/O rate 1 Global CPU or per-CPU stats
d Show/hide disk I/O stats h Show/hide this help screen
f Show/hide file system stats t View network I/O as combination
n Show/hide network stats u View cumulative network I/O
s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
实例1:
直接输入"glances"命令,可以监视 CPU,平均负载,内存,网络流量,磁盘 I/O,其他处理器 和 文件系统 空间的利用情况
实例2:
C/S模式下运行glances命令
服务模式:“glances -s -B IPADDR” (IPADDR: 指明监听于本机哪个地址)(Tips:需关掉防火墙或者开启相应的端口)
[root@Test ~]# glances -s -B 10.1.11.169
Glances server is running on 10.1.11.169:61209
客户模式:“glances -c IPADDR” (IPADDR:要连入的服务器端地址)