第22章 自動バグ報告ツール (ABRT)

通常 ABRT と短縮される 自動バグ報告ツール は、abrtd というデーモンや検出された問題を処理、分析、報告する数多くのシステムサービスおよびユーティリティで構成されています。デーモンはほとんどの場合、バックグラウンドで静かに実行されていて、アプリケーションがクラッシュしたり、カーネル oops が検出されると迅速に作動します。そして、コアファイル (存在する場合) やクラッシュしたアプリケーションのコマンドラインパラメーター、フォレンシックユーティリティのその他のデータなど、関連する問題データを収集します。ABRT の最重要コンポーネントについての概要は、表22.1「基本的な ABRT コンポーネント」 を参照してください。

ABRT バージョン 2.0 への移行

Red Hat Enterprise Linux 6.2 では、自動バグ報告ツールがバージョン 2.0 にアップグレードされました。ABRT 2 シリーズでは、自動バグ検出/報告機能が大幅に改善されています。

表22.1 基本的な ABRT コンポーネント

コンポーネント パッケージ 詳細
abrtd abrt root ユーザー下でバックグラウンドサービスとして実行される ABRT デーモン。
abrt-applet abrt-gui 新しい問題発生時に abrtd からメッセージを受けてユーザーに通知するプログラム。
abrt-gui abrt-gui 収集した問題データを表示して、ユーザーが処理できるようにする GUI アプリケーション。
abrt-cli abrt-cli GUI と同様の機能を提供するコマンドラインインターフェース。
abrt-ccpp abrt-addon-ccpp C/C++ 問題のアナライザーを提供する ABRT サービス。
abrt-oops abrt-addon-kerneloops カーネル oops のアナライザーを提供する ABRT サービス。
abrt-vmcore abrt-addon-vmcore カーネルのパニックアナライザーおよびレポーターを提供する ABRT サービス。

ABRT は現在、C/C++ および Python 言語で書かれたアプリケーションのクラッシュならびにカーネル oops の検出をサポートしています。Red Hat Enterprise Linux 6.3では、追加の abrt-addon-vmcore パッケージがインストールされていて kdump クラッシュダンピングメカニズムがそれに応じてシステム上で有効化、設定されていると、ABRT は カーネルパニックも検出できます。
ABRT は、リモートの問題トラッカーに問題を報告することができます。レポーティングは、問題が検出された時には常に自動的に報告するようするか、問題データをローカルに保管してユーザーが手動でレビュー/報告/削除を行うように設定することが可能です。 レポーティングツールは、問題データを Bugzilla データベースや Red Hat Technical Support (RHTSupport) サイトに送信できる他、FTP/SCP を使用したアップロード、電子メールでの送信、ファイルへの書き込みなどにも対応しています。
既存の問題データを処理する ABRT の部分は (新規問題データ作成などとは対照的に)、libreport という別のプロジェクトで対応することになりました。libreport ライブラリは問題の分析/報告のための包括的メカニズムを提供し、ABRT 以外のアプリケーションで使用されますが、ABRTlibreport の操作と設定は綿密に統合されているため、本ガイドでも取り上げています。
問題が検出されると、ABRT はその問題を既存の問題データと比較し、同じ問題が記録されているかどうかを確認します。記録されている場合には、その既存の問題データが更新され、最新の (重複している) 問題は再度記録されません。この問題が ABRT で認識されない場合は、problem data directory (問題データディレクトリ) が作成されます。問題データディレクトリは、通常、以下のようなファイルで構成されます: analyzerarchitecturecoredumpcmdlineexecutablekernelos_releasereasontimeuid
分析中には、backtrace など、上記以外のファイルが作成される場合があります。これは、使用するアナライザーメソッドやその設定によって異なります。これらのファイルには、それぞれシステム及び問題自体についての固有の情報が格納されます。例えば、kernel ファイルには、クラッシュしたカーネルのバージョンが記録されます。
問題ディレクトリが作成され、問題データが収集された後、 ABRT GUI もしくは コマンドラインの abrt-cli ユーティリティを使ってその問題をさらに処理、分析、レポートすることができます。これらのツールについての詳細は、それぞれ 「グラフィカルユーザーインターフェイスの使用」「コマンドラインインターフェイスの使用」 を参照してください。

レポートユーティリティはサポート対象外です

