基础资源信息查询和关键信息的查看


mpstat 实时系统监控工具(查看CPU)

命令的作用

mpstat是 Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

命令格式

mpstat [ 选项 ] [ <时间间隔> [ <次数> ] ]
mpstat [-P {cpu|ALL}] [internal [count]]

选项

[ -A ] 等于“-I ALL、-u、-P ALL”
[ -u ] 显示cpu的使用状态
[ -V ] 显示版本信息并且退出
[ -I { SUM | CPU | SCPU | ALL } ] 显示中断信息
SUM,显示每一个cpu的中断总数
CPU,显示每秒收到的中断总数
SCPU,查看软终端的统计信息
ALL,显示所有的中断统计信息
[ -P { <cpu> [,...] | ON | ALL } ] 制定显示CPU的信息,从0开始,0…N-1,显示制定CPU信息
ALL,显示所有的CPU信息

其中参数的含义

参数含义
-P {cpu l ALL}表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal相邻的两次采样的间隔时间
count采样的次数,count只能和delay一起使用

使用实验

直接使用mpstat命令
在这里插入图片描述
当mpstat不带参数时,输出为从系统启动以来的平均值。

mpstat -P ALL 3 3
ALL:代表统计所有cpu
第一个3:代表采样时间间隔3秒
第二个3:采用次数3次

在这里插入图片描述

输出参数的含义

当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段(3秒)的平均信息。

参数释义
CPU处理器ID(从0开始)
%usr在internal时间段里,用户态的CPU时间(%),不包含 nice值为负进程
%nice在internal时间段里,nice值为负进程的CPU时间(%)
%sys在internal时间段里,核心时间(%)
%iowait在internal时间段里,硬盘IO等待时间(%)
%iowait在internal时间段里,硬盘IO等待时间(%)
%irq在internal时间段里,硬中断时间(%)
%soft在internal时间段里,软中断时间(%)
%steal显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%guest显示运行虚拟处理器时CPU花费时间的百分比
%gniceCPU运行niced guest虚拟机所花费的时间百分比
%idleCPU的空闲时间的百分比
注: mpstat主要用在当系统变慢,平均负载增大时,我们想判断到底是CPU的使用率增大了,还是IO压力增大的情况。

iostat

命令的作用

iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。

命令格式

iostat [选项] [<时间间隔>] [<次数>]

选项

-c 只显示cpu相关统计信息(默认是同时显示cpu和磁盘信息)
-d 只显示磁盘统计信息(默认是同时显示cpu和磁盘信息)
-h 使用NFS的输出报告更加友好可读
-j { ID | LABEL | PATH | UUID |} 磁盘列表的Device列要用什么维度来描述磁盘
-k 默认情况下,iostat的输出是以block作为计量单位,加上这个参数可以以kb作为计量单位显示。(该参数仅在linux内核版本2.4以后数据才是准确的)
-m 默认情况下,iostat的输出是以block作为计量单位,加上这个参数可以以mb作为计量单位显示。(该参数仅在linux内核版本2.4以后数据才是准确的)
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS相关统计数据(network fileSystem)。(该参数只在linux内核版本2.6.17之后有用)
-p [ { device [,] | ALL } ] 显示磁盘分区的相关统计信息(默认粒度只到磁盘,没有显示具体的逻辑分区)
-t 显示终端和CPU的信息,每次输出报告时显示系统时间。
-V 显示当前iostat的版本信息
-x 显示更详细的磁盘报告信息,默认只显示六列,加上该参数后会显示更详细的信息。(该参数需要在内核版本2.4之后才能使用)
-y 跳过不显示第一次报告的数据,因为iostat使用的是采样统计,所以iostat的第一次输出的数据是自系统启动以来累计的数据
-z 只显示在采样周期内有活动的磁盘

在这里插入图片描述

参数指令

%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。

Device段

tps: 每秒钟发送到的I/O请求数.
Blk_read /s: 每秒读取的block数.
Blk_wrtn/s: 每秒写入的block数.
Blk_read: 读入的block总数.
Blk_wrtn: 写入的block总数.
注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

信息说明

tps:每秒钟发送到的I/O请求数。
Blk_read/s:每秒读取的block数。
Blk_wrtn/s:每秒写入的block数。
Blk_read:读入的block总数。
Blk_wrtn:写入的block总数。
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
r_await:每个读操作平均所需的时间
不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
w_await:每个写操作平均所需的时间
不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

iotop

命令的作用

