DTraceでトラブルシューティング:OpenSolarisで始めるブログサーバ構築(最終回)(4/4 ページ)
この連載では、サーバOSとして十数年発展してきた「Solaris」をオープンソース化した「OpenSolaris」を紹介し、ブログサーバ「Roller」と組み合わせて運用していくうえで有用なさまざまな知識を紹介していきます。(編集部)
拡張可能な「DTraceツールキット」
DTraceには汎用的に使えるDスクリプト言語が含まれており、OpenSolarisでは、DTrace学習や利用の参考としてツールキット(Dスクリプト・サンプル)も提供されています。これらのツールキットは、管理ツールとしてそのまま実行可能で、システム管理者やプログラム開発者にとって重宝するものです。
最新のツールキットはhttp://opensolaris.org/os/community/dtrace/dtracetoolkit/からダウンロード可能です。解凍してインストールすると、すべてのサンプルスクリプトとツールが/opt/DTT/の下に置かれます。/opt/DTT/以下の各ディレクトリとその概要を以下に示します。
ディレクトリ名 | 概要 |
---|---|
Bin/ | すべてのスクリプトへのシンボリックリンク |
Apps/ | アプリケーション固有のスクリプトサンプル |
Cpu/ | CPU解析用のスクリプト |
Code/ | 練習用サンプルコード |
Disk/ | ディスクI/O解析用スクリプト |
Docs | このツールキットのドキュメント |
Examples/ | 各スクリプトの使用例集 |
Include/ | Dスクリプト用includeファイル |
Java/ | Javaトレース用スクリプトサンプル |
JavaScript/ | JavaScriptトレース用スクリプトサンプル |
Kernel/ | カーネル解析用スクリプトサンプル |
Locks/ | ロック解析用スクリプトサンプル |
Man/ | DTraceツールキットのmanページ |
Mem/ | メモリ解析用スクリプトサンプル |
Misc/ | そのほかのスクリプト |
Net/ | ネットワーク解析用スクリプトサンプル |
Notes/ | DTraceツールキットのノート |
Perl/ | Perlトレース用スクリプトサンプル |
Php/ | PHPトレース用スクリプトサンプル |
Proc/ | プロセス解析用スクリプトサンプル |
Python/ | Pythonトレース用スクリプトサンプル |
Ruby/ | Rubyトレース用スクリプトサンプル |
Shell/ | シェル言語トレース用スクリプトサンプル |
Snippits/ | D言語用材料集 |
System/ | システム解析用スクリプトサンプル |
Tcl/ | Tclトレース用スクリプトサンプル |
User/ | ユーザーベースの活動分析用スクリプトサンプル |
Zones/ | Zone解析用スクリプトサンプル |
表1 DTraceツールキット |
中でも、特に便利でよく使われるDTraceツールは、/opt/DTT/ディレクトリ下に直接置かれています。概要は以下のとおりです。
ツール名 | 概要 |
---|---|
dexplorer | system explorerのDTrace版。system情報のコレクションを取って、指定したディレクトリにgzipアーカイブファイルとして記録します。アーカイブファイルはシステム診断の情報として利用されます |
dtruss | DTrace版のtruss(1)。内容はtruss(1)簡易版ですが、Dスクリプトの参考として有効です |
dvmstat | DTrace版のvmstat(1M)。-p PID指定でPIDごとのVM情報が取れます |
errinfo | sytemのerror messageを表示します |
execsnoop | このコマンド起動以降にシステム上で起動された実行プログラムを表示します |
hotkernel | カーネルレベルのfunctionあるいはmoduleの使用頻度を表示します |
hotuser | 特定PIDにおけるユーザーレベルのfunctionまたはlibraryの使用頻度を表示します |
iopattern | DiskのI/Oアクセスのパターンを出力します |
iosnoop | Disk I/Oアクセスのすべてのイベントを出力します |
iotop | プロセスごとのDisk I/Oイベントを表示します |
opensnoop | このコマンド起動以降にopenされたファイルをすべて表示します。特定ファイルの監視も可能です |
procsystime | あるプロセスのシステムコール時間をすべて表示します |
rwsnoop | すべてのread/writeイベントを表示します |
rwtop | プロセスごとのread/writeイベントを表示します |
statsnoop | file statのsnoopを行います |
表2 /opt/DTT/ディレクトリ下の主要なツール |
DTraceの可能性
今回はDTraceによるトラブルシューティングの例を紹介しました。「かゆいところに手が届く」DTraceの可能性をご理解いただけましたでしょうか。
DTraceはまだまだ発展途上にあります。ユーザーがより簡単に、また、作成したDスクリプトで安定してトレースが行えるように、より安定したDTraceプロバイダの提供が待たれています。
OpenSolarisでは、Solaris 10以降の拡張として、XOrg、PostgreSQL、Java、JavaScript、Mozilla、PHP、Ruby、NFS、iSCSIなどにプロバイダの対応が広がりました。さらに、Network(tcp/ip)やxpv(xVM)プロバイダ対応も予定されており、今後の拡張が期待されています。
連載の最後に
7回にわたって「OpenSolarisでサーバ構築」を連載してきました。この連載は、ブログサーバの導入と運用というテーマで、具体的な設定手順や運用方法を解説しながらOpenSolarisプロジェクトやOpenSolaris上の特徴的な機能を紹介しています。
今回連載したブログサーバ構築は、サーバ構築の一例にしかすぎませんが、OpenSolarisの特徴的な機能が、サーバ構築に有効に働くことを説明しました。
オープンソースのOpenSolarisプロジェクトが発足して、約3年がたちました。ソースコードや仕様、バグなどの情報のオープン化は進み、誰もが自由に参加できるセミナーやメーリングリストによるディスカッションなど、OpenSolarisのコミュニティは、ますます盛んになっています。
また、本稿連載中に重要な進展もありました。連載第1回で「Project Indiana」として紹介されたOpenSolarisの新しいバイナリ・ディストリビューションも、「OpenSolaris 2008.05」という正式名称で、ユーザー用の新しいポータルサイト「opensolaris.com」から配布が開始されました。
本連載が、OpenSolarisを始める方やサーバ構築のために少しでも手助けになれば幸いです。
Copyright © ITmedia, Inc. All Rights Reserved.