systemtap 是什么,看百度百科如何说的。SystemTap 是监控和跟踪运行中的Linux 内核的操作的动态方法。这句话的关键词是动态,因为SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。
实现方式:Kprobes 的应用编程接口(API)
必要软件:kernel-debuginfo、elfutilsRPM
作 用:监控和跟踪运行中的Linux内核
运行条件:root权限
相似技术:DTrace
上面已经说的比较清楚了,是通过Kprobes 实现的,可以监控和跟踪运行中的linux内核。 至于具体的用法下篇再整理下,这里单独说安装。
[root@localhost ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
[root@localhost ~]#
[root@localhost ~]# uname -ra
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
以下均用root权限去操作。
1、安装rpm包
yum install -y systemtap systemtap-runtime
2、安装之后可以使用stap-prep 安装对应的依赖
我们看下这个工具的描述
stap-prep - prepare system for systemtap use
执行该命令会自动的去下载和安装 stap 所需要的依赖,当然如果不能自动安装的话,该命令也会告诉你具体的依赖文件,手动安装即可
[root@localhost ~]# stap-prep
3、手动安装必要的内核信息包
kernel-debuginfo
kernel-debuginfo-common
kernel-devel
去对应的网站下载即可(下面的几个应该都可以下载):
http://mirror.facebook.net/centos-debuginfo/
http://linuxsoft.cern.ch/centos-debuginfo/
https://ftp.sjtu.edu.cn/scientific/7/archive/debuginfo/
ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/7.0/
4、运行测试SystemTap
[root@localhost ~]# stap -e 'probe begin{printf("Hello, World"); exit();}'
Hello, World
5、错误情况
如果比较顺利的话,后面的就不需要看了
① 如果安装的systemTap版本不是自己想要的,或者说默认的有问题的话,可以建议手动安装
下载地址:https://sourceware.org/systemtap/wiki/SystemTapReleases
安装很简单,不做详细介绍了:
tar -zxvf XX.tar.gz
cd XX
make
make install
执行结束后,执行文件在 _install/bin/ 下面
② 如果提示 时间 对不上
修改vim /usr/src/kernels/3.10.0-693.el7.x86_64/include/generated/compile.h
中的UTS_VERSION ,修改为正确的,再尝试运行 或 重现编译安装stap
使用stap -V 可以查看具体的版本号,如果是自己安装的话,版本号还是之前的没有替换掉,就使用ln 重新链接下
ln -s /root/systemtap-4.7/_install/bin/stap /usr/bin/stap
参考:https://www.cnblogs.com/wipan/p/9333623.html