监视、跟踪和分析之间有什么区别?

Ric*_*ard 16 monitoring performance-monitoring trace

我经常看到这三个词出现,但不明白它们之间的确切区别。例如,收集 CPU 利用率通常称为分析,也可以归入性能监控。它们之间的(细微)区别是什么?

Bil*_*hor 12

这就是我使用这些词的方式。其他人可能有额外的或不同的用途。根据手头的工作,我会以不同的方式使用这些术语。开发团队和运营团队有不同的需求和用法。

监控就是监控。通常它是持续的,最好是自动化的。开源工具MuninNagios以及MRTG属于这一类。还有很多商业工具。我还将sar连续运行包括在此类别中,但通常不会监控其结果。监控工具可用于在受监控资源高于或低于触发级别时触发警报。许多监控工具在异构环境中运行良好。

分析通常在特定程序上进行,以查看哪些代码使用了最多的资源。这通常是 CPU 时间,但也可以包括内存、I/O 和执行(墙)时间。它通常用于识别优化的候选代码。分析工具往往依赖于语言和/或平台。

另一种分析是使用日志和/或监控数据完成的。这是使用分析,可以出于多种原因进行。我还没有找到很多工具来做到这一点。

我以几种不同的方式使用跟踪。最常见的是,我跟踪网络路由。根据网络和防火墙设置,可以使用各种工具或多或少地成功。其中大多数在其名称或描述中都有 traceroute。

程序跟踪是跟踪程序的执行。这通常是在测试情况下完成的。这可以通过多种方式完成(按照我的使用和经验顺序):

  • 使用工具strace进行调用跟踪,例如查看调用了什么代码。这对于确定程序失败或未按预期响应的原因很有用。
  • 跟踪级别日志记录,这取决于代码中包含的适当日志记录语句。大多数日志套件都支持这种详细程度。跟踪级别的日志记录往往具有较差的代码覆盖率。我通常根据需要添加它并将其保留在代码中以备将来使用。
  • 代码覆盖跟踪记录了测试套件中执行了哪些代码部分。这对于确定丢失的测试用例很有用。很难获得 100% 的代码覆盖率。正常流量的 100% 覆盖应该是可以实现的。
  • 桌面检查:通过阅读代码来跟踪代码。在较大的程序上不是很有用,但这是识别单元测试边缘情况的好方法,和/或在可能的来源被缩小时识别可能的问题。Som=e IDE 和编辑器使跟踪对实现代码的调用变得相对容易。
  • 现场调试;使用调试器在代码运行时跟踪代码执行。可以逐条指令跟踪执行指令,但如果问题是时序问题,则可能会被掩盖。可以将代码链接到当前指令的调试器有很大帮助,但可能需要构建程序的调试版本。