linux系统观测工具
linux 系统观测工具是问题排查的有效手段, 有必要把排查工具整理下
系统整体监控
top
top 能整体查看系统运行情况工具。利用top,能够观察到cpu,内存的运行情况,过滤出cpu 内存占用高的进程
%Cpu,可以看出cpu各种操作的时间占比。
- us(用户态进程执行),
- sy(内核进程执行),
- ni(nice低优先级执行),
- id(idle, cpu空闲时间占比),
- wa(wait, 等待时间占比, 如果时间段在执行io且cpu空闲,则这段空闲cpu时间认为是wait),
- hi(hard interrupt), 硬中断执行时间
- si(soft interrupt), 操作系统软中断执行时间
- st(Steal Time), 分配给虚拟机的时间片
1
2
3
4
5
6
7
8
9
10
11
12top - 16:16:56 up 16:55, 0 users, load average: 2.01, 1.83, 1.48
Tasks: 340 total, 1 running, 338 sleeping, 1 stopped, 0 zombie
%Cpu(s): 1.3 us, 0.3 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7902.0 total, 2180.4 free, 2668.4 used, 3053.2 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 4924.6 avail Mem
scroll coordinates: y = 1/340 (tasks), x = 1/12 (fields)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
172367 root 20 0 31.3g 171008 54448 S 1.0 2.1 0:56.97 node
1832 root 20 0 11.4g 76164 43988 S 0.7 0.9 7:02.08 node
171284 root 20 0 13884 8968 7412 S 0.7 0.1 0:06.62 sshd
14 root 20 0 0 0 0 I 0.3 0.0 5:13.07 rcu_sched
1774 root 20 0 11.3g 128480 46240 S 0.3 1.6 9:43.66 node
top 命令点击大写P、M实现按照cpu/mem 排序的进程,点击数字键1 可以看到每个cpu的占用。
iostat
iostat是监控磁盘性能的工具。如果top发现cpu慢在wa,可以使用iostat看具体盘有无问题。命令iostat -x 1 2
1 | avg-cpu: %user %nice %system %iowait %steal %idle |
磁盘利用率表示io时间占cpu总时间的比例, 表示cpu处理空闲阶段且存在io操作,这段cpu时间片就认为是iowait消耗的
网络信息
ifconfig 能输出 网卡、ip地址、网络传输等基本信息
1 | ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
netstat -nultp 查看pid和监听的端口信息
1 | Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name |
netstat -r 显示路由表
ss(socket statistics)是一个比 netstat 更快速和功能更强大的工具。
ss -t显示tcp连接数量
1 | State Recv-Q Send-Q Local Address:Port Peer Address:Port Process |
ping和curl 查看网络和端口的连通性
网络流量统计
使用iftop 统计网卡实时流量
iftop -i 指定网卡
1 | TX: cum: 12.4KB peak: 11.9Kb rates: 9.09Kb 9.89Kb 9.89Kb |
vnStat 可用来统计过去时间段的流量信息
sar工具
sar (System Activity Report) 是 Linux 系统中的一个性能监控工具,可以用来统计cpu, 内存, io, 网络等
sar -u 1 5 统计cpu 信息
1 | Linux 5.15.0-127-generic (larry-latop-ubuntu) 2025年01月04日 _x86_64_ (8 CPU) |
sar -hr 1 5 显示内存信息
1 | 17时01分34秒 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty |
查看磁盘统计, 统计每个磁盘的iops, 读写吞吐, wait, 使用率
tps Transactions Per Second, 每秒io数量
1 | Average: DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util |
sar -n DEV 1 5 统计网络流量
rxkB/s:每秒接收的数据量(KB)。
txkB/s:每秒发送的数据量(KB)。
%ifutil 网络接口利用率
1 | 17时03分27秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil |
sar -q 1 5 查看系统负载(进程)信息
runq-sz:运行队列的长度。
plist-sz:当前进程的数量。
ldavg-1、ldavg-5、ldavg-15:系统在 1、5 和 15 分钟的平均负载。
1 | 17时04分40秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked |
进程监控
查看运行进程的信息
ps -ef | grep
, ps aux |grep
获得进程的pid, 状态等信息
/proc/{pid}
目录可以看到进程相关资源信息。例如
/proc/{pid}/fd 查看打开的文件信息
1 | root@larry-latop-ubuntu:/proc/812# ll /proc/812/fd/ |
/proc/{pid}/cgroup,查看cgroup信息
1 | 13:hugetlb:/ |
性能排查
pstack, strace, perf等
日志监控
对异常执行流,在程序里打印error日志。通过错误日志查看程序执行的问题。
TODO
本文标题:linux系统观测工具
文章作者:Infinity
发布时间:2024-12-05
最后更新:2025-01-11
原始链接:https://larrystd.github.io/2024/12/05/linux%E7%B3%BB%E7%BB%9F%E8%A7%82%E6%B5%8B%E5%B7%A5%E5%85%B7/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!