生产 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 内核ftraceuprobes 支持有什么区别?)

我最初的反应是询问此用户是否尝试有效使用 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 目前正在与 SysdigSystemTap 合作,这应该意味着什么。

【讨论】:

以上是关于生产 Linux 系统(RH/CentOS 和 Debian/Ubuntu)中系统级跟踪的状态如何?的主要内容,如果未能解决你的问题,请参考以下文章

Linux服务器的配置和数据迁移方案资料分享

Linux运维一:生产环境CentOS6.6系统的安装

某企业生产系统升级Linux系统及内核

企业生产环境不同业务linux系统分区方案

Linux系统shell脚本编程——生产实战案例

CentOS(5.8/6.4)linux生产环境若干优化实战