一、htop
安装:yum install htop -y
top是linux下常用的监控程序,htop相当于其加强版,颜色显示不同参数,且支持鼠标操作,相对于top简单和人性化!
第一行与第二行,显示CPU当前的运行负载,我这里是双CPU就显示两行! 第三行,显示内存的使用情况! 第四行,显示交换分区使用情况!
第一行,显示了当前的进程总数,其中有一个进程在运行! 第二行,显示了当前的负载情况,分别代表了,1分钟,5分钟,15分钟负载!
PID:进程标志号,是非零正整数 USER:进程所有者的用户名 PRI:进程的优先级别 NI:进程的优先级别数值 VIRT:进程占用的虚拟内存值 RES:进程占用的物理内存值 SHR:进程使用的共享内存值 S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数 %CPU:该进程占用的CPU使用率 %MEM:该进程占用的物理内存和总内存的百分比 TIME+:该进程启动后占用的总的CPU时间 COMMAND:进程启动的启动命令名称
Linux系统的负荷“load averages”的含义
load average 三个参数的含义在w的手册里面找到,分别是1分钟、5分钟、15分钟内的平均负载。
如果使用的是 n 核CPU,那么为 n.00 时,说明负载满了,高于这个值就应该警惕。
不过对于服务器来说,最好留下一定余地,当参数高于n.00 - 0.3或n.00 - 0.5时,就应该警惕,赶快查看问题
二、dstat
安装:yum install dstat -y
dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。dstat克服了这些命令的局限并增加了一些另外的功能,增加了监控项,也变得更灵活了。dstat可以很方便监控系统运行状况并用于基准测试和排除故障。
dstat可以让你实时地看到所有系统资源,例如,你能够通过统计IDE控制器当前状态来比较磁盘利用率,或者直接通过网络带宽数值来比较磁盘的吞吐率(在相同的时间间隔内)。
dstat将以列表的形式为你提供选项信息并清晰地告诉你是在何种幅度和单位显示输出。这样更好地避免了信息混乱和误报。更重要的是,它可以让你更容易编写插件来收集你想要的数据信息,以从未有过的方式进行扩展。
1、 --total-cpu-usage---- CPU使用率 usr:用户空间的程序所占百分比; sys:系统空间程序所占百分比; idel:空闲百分比; wai:等待磁盘I/O所消耗的百分比; hiq:硬中断次数; siq:软中断次数;
2、-dsk/total-磁盘统计 read:读总数 writ:写总数
3、-net/total- 网络统计 recv:网络收包总数 send:网络发包总数
4、---paging-- 内存分页统计 in: pagein(换入) out:page out(换出) 注:系统的分页活动。分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,通常情况下当系统已经开始用交换空间的时候,就说明你的内存已经不够用了,或者说内存非常分散,理想情况下page in(换入)和page out(换出)的值是0 0。
5、--system--系统信息 int:中断次数 csw:上下文切换 注:中断(int)和上下文切换(csw)。这项统计仅在有比较基线时才有意义。这一栏中较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。你的服务器一般情况下都会运行运行一些程序,所以这项总是显示一些数值。
默认情况下,dstat 会每隔一秒刷新一次数据,一直刷新并一直输出,按 Ctrl+C 退出 "dstat";
- 常见的参数
-l :显示负载统计量
-m :显示内存使用率(包括used,buffer,cache,free值)
-r :显示I/O统计
-s :显示交换分区使用情况
-t :将当前时间显示在第一行
–fs :显示文件系统统计数据(包括文件总数量和inodes值)
–nocolor :不显示颜色(有时候有用)
–socket :显示网络统计数据
–tcp :显示常用的TCP统计
–udp :显示监听的UDP接口及其当前用量的一些动态数据
# dstat输出默认监控、报表输出的时间间隔为3秒钟,并且报表中输出10个结果
dstat 3 10
# 查看全部内存都有谁在占用:
dstat -g -l -m -s --top-mem
# 显示一些关于CPU资源损耗的数据:
dstat -c -y -l --proc-count --top-cpu
三、glances
安装:yum install epel-release -y
yum install glances -y
Glances 命令会分栏显示一些很有用的实时动态数据, 其目标就是利用最小的空间显示尽可能多的有用信息。Glances 监控了 PerCPU,负载,内存,数据交换,网络,磁盘I/O,加载数据和进程。
glances 可以为 Unix 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括:
CPU 使用率
内存使用情况
内核统计信息和运行队列信息
磁盘 I/O 速度、传输和读/写比率
文件系统中的可用空间
磁盘适配器
网络 I/O 速度、传输和读/写比率
页面空间和页面速度
消耗资源最多的进程
计算机信息和系统资源
执行命令
通常包括如下字段:
VIRT: 虚拟内存大小
RES: 进程占用的物理内存值
%CPU:该进程占用的 CPU 使用率
%MEM:该进程占用的物理内存和总内存的百分比
PID: 进程 ID 号
USER: 进程所有者的用户名
TIME+: 该进程启动后占用的总的 CPU 时间
IO_R 和 IO_W: 进程的读写 I/O 速率
NAME: 进程名称
NI: 进程优先级 S: 进程状态,其中 S 表示休眠,R 表示正在运行,Z 表示僵死状态。
四、netstat
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
netstat的输出结果可以分为两个部分:
1、Active Internet connections 有源TCP连接,其中"Recv-Q"和"Send-Q"指接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
2、Active UNIX domain sockets 有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
列名解释:
Proto:显示连接使用的协议。
RefCnt:表示连接到本套接口上的进程号。
Types:显示套接口的类型。
State:显示套接口当前的状态。
Path:表示连接到套接口的其它进程使用的路径名。
netstat常见参数
-a (all) 显示所有选项,默认不显示LISTEN相关。
-t (tcp) 仅显示tcp相关选项。
-u (udp) 仅显示udp相关选项。
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服务状态。
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
LISTEN和LISTENING的状态只有用-a或者-l才能看到。
五、lsof
安装:yum install lsof -y
COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
查看某个进程打开了哪些文件,加载库,依赖关系
[root@xiaowei ~]# lsof -p 22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
md 22 root cwd DIR 253,0 4096 64 /
md 22 root rtd DIR 253,0 4096 64 /
md 22 root txt unknown /proc/22/exe
查看哪个文件被哪个进程打开
[root@xiaowei ~]# lsof /root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1460 root cwd DIR 253,0 4096 33574977 /root
lsof 1815 root cwd DIR 253,0 4096 33574977 /root
lsof 1816 root cwd DIR 253,0 4096 33574977 /root
查看某个端口被哪个进程占用了
六、nc
安装:yum install nc -y
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具
扫描嗅探其他的机器开放了哪个端口
(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
(2)端口的扫描,nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
(4)机器之间网络测速
-z Only scan for listening daemons, without sending any data to them.
[-w timeout]
[root@slave-mysql ~]# nc -z 192.168.0.1 80
Connection to 192.168.0.1 80 port [tcp/http] succeeded!
[root@slave-mysql ~]# echo $?
0
[root@slave-mysql ~]# nc -z 192.168.0.1 8080
^C
[root@slave-mysql ~]# man nc
[root@slave-mysql ~]# nc -w 1 -z 192.168.0.1 8080
[root@slave-mysql ~]# echo $?
1
[root@slave-mysql ~]#
七、nmap
安装:yum install nmap -y
探测一个机器或者整个局域网里机器开放了哪些端口
扫描局域网中IP地址为192.168.1.105的主机。执行命令如下所示:
root@localhost:~# nmap 192.168.1.105
Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-05 18:44 CST
Nmap scan report for localhost (192.168.1.105)
Host is up (0.00010s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
111/tcp open rpcbind
445/tcp open microsoft-ds
MAC Address: 00:0C:29:31:02:17 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds
从输出信息中,可以看到目标主机192.168.1.105上开启的端口有21、22、23、111、445,及这些端口所对应的服务。而且,还可以看到该目标主机的MAC地址为00:0C:29:31:02:17。从最后一行信息,可以看出目标主机是活动的(up),并且扫描该目标主机共用了0.87秒。
八、iftop
安装:yum install -y epel-release && yum install -y iftop
iftop
命令用于查看网络上的流量情况,包括实时速率、总流量、平均流量等,是一款实时流量监控工具。在调试网络通信的程序中可能会用得上
直接运行
iftop
即可启动流量监控。如下图所示:
其中:
第一行,是带宽,下面带有标尺,用来标示每个连接上的实时流量占用的带宽
中间部分,是所有的连接,默认显示的是主机名,可以通过参数显示ip,箭头表示数据方向
中间右侧三列,分别是该连接2s、10s、40s的平均流量
底部三行,分别表示发送、接收、汇总的流量
底部三行第2列,为iftop启动到现在的流量汇总
底部三行第3列,为峰值速率
第4列,为平均值
注意,流量单位为bit,非Byte
可以看到,通过iftop可以很容易看到各个连接的流量使用情况。
在启动iftop时,可以指定监控的网卡,默认为第一块网卡:
iftop -i eth1
其他常用命令:
iftop -n # 直接显示IP, 不进行DNS反解析
iftop -N # 直接显示连接埠编号, 不显示服务名称
iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0 # 显示某个网段进出包流量
一般情况下,使用 iftop -nN启动即可。
九、nethogs
编译安装nethogs依赖包,centos默认rpm仓没有nethogs的包,所以需要我们手动编译。nethogs编译依赖2个库,在编译前需要安装下
yum install libpcap libpcap-devel -y
直接运行nethogs:
实例1:设置5秒钟刷新一次,通过-d来指定刷新频率
# nethogs -d 5
实例2:监视eth0网络带宽
# nethogs eth0
实例3:同时监视eth0和eth1接口
# nethogs eth0 eth1
十、sar
sar 命令很强大,是分析系统性能的重要工具之一,通过该命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。
sar命令的基本格式如下:
[root@localhost ~]# sar [options] [-o filename] interval [count]
此命令格式中,各个参数的含义如下:
- -o filename:其中,filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中;
- interval:表示采样间隔时间,该参数必须手动设置;
- count:表示采样次数,是可选参数,其默认值为 1;
- options:为命令行选项
sar命令选项 | 功能 |
---|---|
-A | 显示系统所有资源设备(CPU、内存、磁盘)的运行状况。 |
-u | 显示系统所有 CPU 在采样时间内的负载状态。 |
-d | 显示系统所有硬盘设备在采样时间内的使用状态。 |
# 如果想要查看系统 CPU 的整理负载状况,每 3 秒统计一次,统计 5 次,可以执行如下命令:
[root@aliyun ~]# sar -u 3 5
Linux 3.10.0-1160.83.1.el7.x86_64 (aliyun) 05/08/2023 _x86_64_ (2 CPU)
10:51:09 AM CPU %user %nice %system %iowait %steal %idle
10:51:12 AM all 0.34 0.00 0.17 0.00 0.00 99.49
10:51:15 AM all 0.67 0.00 0.34 0.00 0.00 98.99
10:51:18 AM all 0.50 0.00 0.33 0.00 0.00 99.16
10:51:21 AM all 0.51 0.00 0.34 0.00 0.00 99.16
10:51:24 AM all 0.51 0.00 0.17 0.00 0.00 99.33
Average: all 0.51 0.00 0.27 0.00 0.00 99.23
[root@aliyun ~]#
此输出结果中,各个列表项的含义分别如下:
- %user:用于表示用户模式下消耗的 CPU 时间的比例;
- %nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例;
- %system:系统模式下消耗的 CPU 时间的比例;
- %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例;
- %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例;
- %idle:CPU 空闲时间比例。
# 如果想要查看系统磁盘的读写性能,每 3 秒统计一次,统计 5 次,可以执行如下命令:
[root@aliyun ~]# sar -d 3 5
Linux 3.10.0-1160.83.1.el7.x86_64 (aliyun) 05/08/2023 _x86_64_ (2 CPU)
10:53:34 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10:53:37 AM dev253-0 0.67 0.00 8.00 12.00 0.00 0.00 0.50 0.03
10:53:37 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10:53:40 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:53:40 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10:53:43 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:53:43 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10:53:46 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:53:46 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10:53:49 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev253-0 0.13 0.00 1.60 12.00 0.00 0.00 0.50 0.01
[root@aliyun ~]#
此输出结果中,各个列表头的含义如下:
- tps:每秒从物理磁盘 I/O 的次数。注意,多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的;
- rd_sec/s:每秒读扇区的次数;
- wr_sec/s:每秒写扇区的次数;
- avgrq-sz:平均每次设备 I/O 操作的数据大小(扇区);
- avgqu-sz:磁盘请求队列的平均长度;
- await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1 秒=1000 毫秒);
- svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间;
- %util:I/O 请求占 CPU 的百分比,比率越大,说明越饱和。可以判断系统的繁忙度。
除此之外,如果想要查看系统内存使用情况,可以执行
sar -r 5 3
命令;如果要想查看网络运行状态,可执行sar -n DEV 5 3
命令,等等