Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第28章 自動バグレポーティングツール(ABRT)

Automatic Bug Reporting Tool は通常 ABRT として省略され、abrtd デーモンと、検出された問題を処理、分析、および報告する多数のシステムサービスおよびユーティリティーで構成されます。デーモンは、ほとんどの期間のバックグラウンドでサイレントに実行され、アプリケーションがクラッシュしたり、カーネルの oops が検出されると、springs がアクションになります。次に、デーモンは、コアファイルがある場合、クラッシュアプリケーションのコマンドラインパラメーター、フォレンジックユーティリティーのその他のデータがある場合は、コアファイルなどの関連する問題データを収集します。最も重要な ABRT コンポーネントの概要は、表28.1「ABRT の基本コンポーネント」 を参照してください。
ABRT バージョン 2.0 への移行
Red Hat Enterprise Linux 6.2 では、Automatic Bug Reporting Tool がバージョン 2.0 にアップグレードされました。ABRT 2 シリーズでは、自動バグ検出およびレポートに大きな改善が加えられています。

表28.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 カーネル oopses アナライザーを提供する ABRT サービス。
abrt-vmcore abrt-addon-vmcore[a] カーネルパニックアナライザーおよびレポーターを提供する ABRT サービス。
[a] abrt-addon-vmcore パッケージは、Optional サブスクリプションチャンネルで提供されます。Red Hat 追加チャンネルの詳細は、「Optional および Supplementary リポジトリーの追加」 を参照してください。
ABRT は現在、C/C++ 言語および Python 言語で記述されたアプリケーションにおけるクラッシュとカーネルの oops の検出をサポートしています。Red Hat Enterprise Linux 6.3 では、追加の abrt-addon-vmcore パッケージがインストールされ、kdump クラッシュダンプメカニズムが有効で、それに応じてシステムに設定した場合に、ABRT はカーネルパニックを検出することもできます。
ABRT は問題をリモートの問題トラッカーに報告できます。レポートは、問題が検出されるたびに自動的に行われるように設定したり、問題データをユーザーが手動で確認、レビュー、報告、および削除できるように設定できます。レポートツールは、Bugzilla データベースである Red Hat テクニカルサポート(RHTSupport)サイトに問題データを送信したり、FTP/SCP を使用してアップロードしたり、電子メールを行ったり、ファイルに書き込んだりすることができます。
(新規の問題データの作成などとは対照的に)既存の問題データを処理する ABRT の一部は、別のプロジェクト libreport に基づいました。libreport ライブラリーは、問題を分析および報告するための一般的なメカニズムを提供し、ABRT 以外のアプリケーションによって使用されます。ただし、ABRT および libreport 操作と設定は密接に統合されています。したがって、これらについては、本書で説明しています。
問題が検出されると、ABRT はその問題を既存の問題データと比較し、同じ問題が記録されているかどうかを判断します。存在する場合は、既存の問題データが更新され、最新の(重複している)問題は再度記録されません。この問題が ABRT で認識されない場合は、問題データディレクトリー が作成されます。問題データディレクトリーは、通常、analyzerアーキテクチャー、コアダンプ、cmdline実行可能な kernelos_release理由timeuid などのファイルで構成されます。
backtrace などの他のファイルは、分析中に使用する分析方法とその構成設定に応じて作成できます。これは、使用するアナライザーメソッドやその設定によって異なります。たとえば、kernel ファイルには、クラッシュしたカーネルのバージョンが記録されます。
問題ディレクトリーが作成され、問題データが収集されると、ABRT GUI またはコマンドラインの abrt-cli ユーティリティーを使用して問題をさらに処理し、分析し、報告することができます。これらのツールの詳細は、それぞれ 「グラフィカルユーザーインターフェースの使用」「コマンドラインインターフェースの使用」 を参照してください。
report ユーティリティーがサポート対象外になりました。
ABRT を使用して検出された問題をさらに分析して報告せず、代わりにレガシー問題レポートツールを使用して問題を報告する場合は、新しいバグを提出できないことに注意してください。report ユーティリティーを使用すると、RHTSupport または Bugzilla データベースの既存のバグに新しいコンテンツを割り当てることができます。これを行うには、次のコマンドを使用します。
 report [-v] --target target --ticket ID file 
ここでの target は、Bugzilla に報告できるように RHTSupport または bugzilla に報告するための strata です。ID は、各データベースで既存の問題のケースを特定する数字を表し、ファイル は問題のケースに追加する情報が含まれるファイルです。
新しい問題を報告し、abrt-cli を使用しない場合は、report の代わりに report-cli ユーティリティーを使用できるようになりました。以下のコマンドを実行し、report-cli で問題の報告プロセスをガイドさせます。
 report-cli -r dump_directory 
ここでの dump_directory は、ABRT が作成した問題データディレクトリー、または libreport を使用する他のアプリケーションです。report-cli の詳細は、man report-cli を参照してください。

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

この使用の前提条件として、abrtd デーモンでは、abrt ユーザーが /var/spool/abrt ディレクトリーにファイルシステム操作に存在する必要があります。abrt パッケージをインストールすると、UID と GID が 173 の abrt ユーザーが存在していない場合は自動的に作成されます。それ以外の場合は、abrt ユーザーを手動で作成できます。この場合、abrtd は特定の UID および GID を要求しないため、任意の UID および GID を選択できます。
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 メッセージを返すと、デーモンは実行していません。以下のコマンドを入力して、現行セッションで開始できます。
~]# service abrtd start
Starting abrt daemon:                                      [  OK  ]
同様に、ABRT で C/C++ のクラッシュをキャッチしたい場合は、同じ手順に従って abrt-ccpp サービスを確認し、起動することができます。ABRT がカーネル oops を検出するように設定するには、abrt-oops サービスに同じ手順を使用します。このサービスは、システムが失敗しなくなったり、すぐに再起動したりするカーネル oops を検出できないことに注意してください。ABRT でこのようなカーネル oops を検出できるようにするには、abrt-vmcore サービスをインストールする必要があります。この機能が必要な場合は、詳細は 「カーネルパニックを検出するための ABRT の設定」 を参照してください。
ABRT パッケージをインストールすると、各 ABRT サービスが ランレベル 3 と 5 に対して自動的に有効になります。chkconfig ユーティリティーを使用して必要なランレベルの ABRT サービスを無効または有効にできます。詳細は、「chkconfig ユーティリティーの使用」 を参照してください。
ABRT のインストールが core_patternを上書きする
ABRT パッケージをインストールすると、コアダンプファイルの命名に使用するテンプレートを含む /proc/sys/kernel/core_pattern ファイルが上書きされることに注意してください。このファイルのコンテンツは、以下のように上書きされます。
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
最後に、グラフィカルデスクトップ環境で ABRT を実行すると、ABRT 通知アプレット が実行中であることを確認できます。
~]$ 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
アプレットは、グラフィカルデスクトップセッションの開始時に自動的に開始するように設定できます。上部のパネルの SystemPreferencesStartup Applications メニューを選択すると、ABRT 通知アプレットがプログラムの一覧に追加され、システム起動時に実行するように選択することができます。

図28.1 ABRT 通知アプレットが自動的に実行されるように設定。

ABRT 通知アプレットが自動的に実行されるように設定。