Linux 数据跟踪与监控工具指南
在 Linux 环境中,“跟踪数据”是一个广泛的概念,根据需求的不同,可以分为网络流量跟踪、系统调用跟踪、进程行为跟踪以及内核级深度跟踪四个主要维度。
网络数据跟踪 (Network Tracing)
用于分析网络协议、数据包内容及带宽占用情况。
- tcpdump: 最经典的命令行抓包工具,可以通过过滤条件(如端口、IP)捕获并分析网络数据包。
- 示例:
tcpdump -i eth0 port 80(监听 eth0 网卡上的 80 端口)。
- 示例:
- ss (Socket Statistics): 用于查看套接字统计信息,是
netstat的现代替代品,速度更快,信息更全。- 示例:
ss -tunlp(查看当前所有的 TCP/UDP 监听端口及进程)。
- 示例:
- iftop
: 实时显示网络接口的带宽使用情况,可以直观地看到哪些主机正在消耗大量流量。
- nload: 提供图形化的实时流量图表,非常适合监控网卡的实时吞吐量。
系统调用与进程行为跟踪 (System Call & Process Tracing)
用于分析程序是如何与操作系统内核交互的,常用于排查程序崩溃或性能瓶颈。
- strace: 跟踪进程执行的系统调用 (System Calls),通过它你可以看到程序打开了哪些文件、收发了哪些网络数据、执行了哪些内核指令。
- 示例:
strace -p <PID>(跟踪正在运行的进程)。
- 示例:
- ltrace: 跟踪进程调用的动态链接库函数 (Library Calls),它侧重于用户态的函数调用,而非内核态的系统调用。
- pidstat: 用于监控特定进程的 CPU、内存、磁盘 I/O 等资源使用情况。
I/O 与存储性能跟踪 (I/O & Storage Tracing)
当系统出现卡顿或磁盘响应慢时,需要使用这些工具。
- iotop: 类似于
top命令,但它专门用于显示进程级别的磁盘 I/O 使用情况,可以快速定位哪个进程在疯狂读写硬盘。 - iostat: 提供 CPU 利用率以及磁盘设备的详细统计信息(如读写速度、等待时间、利用率等)。
- blktrace: 用于更底层的块设备追踪,可以分析磁盘请求在队列中的具体行为。
内核级深度跟踪 (Kernel-level Tracing)
针对高级开发者和系统管理员,用于探测内核内部的运行机制。
- eBPF (Extended Berkeley Packet Filter): 当前 Linux 性能分析的黄金标准,它允许在内核中运行沙盒程序,无需修改内核源码即可实现极高性能的实时监控。
- bpftrace: 基于 eBPF 的高级跟踪语言,语法简洁,适合快速编写脚本进行内核探测。
- ftrace: Linux 内核内置的函数跟踪器,它可以记录内核函数调用的轨迹,对于分析内核函数执行路径和延迟非常有用。
- perf: Linux 官方提供的性能分析工具,支持采样分析(Sampling),可以生成火焰图(Flame Graphs)来直观展示 CPU 消耗在哪里。
总结建议
- 如果要看 $rightarrow$ 使用 tcpdump。
- 如果要看程序为什么报错/卡住 $rightarrow$ 使用 strace。
- 如果要看哪个进程在占磁盘 $rightarrow$ 使用 iotop。
- 如果要进行极致的性能调优 $rightarrow$ 使用 eBPF / perf。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/493977.html



