第 12 章 SystemTap

SystemTap 是跟踪和探测工具,允许用户监控整个系统的活动,而无需检测、重新编译、安装和重新引导。它可以通过自定义脚本语言进行编程,该语言可为其提供表达性(追踪、过滤和分析),并到达 (查找正在运行的内核和应用程序)。

SystemTap 可以监控各种类型的事件,如内核或应用程序中的函数调用、计时器、追踪点、性能计数器等。某些包括的示例脚本会生成与 netstatpstopiostat 类似的输出,其他脚本包括用于解决安全问题的广泛打印函数调用图形或工具。

Red Hat Developer Toolset 带有 SystemTap 4.5。此版本比 Red Hat Developer Toolset 中包含的版本更新,提供多个程序错误修复和增强。

表 12.1. 红帽开发人员工具集通过 SystemTap 分发的工具

Name描述

stap

将指令转换为 C 代码,构建内核模块并将其加载到正在运行的 Linux 内核中。

stapdyn

SystemTapDyninst 后端。

staprun

从使用 stap 实用程序构建的内核模块加载、卸载、附加和分离。

stapsh

作为 SystemTap 的远程 shell。

stap-prep

确定 和-if possible-downloads 运行 SystemTap 所需的内核信息软件包。

stap-merge

合并每个 CPU 文件。当使用 -b 命令行选项执行 stap 实用工具时,该脚本会自动执行。

stap-report

收集系统的重要信息,以报告 SystemTap 中的错误。

stap-server

编译服务器,用于侦听来自 stap 客户端的请求。

12.1. 安装 SystemTap

在红帽 Developer Toolset 中,devtoolset-11-systemtap 软件包提供 SystemTap,并自动安装 devtoolset-11-perftools,如 第 1.5 节 “安装 Red Hat Developer Toolset” 所述。

为了将工具放入 Linux 内核,SystemTap 可能还需要使用调试信息安装附加软件包。要确定要安装的软件包,请运行 stap-prep 工具,如下所示:

$ scl enable devtoolset-11 'stap-prep'

请注意,如果您以 root 用户身份执行此命令,实用程序会自动提供用于安装的软件包。有关如何在系统中安装这些软件包的更多信息,请参阅 Red Hat Enterprise Linux 7 SystemTap 开始使用指南