生产 Linux 系统(RH/CentOS 和 Debian/Ubuntu)中系统级跟踪的状态如何?
Posted
技术标签:
【中文标题】生产 Linux 系统(RH/CentOS 和 Debian/Ubuntu)中系统级跟踪的状态如何?【英文标题】:What is the state of system level tracing in production Linux systems (RH/CentOS and Debian/Ubuntu)? 【发布时间】:2015-04-12 09:43:02 【问题描述】:我正在帮助开发内部云基础架构 (OpenStack),以便为我们的部门提供 AWS/Rackspace/SoftLayer/etc 的完全本地替代方案。
我的老板刚刚向我转达了一个内部客户的问题,他们要求我们支持DTrace。我知道 Oracle DTrace Project 和 dtrace4linux 以及 Linux 自己的原生 SystemTap(我记得最初是在 Linux kprobes 上构建的;但我收集到的 SystemTap 的新版本可以使用到 DTrace 或合并到 3.5 内核中的 uprobes 补丁)。我也听说过Sysdig 和LTTng 甚至fulltrace(Linux 内核ftrace
和uprobes
支持有什么区别?)
我最初的反应是询问此用户是否尝试有效使用 ltrace 并且它是 -S
选项来交错系统调用跟踪(à la strace)。
但我也想在客户回来之前了解更多。
我的第一个也是最重要的问题是:在 CentOS 6、6.5 和 7.0 上“开箱即用”(无需替换现有内核)可以使用这些不同选项中的哪一个? Ubuntu 12.04 和 14.04 LTS 版本也有同样的问题?
这些是否特别适合或特别不适合在云 VM 实例(OpenStack Nova、KVM)中使用?
这些选项是否有相当好的和最近的比较?对于他们每个人所涉及的时间和精力投资,我最好的选择是什么?
Niels Provos 在 Systrace 上的工作发生了什么事
【问题讨论】:
Brendan Gregg 在他的网站brendangregg.com/Slides/LinuxConEU2014_LinuxPerfTools.pdf 上有几个关于 linux perf/tracing 的概述,其中列出了一些跟踪器 - 幻灯片 37、47、48、65-78:“跟踪器:– perf_events、ftrace、eBPF、 SystemTap、ktap、LTTng、dtrace4linux、sysdig" 我亲眼看过 Brendan 的演讲(在 SCaLE)。这些都是极好的资源。我只是希望达成一些新的共识和整合。 【参考方案1】:恕我直言 SystemTap 对您的客户来说是一个不错的选择。我在 DTrace 和 SystemTap 上做了很多工作,不得不说 DTrace 可以实现的目标是 SystemTap 可以实现的
他们与其他工具进行了比较https://sourceware.org/systemtap/wiki/SystemtapDtraceComparison(正如预期的那样,SystemTap 是赢家)。它还向后兼容 DTrace USDT 探针。
它适用于 CentOS 6.x 和 7.x 库存内核。不能说关于 Ubuntu 的任何事情,因为我使用 Debian——工作正常,但 Debian 7 库存内核没有 uprobes。我也在Xen下用过,一切都很好。
然而,与您提到的其他工具相比,SystemTap 更复杂,因为与 Sysdig 不同,每个性能数据收集都需要编写脚本(它有示例,但不多,并且没有诸如DTrace 工具包)。 Event LTTng 项目正在开发用户友好的工具。
另外,著名的 DTrace 开发人员之一 Brendan Gregg 目前正在与 Sysdig 和 SystemTap 合作,这应该意味着什么。
【讨论】:
以上是关于生产 Linux 系统(RH/CentOS 和 Debian/Ubuntu)中系统级跟踪的状态如何?的主要内容,如果未能解决你的问题,请参考以下文章