1、インストールSystemTapの
事実は、メインはカーネルプロービングツールSystemTapのをインストールすることです。(SystemTapのカーネルモジュールにコンパイルされたC言語への文を翻訳することによって、スクリプト。モジュールのロード後に、実行されているLinuxシステムに関する収集情報に時間処理機構に基づいて)
yumを-utilsの#yumをインストール
#yumのカーネル-develのインストール
DEBUGINFOインストールカーネル#を
YUMのSystemTapをインストールする#を
、第3のステップは、インストールが失敗している、手動でパッケージカーネルの開発とデバッグパッケージをインストールします。
カーネルのバージョン番号を表示します
公式のパッケージをダウンロードします
#wget "http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-($version).rpm"
#wget "http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-common-($version).rpm"
#rpm -ivhカーネルのdebuginfo - ($バージョン)の.rpm
#rpm -ivhカーネルのdebuginfo-共通 - ($バージョン)の.rpm
次のコマンドを入力してテストを完了した後、
#stap -ve 'プローブは、{ログを(始めの"Hello World")の出口()}'
のインストールが成功した場合は、
2、下载openresty-SystemTapのツールキット
#gitクローンhttps://github.com/openresty/nginx-systemtap-toolkit.git
openresty内で使用することができないだけでSystemTapのにツールをプロービングするだけでカーネルを知るために、あなたは仕事に独自のスクリプトを記述する必要がポイントを埋めます。しかし、チョンはスクリプトの数にopenresty-SystemTapのツールキットで提供されていますが、私たちは直接、良いと引き継ぐすべての後、私は書きませんが、直接使用することができます。
3、ダウンロードFlameGraph
#gitクローンhttps://github.com/brendangregg/FlameGraph.git
我々はFlameGraphを使用する必要がありますので、これらのスクリプトの後に上記openresty-SystemTapのツールキットを使用して、実際には、我々はすでに、まだ直感的ではない、我々は必要な情報を得ることができますが、図火炎生成ツールは、視覚画像を生成します。
4、の例使用して
、我々は、特定のプロセスを検索したいnginxの監視を。
#Psの- efの|はgrepのnginx
b.ngx-サンプルLUA-BTクロールスタック情報(このツールは機能の行に対応するファイルの場合で見ることができる)
、ここで私はopenresty-SystemTapのツールキットの上にダウンロードされ、FlameGraphは、内部に行くために、環境変数を追加しましたA。だから、ライン上で直接コマンドを入力します。
#NGX-サンプルワーク-BT -p 12322 --luajit20 -t 20 -u> temp.bt
-Pプロセスidパラメータは、クロールを表し、-tは時間を秒単位で検出することで、-uユーザは、カーネル空間に対応する出力、temp.btに検出結果が-k表し、クロール・スペースを示します
C。(対応する直接機能LUAを参照)より優しい点にファイル上記で得られたFIX-LUA-BTを使用
a.bt> Luaの-BT-FIX temp.bt
画像SVGにファイルを変換するには、次の2つのコマンドを使用してD. FlameGraph
a.bt stackcollapse-stap.pl> a.cbt
flamegraph.pl a.cbt> a.svg
その後、オープンa.svgはあなたが炎に計画を見ることができます。
5、ピット上のステップ:
$ ./Ngx-sample-lua-bt -p 12322 --luajit20 -t 5> temp.bt
警告:見つけることができないモジュール/usr/local/openresty/luajit/lib/libluajit-5.1.so.2.1.0のdebuginfo:DWARF情報は見つかりませんでした[男性警告を::のdebuginfo]
WARNING:バッド$コンテキスト変数はリテラル0で置換されている:識別子<入力>で、 '$ L':17:30
ソース:lua_states [my_pid] = $ L
セマンティックエラー:「/usr/local/openresty/luajit/lib/libluajit-5.1.so.2.1.0」には見られないタイプの定義「TValue」:演算子「@cast」での:62:12
ソース:リターン@cast(tvalue、 "TValue"、「/usr/local/openresty/luajit/lib/libluajit-5.1.so.2.1.0")->fr->tp->ftsz
2パス:分析に失敗しました。[男のエラー::パス2]
同様の警告メッセージの数が抑制さ:100。
それらを参照するには-vで再実行してください。
その理由は、openrestyの新バージョンは、デフォルトのGC-64で有効になっていることである、およびツールは、32ビットです
ソリューション:再コンパイルとインストールopenresty、プラスコンパイラオプション--without-luajit-gc64
#mvは/ usr / local / openrestyは/ usr / local / openresty_bak
#cd / OPT
#wget https://openresty.org/download/openresty-1.15.8.2.tar.gz
#tar zxvf openresty-1.15.8.2.tar.gz
#cd openresty-1.15.8.2
。#/設定--prefix =は/ usr / local / openresty --without-luajit-gc64 --with-PCRE-JIT --withストリーム--with-http_v2_module --without-mail_pop3_module --without-mail_imap_module - なし-mail_smtp_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_secure_link_module --with-http_random_index_module --with-http_gzip_static_module --with-http_sub_module --with-http_dav_module - -http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-スレッド--with-のDTrace-プローブ--withストリーム--with-http_ssl_module
#make
インストール#make
コンパイラはエラーに依存しているのopenssl、PCREを表示された場合、依存関係のインストールは三部作再することができます。