iotop是一款开源、免费的用来监控磁盘I/O使用状况的类似top命令的工具,iotop可以监控进程的I/O信息。它是Python语言编写的,与iostat工具比较,iostat是系统级别的IO监控,而iotop是进程级别IO监控。
iotop命令可以用来监控系统中各个进程对IO的使用量,它和top一样可以在非batch模式下运行时进行与用户交互。它主要可以用于监控:

进程/线程的I/O的读写带宽
进程/线程swapin的耗时占比
进程/线程的I/O阻塞(等待)耗时占比
每个进程/线程的I/O优先级
系统中I/O总读写带宽
系统中I/O实际读写带宽(和总读写带宽有时候值并不一致)

在这里插入图片描述

选项

-v version显:示版本号
-h help:显示帮助信息
-o only:只显示正在产生I/O的进程或线程,运行过程中,可以通过按o随时切换
-b batch:非交互模式下运行,一般用来记录日志。
-n NUM--iter=NUM:设置监控(显示)NUM次,主要用于非交互模式。默认无限
-d SEC--delay=SEC:设置显示的间隔秒数,支持非整数
-p PID--pid=PID:只显示指定进程(PID)的信息
-u USER--user=USER:显示指定的用户的进程的信息
-P processes:只显示进程,不显示所有线程
-a accumulated:累积的I/O,显示从iotop启动后每个进程累积的I/O总数,便于诊断问题
-k kilobytes:显示使用KB单位
-t time:交互模式下,加上时间戳。
-q quiet:只在第一次监测时显示列名. 去除头部一些行:这个参数可以设置最多3次来移除头部行:-q列头部只在最初交互显示一次;-qq列头部不显示;-qqq,I/O的总结不显示

常用快捷键(交互模式)

r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出。

noload

命令的作用

nload是一个Linux命令行工具,用于使用有洞察力的图表和流量统计信息实时监视网络流量和带宽使用情况,一般用于实时监控Linux网络下的流量信息,可以通过Incoming和Outgoing两项对比来对进出站的流量进行可视化监控。

先下载epel-release库才能下载nload
在这里插入图片描述
在这里插入图片描述

参数选项

1显示台参数

在这里插入图片描述
nload默认使用的是ens33网卡,若想监控其他网卡,可以在命令后方加上需要监控的网卡

参数说明

Incoming
进入网卡的流量

Outgoing
从网卡流出的流量

Curr
当前流量

Avg
平均流量

Min/Max
最大/最小流量

Ttl
流量总和

常用参数选项

-a 全部数据的刷新时间周期,单位是秒,默认是300

-i 进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s

-m 不显示流量图,只显示统计数据

-o 出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s

-t 显示数据的刷新时间间隔,单位是毫秒,默认500

-u 设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的,注意大小写单位不同

pidstat

命令的作用

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
在这里插入图片描述

常用的参数:

-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数

详细说明

PID:进程ID
%usr:进程在用户空间占用cpu的百分比
%system:进程在内核空间占用cpu的百分比
%guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令

lsof

命令的作用

lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

用法格式

lsof (选项)

选项

-a 列出打开文件存在的进程;
-c<进程名> 列出指定进程所打开的文件;
-g 列出GID号进程详情;
-d<文件号> 列出占用该文件号的进程;
+d<目录> 列出目录下被打开的文件;
+D<目录> 递归列出目录下被打开的文件;
-n<目录> 列出使用NFS的文件;
-i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号> 列出指定进程号所打开的文件;
-u 列出UID号进程详情;
-h 显示帮助信息;
-v 显示版本信息。

列出所有打开的文件

不带任何参数执行 lsof命令会输出当前所有活跃进程打开的所有文件
在这里插入图片描述

lsof输出各列信息的意义

COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

FD文件描述符列表

cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
lnn:library references (AIX)(库引用);
er:FD information error (see NAME column)(fd信息错误);
jld:jail directory (FreeBSD)(监控目录);
ltx:shared library text (code and data)(共享库文本);
mxx :hex memory-mapped type number xx(十六进制内存映射类型号xx);
m86:DOS Merge mapped file(DOS合并映射文件);
mem:memory-mapped file(内存映射文件);
mmap:memory-mapped device(内存映射设备);
pd:parent directory(父目录);
rtd:root directory(跟目录);
tr:kernel trace file (OpenBSD)(内核跟踪文件);
v86 VP/ix mapped file(VP/IX映射文件);
0:表示标准输出
1:表示标准输入
2:表示标准错误

文件状态模式

跟在标准输出、标准错误、标准输入后

