本文档详细介绍了系统监控、诊断工具和日志分析资源,面向系统管理员、DevOps 工程师和安全专业人员。有关网络特定监控工具,请参阅 网络。有关安全监控,请参阅 安全分析与监控。
监控和诊断工具是系统管理的基础,使操作员能够观察系统行为、诊断问题和分析性能。这些工具的范围从简单的资源查看器到复杂的跟踪框架和日志分析器。
图示:监控与诊断生态系统
来源:README.md299-322 README.md324-331 README.md189-196
系统监控工具提供有关系统资源(包括 CPU、内存、磁盘和网络使用情况)的实时或近实时信息。它们对于持续的系统观察和初步问题识别至关重要。
图示:资源监控工具层级
来源:README.md310-314 README.md319
这些工具提供交互式界面来查看和管理进程和系统资源
| 工具 | 描述 | 主要功能 |
|---|---|---|
htop | 交互式文本模式进程查看器 | 比 top 可视化效果更好,支持鼠标操作,可结束进程 |
bashtop | 纯 Bash 编写的资源监视器 | 现代 UI,进程管理,磁盘 I/O |
glances | 用 Python 编写的跨平台监控工具 | 提供 Web 界面选项,支持客户端-服务器模式,REST API |
atop | ASCII 性能监视器 | 记录历史数据,提供详细的每进程统计信息 |
nmon | 用于性能监控的单一可执行文件 | 收集数据用于后续分析,提供图形工具 |
| 工具 | 描述 | 主要功能 |
|---|---|---|
ncdu | NCurses 磁盘使用情况 | 交互式导航,磁盘使用率排序 |
来源:README.md163
网络监控工具提供对网络流量、带宽使用情况和网络接口状态的可见性。
| 工具 | 描述 | 主要功能 |
|---|---|---|
bmon | 带宽监视器和调试工具 | 实时图形,多接口监控 |
iptraf-ng | 基于控制台的网络监控 | IP 流量统计,接口统计 |
vnstat | 网络流量监视器 | 数据库驱动,跟踪一段时间内的流量 |
tcpdump | 数据包分析器 | 捕获和显示数据包,提供过滤选项 |
tshark | Wireshark 的命令行版本 | 协议分析,数据包检查 |
Termshark | tshark 的终端 UI | 数据包分析的用户友好界面 |
来源:README.md191-193 README.md182-185
诊断工具允许更深入地检查系统行为,包括跟踪系统调用、分析内存使用情况和剖析应用程序性能。
图示:诊断工具工作流程
来源:README.md300-309 README.md315-322
跟踪工具允许系统管理员观察应用程序和内核的执行流程
| 工具 | 描述 | 用例 |
|---|---|---|
strace | 跟踪系统调用和信号 | 诊断系统调用失败,理解应用程序行为 |
ltrace | 库调用跟踪器 | 跟踪对库函数的调用 |
ptrace-burrito | ptrace 的友好封装 | 扩展了 ptrace 的功能,使用更简便 |
bpftrace | eBPF 的高级跟踪语言 | 创建自定义跟踪工具,性能分析 |
DTrace | 动态跟踪框架 | 全面的性能分析和故障排除 |
来源:README.md300-304 README.md306
性能分析工具帮助识别瓶颈和性能问题
| 工具 | 描述 | 主要功能 |
|---|---|---|
perf-tools | 性能分析工具 | 基于 Linux perf_events 和 ftrace |
sysdig | 系统探索和故障排除 | 容器感知的系统可见性 |
Valgrind | 插桩框架 | 内存错误检测,缓存和分支预测分析 |
gperftools | Google 性能工具 | 高性能 malloc 实现,CPU 剖析器 |
FlameGraph | 堆栈跟踪可视化器 | 跨代码路径的 CPU 使用情况可视化 |
Performance Co-Pilot | 系统性能分析工具包 | 分布式监控,历史数据收集 |
来源:README.md305-308 README.md315-319
专门用于调试应用程序和检查系统状态的工具
| 工具 | 描述 | 主要功能 |
|---|---|---|
rr | 记录和重放调试 | 记录执行并重放以进行确定性调试 |
lsof | 列出打开的文件 | 显示进程打开的文件、网络连接 |
lsofgraph | 从 lsof 输出生成图形 | 可视化进程间通信 |
hexyl | 命令行十六进制查看器 | 带颜色高亮的二进制文件检查 |
Austin | Python 帧堆栈采样器 | 低开销地分析 Python 应用程序 |
来源:README.md315-318 README.md320-321
日志分析工具有助于解析、搜索和可视化来自各种来源的日志数据,从而更容易识别模式、错误和异常。
图示:日志分析工作流程
| 工具 | 描述 | 主要功能 |
|---|---|---|
angle-grinder | 日志切片和切块工具 | 用于日志的类似 SQL 的查询语言 |
lnav | 日志文件导航器 | 搜索、过滤、语法高亮 |
| 工具 | 描述 | 主要功能 |
|---|---|---|
GoAccess | 实时 Web 日志分析器 | 终端 UI,HTML 报告生成 |
ngxtop | Nginx 的实时指标 | 类似 SQL 的查询语言,类似 top 的界面 |
本节介绍使用监控和诊断工具来识别和解决常见系统问题的典型工作流程。
htop 或 glances 来概览系统资源使用情况strace 观察系统调用或 lsof 检查文件句柄perf-tools 或 sysdig 进行更深入的性能分析Valgrind 进行内存泄漏或效率分析FlameGraph 以可视化跨调用堆栈的 CPU 消耗来源:README.md310-311 README.md300-308 README.md316
bmon 或 iptraf-ng 观察网络流量模式tcpdump 或 tshark 捕获相关的网络数据包Termshark 分析数据包以获取特定协议信息lsof 识别哪些进程拥有特定的网络连接iperf3 测试系统之间的网络吞吐量来源:README.md191-193 README.md182-185 README.md193
lnav 导航和搜索相关日志angle-grinder 来切片和提取日志中的模式GoAccess 或 ngxtop 分析请求模式监控和诊断工具与其他系统组件集成,以提供全面的可观测性
图示:与系统组件的集成
来源:README.md300-321 README.md191-193 README.md326-330
来源:README.md299-322 README.md324-331
有效的监控和诊断对于维护系统健康和快速解决问题至关重要。本文档介绍的工具为系统管理员提供了一套全面的工具集,用于观察、分析和诊断所有组件的系统行为。