作为一名linux运维工程师来说,对linux系统的日常管理,检测和系统性能的分析是必不可少的。也有一些针对系统监测和性能分析的工具。咱们现在就来了解一下。
tcpdump命令:
网络抓包工具,过滤数据包或者定制输出格式:
常用选项:
-n : 用IP地址表示主机,用数字表示端口号。
-i : 监听网卡接口,
-i any : 抓取所有网卡接口的数据包。
-v : 输出详细信息。
-t : 不打印时间戳
-e : 显示以太网帧头部信息。
-x : 以十六进制数显示数据包的内容。
-X : 打印每个十六进制字节对应ascii字符。
-XX : 打印以太网帧的头部信息。
-s : 设置抓包时的抓取长度。默认的抓包长度被修改为65535字节。
-S : 绝对值显示TCP报文段的序号。
-w : 将tcpdump的输出以特定格式定向到某个文件。
-r : 从文件读取数据包信息并显示。
tcpdump表达式操作数:
类型(type): 解释其后面紧跟着的参数的含义。
支持的类型包括:host, net,port,portrange. 可分别指定(IP地址),
用CIDR方法表示的网络地址,端口号和端口范围。
例如: tcpdump net 1.0.0.0/8
方向(dir): src指定数据包的发送端,dst指定数据包的目的端。
例如:tcpdump dst port 53
协议(proto): 指定目标协议,
例如: tcpdump icmp
支持逻辑操作符:and(&&), or(||), not(!)
例如:
tcpdump ip host 主机名 and not 主机名
如果表达式较复杂:用括号分组,用反斜杠\ 或单引号转义。
例如: tcpdump ‘src 1.1.1.1 and (dst port 3389 or 22)‘
使用部分协议字段的内容来过滤数据包
例如:tcpdump ‘tcp[13] & 2 != 0‘
lsof 命令:
列出当前系统打开的文件描述符的工具。
常用选项:
-i : 显示socket文件描述符。
使用方法:
lsof -i [46] [protocol][@hostname][ipaddr][:service|port]
说明:
4: ipv4协议
6: ipv6协议。
protocol 指定传输层协议。
hostname 指定主机名。
ipaddr 主机IP地址。
service 指定服务名
port 指定端口号。
-u : 显示指定用户启动的所有进程打开的所有文件描述符。
-c : 显示指定的命令打开的所有文件描述符。
例如:lsof -c httpd
-p : 显示指定进程打开的所有文件描述符。
-t : 显示打开了目标文件描述符的进程PID。
使用:
#lsof -p 进程号
输出信息详解:
COMMAND : 执行程序所用的命令。
PID : 文件描述符所属进程的PID
USER : 用户名。
FD : 文件描述符的描述。
cwd : 进程的工作目录。
rtd : 用户的根目录。
txt : 进程运行的程序代码。
mem : 映射到内存的文件。
FD以数字+访问权限表示。
数字: 文件描述符的具体数值。
访问权限:r(可读) , w(可写),u(可读可写)
0u,1u,2u :标准输入,标准输出,标准错误输出。
3u : 处于LISTEN状态的监听socket
4u :epoll内核事件对应的文件描述符。
TYPE:文件描述符类型。
DIR : 目录。
REG : 普通文件。
CHR : 字符设备文件
IPv4 : IPv4类型的socket文件描述符。0000是未知类型。
DEVICE : 文件所属设备,
字符设备和块设备:主设备号,此设备号。
程序文件和动态库:8:SCSI硬盘。 3 : 该硬盘的第3个分区。
FIFO类型的文件:例如:管道和socket ,
显示一个内核引用目标文件的地址。
SIZE/OFF : 文件大小或者偏移值。
0t/ox : 偏移值。否则是文件大小。
NODE : 文件的i节点号,对于socket,则显示为协议类型。
NAME : 文件名
nc 命令:
用来快速构建网络连接。可以服务器方式运行,也可以客户端方式运行。
默认以客户端方式运行。
常用选项:
-i : 设置数据包传送的时间间隔。
-l : 以服务器方式运行,监听指定端口。
-k : 重复接收并处理某个端口的所有连接,与-l 一起使用。
-n : IP地址表示主机,数字表示端口。
-s : 设置本地主机发送出的数据包的IP地址。
-C : 将CR和LF两个字符作为行结束符。
-U : 使用unix本地域协议通信。
-u : 使用UDP协议,默认使用TCP协议。
-w : 未检测到输入,则退出。
-X : 指定C-S之间使用的通信协议。
-x : 指定目标代理服务器的IP地址和端口号。
例如:
nc -x www:1080 -X connect www.yuan.com 80
-z : 扫描目标主机的某个服务是否开启。
-C : HTTP行结束符。
strace 命令:
测试服务器性能的工具。
跟踪程序运行过程中执行的系统调用和接收到的信号,并将系统调用名,参数,返回值及信号名输出到标准输出和指定的文件。
常用的选项:
-c 统计每个系统调用执行时间,执行次数和出错次数。
-f 跟踪由fork调用生成的子进程。
-t 加上时间信息。
-e 指定表达式,用来控制如何跟踪系统调用。
格式:
[qualifier=][!]values1[,value2]......
qualifier: trace,abbrev,verbose,raw,signal, read,write. 默认是trace.
value 取值:
-e trace=set : 只跟踪指定的系统调用。
-e trace=file : 只跟踪与文件操作相关的系统调用。
-e trace=process : 跟踪与进程控制相关的系统调用。
-e trace=network : 网络相关
-e tace=signal : 信号相关
-e trace=ipc : 与进程间通信相关
-e signal=set : 跟踪指定的信号
-e read=set : 输出从指定文件中读入的数据。
-o : 将strace的输出写入指定的文件。
netstat命令:
网络信息统计工具。打印本地网卡接口上的连接,路由表信息,网卡接口信息。
常用的选项:
-n : IP地址表示主机,数字表示端口。
-a : 包含监听socket.
-t : 显示TCP连接。
-r : 显示路由信息
-i : 显示网卡接口的数据流量。
-c : 每隔1s输出一次。
-o : 显示socket定时器的信息。
-p : 显示socket所属进程的PID和名字。
ifstat命令:
网络流量监测工具。
常见选项:
-a : 监测所有网卡接口。
-i : 指定要监测的网卡接口。
-t : 输出信息加时间戳。
-b : 以Kbit/s为单位显示数据。
delay : 采样间隔。
count : 采样次数。
例如:ifstat -a 2 5
mpstat 命令:
实时监测多处理器系统上每个cpu的使用情况。
需要安装sysstat 包。
用法:mpstat [-p {|all}] [interval][count]]
-p : 指定要监控的CPU号。
all : 监听所有的CPU
interval : 采样间隔。
count : 采样次数。
例如:#mpstat -P ALL 5 2
输出信息:
%usr : 除了nice值为负的进程,系统其他进程运行在用户空间的时间占CPU总运行时间的比例。
%nice : nice值为负的进程运行在用户空间的时间占CPU总运行时间的比例。
%sys : 系统上所有进程运行在内核空间的时间占CPU总运行时间的比例。
%iowait : CPU等待磁盘操作的时间占CPU总运行时间的比例。
%irq : CPU用于处理硬件中断的时间占CPU总运行时间的比例。
%soft : CPU用于处理软件中断的时间占CPU总运行时间的比例。
%steal : 一个物理CPU可以包含一对虚拟CPU,
由超级管理程序管理。当超级管理程序在处理某个虚拟CPU时,
另外一个虚拟CPU则必须等待它处理完成才能运行。
等待时间就是steal时间。该字段表示steal时间占CPU总运行时间的比例。
%guest : 运行虚拟CPU的时间占CPU总运行时间的比例。
%idle : 系统空闲的时间占CPU总运行时间的比例。
主要注意:%usr, %sys, %idle的变化。
系统性能工具:
sar命令:
分析系统性能的重要工具。
可获取系统的CPU,运行队列,磁盘I/O,分页(交换区),内存,CPU中断,网络等性能数据。
语法:
sar [options] [-o filename] [interval [count]]
选项含义:
-A : 显示系统所有资源设备(CPU,内存,磁盘) 的运行状况。
-u : 显示系统所有CPU在采样时间内的负载状态。
-P: 显示当前系统中指定CPU的使用情况。
-d: 显示所有硬盘设备在采样时间内的使用情况。
-r : 显示系统内存在采样时间内的使用情况。
-b: 显示缓冲区在采样时间内的使用情况。
-v : 显示进程,文件,节点和锁表状态。
-n 显示网络运行状态。
参数:DEV : 显示网络接口信息。
EDEV : 显示网络错误的统计数据。
SOCK : 显示套接字信息。
FULL : 显示前三参数的所有信息。
-q : 显示了运行队列的大小。
-R : 显示进程在采样时间内的活动情况。
-y : 显示终端设备在采样时间内的活动情况。
-w : 显示系统交换活动在采样时间内的状态。
-o filename, 将命令结果以二进制格式存放在文件中,filename是文件名。
interval : 表示采样间隔时间。
count : 表示采样次数。默认值1.
例如:
查看系统CPU的整体负载负载状况。
#sar -u 3 5
系统的CPU 从0开始。查看第二个CPU的运行负载。
#sar -P 1 3 5
查看系统磁盘读写性能:
#sar -d 3 5
查看系统内存使用情况,网络运行状态:
#sar -r 5 2
#sar -n DEV 5 3
#sar -u 3 5
输出信息详解:
%user : 用户进程消耗的CPU时间百分比。
%nice : 运行正常进程所消耗的CPU时间百分比。
%system : 系统进程消耗的CPU时间百分比。
%iowait : I/O等待所占用的CPU时间百分比。
%steal : 内存不足时,pagein强制对不同的页面进行的steal操作。
%idle : CPU处在空闲状态的时间百分比。
可分开查询系统的每个CPU,统计每个CPU的 使用情况。
#sar -P 0 3 5
iostat 命令:
对系统的磁盘I/O操作进行监视。
显示磁盘读写操作的统计信息。
对系统整体情况进行分析。
要安装sysstat的工具包。
语法:
iostat [-c | -d] [-k] [-t] [-x [device]] [interval [count]]
选项含义:
-c : 显示CPU的使用情况。
-d : 显示磁盘的使用情况。
-k : 每秒以KB为单位显示数据。
-t : 打印出统计信息开始执行的时间。
-x device : 指定要统计的磁盘设备名称,默认为所有磁盘设备。
interval : 指定两次统计间隔的时间。
count : 按照"interval" 指定的时间间隔统计的次数。
组合使用:
查看系统磁盘的使用状况:
#iostat -d 2 3
输出内容详解:
Blk_read/s : 每秒读取的数据块数。
Blk_wrtn/s : 每秒写入的数据块数。
Blk_read : 读取的所有块数。
Blk_wrtn : 写入的所有块数。
iostat -x 组合提供了对每个磁盘的单独统计,默认是对所有磁盘进行统计。
例如:iostat -x /dev/sda 2 3
输出内容解释:
rrqm/s : 每秒进行合并的读操作数目。
wrqm/s : 每秒进行合并的写操作数目。
r/s : 每秒完成读I/O设备的次数。
w/s : 每秒完成写I/O设备的次数。
rsec/s : 每秒读取的扇区数。
wsec/s : 每秒写入的扇区数。
free 命令 :
监控linxu内存使用状况。
选项:
-m : 以M为单位的内存使用情况。
-s : 指定的时间段内不断地监控内存的使用情况。
-b : 以1024字节为单位显示内存使用情况。
公式:
可用内存/物理内存> 70% ,表示系统内存资源充足。
可用内存/物理内存<20%时,系统内存资源紧缺。
20%<可用内存/物理内存<70%时, 内存资源满足应用需求。
如有什么不对之处,敬请指正。
本文出自 “安然一笑” 博客,请务必保留此出处http://liyuanjie.blog.51cto.com/12877605/1959700
原文地址:http://liyuanjie.blog.51cto.com/12877605/1959700