CentOS 5.8 上安装 SystemTap-2.6

最近为了分析公司的一个 nginx + lua 的应用性能,正好需要用到春神的那套 nginx-lua 的分析脚本,,因此就立马去搭建下

环境:

依赖项:

systemtap-2.6 依赖于 elfutils

注:CentOS 5.8 上面安装 systemtap-2.6 的时候,elfutils 的版本不能太高,不然会报错,安装 systemtap-2.6 失败,目前使用的版本是 elfutils-0.149

该文的前提是你已经编译安装好了支持 lua 的 nginx 版本,以及你已经安装好了 systemstap 所需的你对应操作系统的 kernel-debug-debuginfo 和 kernel-debuginfo-common,这个版本必须和你的系统的内核版本一模一样,一个字符不一样都不行,查看版本的方法是:

[apps@TEST-APP-011 ~]$ uname -r2.6.18-308.el5

所以我对应的版本是:

kernel-debug-debuginfo-2.6.18-308.el5.x86_64.rpmkernel-debuginfo-common-2.6.18-308.el5.x86_64.rpm

具体的安装步骤可以参考官方文档。

下载安装所需的软件下载 systemtap-2.6cd /tmp/ && wget https://sourceware.org/systemtap/ftp/releases/systemtap-2.6.tar.gz –no-check-certificate下载 elfutils-0.149cd /tmp && wget https://Fedorahosted.org/releases/e/l/elfutils/0.149/elfutils-0.149.tar.bz2 –no-check-certificate安装 systemtap-2.6

解压 elfutils-0.149

cd /tmp/ && tar -xvf elfutils-0.149.tar.bz2

解压 systemtap-2.6

cd /tmp && tar -zxvf systemtap-2.6.tar.gz

安装 systemtap-2.6

编译

cd /tmp/systemtap-2.6 && ./configure –prefix=/opt/stap –disable-docs –disable-publican –disable-refdocs CFLAGS=”-g -O2″ –with-elfutils=/tmp/elfutils-0.149

安装

make -j8 && make install

做软连接

sudo ln -snf /opt/stap/bin/stap /usr/bin/stap

验证命令

stap -VSystemtap translator/driver (version 2.6/0.149, non-git sources)Copyright (C) 2005-2014 Red Hat, Inc. and othersThis is free software; see the source for copying conditions.enabled features: LIBRPM LIBSQLITE3 NSS BOOST_SHARED_PTR TR1_UNORDERED_MAP NLS LIBXML2

注:有时候运行 stap -V 命令的时候会出错,错误如下:

stap: /usr/lib64/libelf.so.1: version `ELFUTILS_1.5′ not found (required by stap) stap: /usr/lib64/libdw.so.1: version `ELFUTILS_0.138′ not found (required by stap) stap: /usr/lib64/libdw.so.1: version `ELFUTILS_0.142′ not found (required by stap) stap: /usr/lib64/libdw.so.1: version `ELFUTILS_0.143′ not found (required by stap) stap: /usr/lib64/libdw.so.1: version `ELFUTILS_0.149′ not found (required by stap)

解决办法是,执行如下命令:

//查看 stap 的安装路径[apps@TEST-APP-011 ~]$ eu-readelf -d /usr/bin/stap|grep -E “RPATH|RUNPATH” RPATHLibrary rpath: [/opt/stap/lib/systemtap] RUNPATHLibrary runpath: [/opt/stap/lib/systemtap]// 加入环境变量export LD_LIBRARY_PATH=/opt/stap/lib/systemtap:$LD_LIBRARY_PATH使用春神的脚本

下载脚本:

git clone https://github.com/openresty/nginx-systemtap-toolkit.git

拿其中的一个脚本校验,结果如下:

sudo ./ngx-req-distr -c -m (/opt/nginx-lua/sbin/nginx)…worker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs, 15 connsworker reqs, 106 connsworker reqs, 0 connsworker reqs, 0 connsworker reqs,74 connsworker reqs, 0 connsworker reqs, 96 connsworker reqs, 213 connsworker reqs, 165 connsworker reqs, 14297 connsworker reqs, 247 connsworker reqs, 622 connsworker reqs, 249 connsworker reqs, 0 conns软件来源地址

本文永久更新链接地址:

经受雨,面对另一个轮回。

CentOS 5.8 上安装 SystemTap-2.6

相关文章:

你感兴趣的文章:

标签云: