菜单

监控和诊断

相关源文件

本文档详细介绍了系统监控、诊断工具和日志分析资源,面向系统管理员、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
atopASCII 性能监视器记录历史数据,提供详细的每进程统计信息
nmon用于性能监控的单一可执行文件收集数据用于后续分析,提供图形工具

来源:README.md310-314

磁盘使用率分析器

工具描述主要功能
ncduNCurses 磁盘使用情况交互式导航,磁盘使用率排序

来源:README.md163

网络监控工具

网络监控工具提供对网络流量、带宽使用情况和网络接口状态的可见性。

工具描述主要功能
bmon带宽监视器和调试工具实时图形,多接口监控
iptraf-ng基于控制台的网络监控IP 流量统计,接口统计
vnstat网络流量监视器数据库驱动,跟踪一段时间内的流量
tcpdump数据包分析器捕获和显示数据包,提供过滤选项
tsharkWireshark 的命令行版本协议分析,数据包检查
Termsharktshark 的终端 UI数据包分析的用户友好界面

来源:README.md191-193 README.md182-185

系统诊断和调试工具

诊断工具允许更深入地检查系统行为,包括跟踪系统调用、分析内存使用情况和剖析应用程序性能。

图示:诊断工具工作流程

来源:README.md300-309 README.md315-322

跟踪工具

跟踪工具允许系统管理员观察应用程序和内核的执行流程

工具描述用例
strace跟踪系统调用和信号诊断系统调用失败,理解应用程序行为
ltrace库调用跟踪器跟踪对库函数的调用
ptrace-burritoptrace 的友好封装扩展了 ptrace 的功能,使用更简便
bpftraceeBPF 的高级跟踪语言创建自定义跟踪工具,性能分析
DTrace动态跟踪框架全面的性能分析和故障排除

来源:README.md300-304 README.md306

性能分析工具

性能分析工具帮助识别瓶颈和性能问题

工具描述主要功能
perf-tools性能分析工具基于 Linux perf_events 和 ftrace
sysdig系统探索和故障排除容器感知的系统可见性
Valgrind插桩框架内存错误检测,缓存和分支预测分析
gperftoolsGoogle 性能工具高性能 malloc 实现,CPU 剖析器
FlameGraph堆栈跟踪可视化器跨代码路径的 CPU 使用情况可视化
Performance Co-Pilot系统性能分析工具包分布式监控,历史数据收集

来源:README.md305-308 README.md315-319

调试工具

专门用于调试应用程序和检查系统状态的工具

工具描述主要功能
rr记录和重放调试记录执行并重放以进行确定性调试
lsof列出打开的文件显示进程打开的文件、网络连接
lsofgraph从 lsof 输出生成图形可视化进程间通信
hexyl命令行十六进制查看器带颜色高亮的二进制文件检查
AustinPython 帧堆栈采样器低开销地分析 Python 应用程序

来源:README.md315-318 README.md320-321

日志分析工具

日志分析工具有助于解析、搜索和可视化来自各种来源的日志数据,从而更容易识别模式、错误和异常。

图示:日志分析工作流程

来源:README.md326-331

通用日志分析工具

工具描述主要功能
angle-grinder日志切片和切块工具用于日志的类似 SQL 的查询语言
lnav日志文件导航器搜索、过滤、语法高亮

来源:README.md327-328

Web 服务器日志分析工具

工具描述主要功能
GoAccess实时 Web 日志分析器终端 UI,HTML 报告生成
ngxtopNginx 的实时指标类似 SQL 的查询语言,类似 top 的界面

来源:README.md329-330

常见的监控工作流

本节介绍使用监控和诊断工具来识别和解决常见系统问题的典型工作流程。

系统性能调查

  1. 初步观察:使用 htopglances 来概览系统资源使用情况
  2. 识别高资源消耗进程:查找占用过多 CPU 或内存的进程
  3. 详细进程分析:使用 strace 观察系统调用或 lsof 检查文件句柄
  4. 性能剖析:应用 perf-toolssysdig 进行更深入的性能分析
  5. 内存分析:使用 Valgrind 进行内存泄漏或效率分析
  6. 可视化:生成 FlameGraph 以可视化跨调用堆栈的 CPU 消耗

来源:README.md310-311 README.md300-308 README.md316

网络流量排查

  1. 初步监控:使用 bmoniptraf-ng 观察网络流量模式
  2. 数据包捕获:使用 tcpdumptshark 捕获相关的网络数据包
  3. 数据包分析:使用 Termshark 分析数据包以获取特定协议信息
  4. 服务关联:使用 lsof 识别哪些进程拥有特定的网络连接
  5. 性能测试:使用 iperf3 测试系统之间的网络吞吐量

来源:README.md191-193 README.md182-185 README.md193

基于日志的故障排除

  1. 日志初步审查:使用 lnav 导航和搜索相关日志
  2. 模式提取:使用 angle-grinder 来切片和提取日志中的模式
  3. Web 服务器分析:对于 Web 服务器,使用 GoAccessngxtop 分析请求模式
  4. 关联性分析:将日志条目与监控工具中观察到的系统事件和资源使用情况进行关联
  5. 自动化:为重复的模式创建警报或仪表板

来源:README.md327-330

与其他组件的集成

监控和诊断工具与其他系统组件集成,以提供全面的可观测性

图示:与系统组件的集成

来源:README.md300-321 README.md191-193 README.md326-330

  1. 建立基线:记录正常的运行参数,以便更好地识别异常
  2. 定期监控:设置计划性监控以早期发现问题
  3. 性能测试:定期测试系统性能以识别性能下降
  4. 日志轮转:实施适当的日志轮转以防止磁盘空间问题
  5. 资源限制:为应用程序设置适当的资源限制
  6. 工具选择:为您的特定环境和需求选择合适的工具
  7. 自动化:尽可能自动化例行的监控和诊断任务
  8. 文档记录:记录常见问题及其解决步骤

来源:README.md299-322 README.md324-331

结论

有效的监控和诊断对于维护系统健康和快速解决问题至关重要。本文档介绍的工具为系统管理员提供了一套全面的工具集,用于观察、分析和诊断所有组件的系统行为。

有关安全监控工具的更多信息,请参阅 安全分析与监控,有关网络特定工具,请参阅 网络 页面。

来源:README.md299-331