u:表示该文件被打开并处于读取/写入模式。
r:表示该文件被打开并处于只读模式。
w:表示该文件被打开并处于。
空格:表示该文件的状态模式为unknow,且没有锁定。
-:表示该文件的状态模式为unknow,且被锁定。

在文件状态模式后面,还跟着相关的锁

N:for a Solaris NFS lock of unknown type(对于未知类型的Solaris NFS锁);
r:for read lock on part of the file(用于对文件的一部分进行读取锁定);
R:for a read lock on the entire file(整个文件的读取锁定);
w:for a write lock on part of the file;(文件的部分写锁)
W:for a write lock on the entire file;(整个文件的写锁)
u:for a read and write lock of any length(对于任意长度的读写锁);
U:for a lock of unknown type(对于未知类型的锁);
x:for an SCO OpenServer Xenix lock on part of the file(对于文件的sco openserver xenix锁);
X:for an SCO OpenServer Xenix lock on the entire file(对于整个文件的sco openserver xenix锁);
space:if there is no lock(如果没有锁)

文件类型

DIR:表示目录。
CHR:表示字符类型。
BLK:块设备类型。
UNIX: UNIX 域套接字。
FIFO:先进先出 (FIFO) 队列。
IPv4:网际协议 (IP) 套接字。
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

tcpdump (抓包工具)

命令的作用

用简单的语言概括就是dump the traffic on a network,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具,windows平台有sniffer等工具,tcpdump可以将网络中传输的数据包的“包头”全部捕获过来进程分析,其支持网络层、特定的传输协议、数据发送和接收的主机、网卡和端口的过滤,并提供and、or、not等语句进行逻辑组合捕获数据包或去掉不用的信息。

选项

-a #将网络地址和广播地址转变成名字
-A #以ASCII格式打印出所有分组,并将链路层的头最小化
-b #数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层
-c #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump
-d #将匹配信息包的代码以人们能够理解的汇编格式输出
-dd  #将匹配信息包的代码以c语言程序段的格式输出
-ddd #将匹配信息包的代码以十进制的形式输出
-D #打印系统中所有可以监控的网络接口
-e #在输出行打印出数据链路层的头部信息
-f #将外部的Internet地址以数字的形式打印出来,即不显示主机名
-F #从指定的文件中读取表达式,忽略其他的表达式
-i #指定监听网络接口
-l #使标准输出变为缓冲形式,可以数据导出到文件
-L #列出网络接口已知的数据链路
-n #不把网络地址转换为名字
-N 不输出主机名中的域名部分,例如www.baidu.com只输出www
-nn #不进行端口名称的转换
-P #不将网络接口设置为混杂模式
-q #快速输出,即只输出较少的协议信息
-r #从指定的文件中读取数据,一般是-w保存的文件
-w #将捕获到的信息保存到文件中,且不分析和打印在屏幕
-s #从每个组中读取在开始的snaplen个字节,而不是默认的68个字节
-S #将tcp的序列号以绝对值形式输出,而不是相对值
-T #将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)
-t #在输出的每一行不打印时间戳
-tt #在每一行中输出非格式化的时间戳
-ttt #输出本行和前面以后之间的时间差
-tttt #在每一行中输出data处理的默认格式的时间戳
-u #输出未解码的NFS句柄
-v #输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv#输出相信的保报文信息

格式

#tcpdump  [协议类型]  [源或目标] [主机名称或IP]   [or/and/not/!条件组合] [源或目标] [主机名或IP]    [or/and/not/!条件组合] [端口] [端口号] ……  [or/and/not/!条件组合] [条件]

1、tcpdump的表达式
表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包 将会被截获,在表达式中一般如下几种类型的关键字:

关于数据类型的关键字:
包括host、port、net,例如host 192.168.1.1表示这是一台主机,net 192.168.0.0表示这是一个网络地址,port 22指明端口号是22,如果没有指明类型,则默认的类型是host

数据传输方向的关键字:

包括src、dst、dst or src、dst and src,这些关键字指明了传输的方向,比如src 192.168.1.1说明数据包源地址是192.168.1.1,dst net 192.168.0.0指明目的网络地址是192.168.0.0,默认是监控主机对主机的src和dst,即默认监听本机和目标主机的所有数据

协议关键字:

包括ip、arp、rarp、tcp、udp等,

其他关键字:
运算类型的:or、and、not、!
辅助功能型的:gateway、less、broadcast、greater

tcpdump 监听指定网卡ens33的所有传输数据包

tcpdump -i ens33
在这里插入图片描述tcpdump的语法类似于mysql查询语句,可以指定各种查询的条件进行组合,还可以进行与或非的条件判断进行更精确的数据搜集


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值