検出された問題のさらなる分析やレポートに ABRT を使わずに、レガシーの問題報告ツールである report を使って問題を報告している場合は、新たなバグの提出ができなくなっていることに注意してください。report ユーティリティは現在、RHTSupport または Bugzilla データベースにある既存バグを新たなコンテンツにアタッチすることにしか使えません。以下のコマンドで実行します。
 report [[-v]] --target TARGET --ticket ID FILE 
ここでは TARGET は RHTSupport にレポートする strata または Bugzilla レポートする bugzilla となります。ID は各データベースの既存問題ケースを識別する番号で、FILE はその問題ケースに追加する情報を含んでいるファイルとなります。
新たな問題をレポートする際に abrt-cli を使いたくない場合は、report の代わりに report-cli ユーティリティをつかうことができます。以下のコマンド発行で report-cli が問題報告プロセスをガイドしてくれます。
 report-cli -r DUMP_DIRECTORY 
ここでは DUMP_DIRECTORY は、ABRT または libreport を使用する他のアプリケーションが作成した問題データディレクトリです。report-cli に関する詳細情報は、man report-cli を参照してください。

22.1. ABRT のインストールとサービスの起動

ABRT を使用するには、まず最初に、root ユーザーとして以下のコマンドを実行し、abrt-desktop パッケージをシステムに確実にインストールします:
~]# yum install abrt-desktop
abrt-desktop をインストールした場合は、グラフィカルインターフェースのみで ABRT を使用することができます。ABRT をコマンドラインで使用する場合には、abrt-cli パッケージをインストールして下さい:
~]# yum install abrt-cli
Yum パッケージマネージャーでパッケージをインストールする方法については、「パッケージのインストール」 を参照してください。
次のステップは、abrtd が稼働していることを確認することです。このデーモンは通常、ブート時に起動するように設定されています。以下のコマンドを root ユーザーとして使用すると、このデーモンの現在の状態を確認できます:
~]# service abrtd status
abrtd (pid 1535) is running...
service コマンドは、デーモンが稼働していない場合には abrt is stopped (abrt は停止しています) と報告します。現行セッションでこのデーモンを起動するには、以下のコマンドを入力します:
~]# service abrtd start
Starting abrt daemon:                                      [  OK  ]
また、ABRT で C/C++ クラッシュを検出するには、上記と同じ手順に従って abrt-ccpp サービスを確認/開始することができます。ABRT がカーネル oops を検出するように設定するには、同じ手順を abrt-oops サービスに使用します。システム障害や、システムが反応しなくなったり、即座に再起動するような状態にするカーネル oops は、このサービスではキャッチできない点に注意して下さい。ABRT でそのようなカーネルを検出できるようにするには、abrt-vmcore サービスをインストールする必要があります。この機能が必要な場合は、詳細情報について 「カーネルパニックを検出する ABRT の設定」 を参照してください。
ABRT パッケージをインストールする際には、各 ABRT サービスは自動的に runlevels 3 and 5 で有効化されます。ABRT サービスの無効化と有効化、有効時のランレベルの設定は chkconfig ユーティリティでできます。詳細情報については、「chkconfig ユーティリティの使用」 を参照してください。

ABRT のインストールは core_pattern を上書きします

ABRT をインストールすると、コアダンプファイルの命名に使用するテンプレートを含む /proc/sys/kernel/core_pattern ファイルを上書きすることに注意してください。このファイルのコンテンツは、以下のように上書きされます。
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
最後に、グラフィカルデスクトップ環境で ABRT を実行している場合、以下の方法で ABRT notification applet (通知アプレット) が稼働していることを確認できます。
~]$ ps -el | grep abrt-applet
0 S   500  2036  1824  0  80   0 - 61604 poll_s ?        00:00:00 abrt-applet
ABRT 通知アプレットが稼働していない場合には、以下のように abrt-applet プログラムを実行すると、現行のデスクトップセッションでアプレットを手動で起動することができます:
~]$ abrt-applet &
[1] 2261
このアプレットは、グラフィカルデスクトップセッションの開始時に自動的に起動するように設定することができます。トップパネルのシステム設定自動起動するアプリ メニューを選択することで、ABRT 通知アプレットをプログラムの一覧に追加し、システムの起動時に実行されるように選択することができます。
ABRT 通知アプレットを自動的に実行するための設定

図22.1 ABRT 通知アプレットを自動的に実行するための設定