Go to main content

マニュアルページ セクション 8: システム管理コマンド

印刷ビューの終了

更新: 2022年7月27日
 
 

fmdump(8)

名前

fmdump - 障害管理ログビューア

形式

fmdump [[-e | -i | -I] | -A ] [-f] [-mvVp] [-c class] [-R root]
     [-t time] [-T time] [-u uuid] [-n name[.name]*[=value]]
     [-E ENA] [file] ...

説明

fmdump ユーティリティーは、Solaris Fault Manager (fmd(8)) に関連付けられたログファイルの内容を表示するために使用できます。Fault Manager は各 Solaris システムのバックグラウンドで実行されます。Fault Manager は、システムソフトウェアが検出した問題に関する遠隔測定情報を受け取り、問題を診断し、障害のあるコンポーネントの無効化などの予測的自己修復操作を開始します。

fmdump ユーティリティーは、Fault Manager のプライマリ管理インタフェースとして設計されたものではありません。その目的には、fmadm を使用してください (fmadm(8) を参照)。fmdump ユーティリティーは、新たな解釈をほとんど行うことなく Fault Manager の履歴ログを単純にダンプするほか、何の説明もなしに実装の詳細情報を含める可能性があります。後述の「属性」のセクションを参照してください。

Fault Manager は次のように、複数のセットのログファイルを維持しますが、これらは主にサービス担当者向けのものです (場合によっては管理者も使用可)。

エラーログ

エラー遠隔測定 (システムによって検出された問題の兆候) を記録するログ。

情報ログ

情報イベントを記録するログ。これは、高価値情報イベントとその他の情報イベントという 2 セットのログファイルとして実現されています。

障害ログ

障害診断情報 (エラーログや情報ログに記録された兆候を説明すると考えられる問題) を記録するログ。

1 つのログファイルセットは、現在のアクティブログファイルと、そのセット内のおそらくいくつかのローテーションされた古いログファイルとから構成されます。すべてのログは logadm(8) で管理され、/etc/logadm.conf 内にエントリを持ちます。

fmdump ユーティリティーは、対象セットの現在のログファイルとローテーションされたすべてのログファイルをダンプします。したがって、ログ履歴の全体が表示されることになります。特に障害ログの場合、fmdump が、進行中の問題だけにとどまらず、かつて診断されたことのあるすべての問題を表示する点を認識することが重要です。(その情報を取得するには fmadm faulty を使用します。)

デフォルトでは、fmdump は障害ログの内容を表示します。障害ログには、Fault Manager またはそのコンポーネントモジュールによって行われた個々の診断の結果が記録されます。エラーログを選択するには –e を使用し、情報ログの場合は –i を、高価値情報ログの場合は –I を、それぞれ使用します。あるいは、コマンド行で特定のログファイルパスを [file] として指定することもできます (この場合、そのファイルだけがダンプされ、ローテーション版のログは検索されません)。さらに、オプション –A を使用することで、すべてのログを集約したり、コマンド行に設定されたログファイルパスのセットを集約したりすることもできます。

fmdump のデフォルト表示の例を次に示します。

# fmdump
TIME                 UUID                                 SUNW-MSG-ID EVENT
Mar 23 14:06:35.2682 0a11a1a7-a8ce-c941-8527-8d7a9d320071 ZFS-8000-CS Diagnosed
Mar 25 14:51:41.2261 0a11a1a7-a8ce-c941-8527-8d7a9d320071 FMD-8000-4M Repaired
Mar 25 14:51:41.2523 0a11a1a7-a8ce-c941-8527-8d7a9d320071 FMD-8000-6U Resolved
May 31 23:35:39.9146 c63ac52e-506b-c1cc-e965-ff3b8544490d SMF-8000-YX Diagnosed
...

(80 文字以下の画面では出力が折り返されます。)

この場合は障害ログがダンプされます。ほかのログを選択するオプションや引数がコマンド行に指定されていないためです。障害ログには、Fault Manager やそのコンポーネントモジュールによって診断された問題のライフサイクル (初期の問題診断から、問題解決まで) が記録されます。

障害ログに記録された個々の問題は、次の要素で識別されます。

  • イベントのタイムスタンプ。問題のライフサイクルの状態変化を記述します。

  • 汎用一意識別子 (UUID)。一連のシステム間でその問題を一意に識別するために使用できます。ある特定の問題の問題ライフサイクル状態変化を記述するイベントはすべて同じ UUID を使用します (前述の例でも、初期診断やそのあとの修復や解決がすべて同じ問題 UUID を参照していることがわかります)。

  • A message identifier that can be used to access a corresponding knowledge article located at the web site, https://support.oracle.com/msg/

ある問題が管理者またはサービス技術者によるアクションを必要としている場合や、システム動作に影響を与える場合は、Fault Manager によって syslogd(8) に人間が読める形式のメッセージも発行されます。This message provides a summary of the problem and a reference to the knowledge article on the web site, https://support.oracle.com/msg/.fmdump ユーティリティーで syslog への書き込みと似た形式で fltlog エントリをダンプするには、–m オプションを使用します。

–v および –V オプションを使って、1 行だけのサマリーから、ログに記録された各イベントの詳細情報のレベルまで、表示を展開できます。–p オプションを –V と組み合わせて使用すると、「より高品質の」出力を要求できます。

–c–t–T–n、および –u オプションを使って、指定した class、時間範囲、または uuid と一致するイベントだけを選択することにより、出力をフィルタ処理できます。コマンド行に複数のフィルタオプションを指定すると、各オプションの論理 AND によって選択されたイベントだけを表示するようにオプションが組み合わされます。コマンド行に同じフィルタオプションを複数回指定すると、各オプションの論理 OR によって選択されたイベントを表示するように同類のオプションが組み合わされます。次に例を示します。

# fmdump -u uuid1 -u uuid2 -t 02Dec09

これは、属性が (uuid1 OR uuid2) AND (02Dec09 以降) であるイベントを選択します。

オプション

サポートしているオプションは、次のとおりです。

–A

Perform log aggregation.コマンド行に 1 つ以上のログファイルパスが指定された場合は、それらのファイルを集約します。それ以外の場合は、すべての logadm ローテーションファイルを含む、すべての既知のログタイプを集約します。ログのマージは時間順に行われますが、その際、同じログファイル内の任意の 2 つのレコードは、集約内でも元のログファイル内とまったく同じ順番になります (これは、Fault Manager が受け取って処理した順番であり、基本的には時間順になる)。

ほかのログセット選択オプション –e–i–I–A と併用することはできません。–c–t–T–n などのフィルタオプションは使用できますが、–u は使用できません。出力オプション –v–V、および –p は使用できますが、–m は使用できません。オプション –f は、選択されたすべてのログに追従します。

–c class

指定したクラスと一致するイベントを選択します。class 引数には、sh (1) に示されている構文と一致する glob パターンを使用できます。このクラスは、遠隔測定イベントの種類を示す階層分類文字列を表します。For more information about predictive self-healing, see https://support.oracle.com/msg/ .

–e

障害管理の障害ログではなくエラーログのイベントを表示します。

エラーログには、Sun の自動診断ソフトウェアが使用する非公開の遠隔測定情報が含まれています。この情報は、問題の事後分析やイベントの再現を支援するために記録されるものであるため、スクリプトやほかのツールの開発のために解析したり利用したりしないでください。非公開インタフェースに関する Sun の規則については、attributes(7) を参照してください。

–E ENA

指定された ENA 値に一致する任意の世代のイベントを選択します。ENA をサポートする検出機能でこのオプションを使用すると、同じ操作に関連付けられた複数のイベントを表示できます。

–f

ログファイル (–A 使用時は複数のログファイル) の増大に追従するため、追加データが発生するまで待機します。fmdump は、1 秒間休止し、ログファイルから新しいデータを読み取って整形したあと、また休止状態に戻るという無限ループに入ります。このループは、割り込み (Ctrl + C) を送信することでいつでも終了できます。

–m

障害ログ内の各エントリに関連するローカライズされた診断メッセージを出力します。

–n name[.name]*[=value]

名前 (と場合によっては値) が一致するプロパティーを含むログイベントを (コマンド行で選択されたログから) 選択します。文字列プロパティーの場合は、この値を正規表現照合にできます。正規表現の構文は、regex(7) のマニュアルページの「EXTENDED REGULAR EXPRESSIONS」のセクションで説明されています。次の文字を使用する場合、

$  *  {  ^  |  (  )  \

または正規表現を使用する場合は、これらがシェルにとって意味を持つため、注意が必要です これらのすべてを単一引用符で囲むのがもっとも安全です。数値プロパティーの場合は、この値を 8 進数、16 進数、または 10 進数にすることができます。

–p

–V (非常に詳細) オプションと組み合わせた場合、使用可能な整形された出力オプションが実際に実行されることを要求します。

–R dir

fmdump がアクセスするログファイルのルートディレクトリとして、デフォルトのルート (/) ではなく指定したディレクトリを使用します。

–t time

指定した時間以降に発生したイベントを選択します。時間は次の形式で指定できます。

mm/dd/yy hh:mm:ss

月、日、年、時 (24 時間形式)、分、および秒。日付と時間は任意の数のスペース文字で区切ることができます。シェルに 2 つの文字列を 1 つの引数として解釈させるには、引数全体を引用符で囲んでください。

mm/dd/yy hh:mm

月、日、年、時 (24 時間形式)、および分。日付と時間は任意の数のスペース文字で区切ることができます。シェルに 2 つの文字列を 1 つの引数として解釈させるには、引数全体を引用符で囲んでください。

mm/dd/yy

指定した月、日、年の午前 12:00:00。

ddMonyy hh:mm:ss

日、月の名前、年、時 (24 時間形式)、分、および秒。日付と時間は任意の数のスペース文字で区切ることができます。シェルに 2 つの文字列を 1 つの引数として解釈させるには、引数全体を引用符で囲んでください。

ddMonyy hh:mm

日、月の名前、年、時 (24 時間形式)、および分。日付と時間は任意の数のスペース文字で区切ることができます。シェルに 2 つの文字列を 1 つの引数として解釈させるには、引数全体を引用符で囲んでください。

Mon dd hh:mm:ss

当年の月、日、時 (24 時間形式)、分、および秒。

yyyy-mm-dd [T hh:mm[:ss]]

年、月、日、省略可能な時 (24 時間形式)、分、および秒。秒、または時、分、秒を省略できます。

ddMonyy

指定した日、月の名前、年の午前 12:00:00。

hh:mm:ss

当日の時 (24 時間形式)、分、および秒。

hh:mm

当日の時 (24 時間形式) および分。

Tns | Tnsec

T ナノ秒前。T は 10 進数で指定した整数です。

Tus |Tusec

T マイクロ秒前。T は 10 進数で指定した整数です。

Tms | Tmsec

T ミリ秒前。T は 10 進数で指定した整数です。

Ts | Tsec

T 秒前。T は 10 進数で指定した整数です。

Tm |Tmin

T 分前。T は 10 進数で指定した整数です。

Th |Thour

T 時間前。T は 10 進数で指定した整数です。

Td |Tday

T 日前。T は 10 進数で指定した整数です。

–t オプションの引数に .n の形式で小数を付加すると、指定する時間の小数部分を示すことができます。

–T time

指定した時間以前に発生したイベントを選択します。time は、–t オプションで説明したいずれかの時間形式を使って指定できます。

–u uuid

障害ログ内の問題診断イベントのうち、指定された uuid に厳密に一致するものを選択します。個々の診断には、識別用の汎用一意識別子 (UUID) が割り当てられています。–u オプションとほかのオプション (–v など) を組み合わせることにより、特定の診断に関連付けられたすべての詳細情報を表示できます。同じ問題診断 UUID に複数の障害ログイベントが関連付けられる可能性があります。単一の問題のライフサイクル (初期診断から最終解決まで) を記述するすべてのイベントが同じ問題 UUID を参照します。

–e オプションと –u オプションを同時に指定すると、指定した診断によって相互参照されるエラーイベントが表示されます。

–v

詳細なイベント情報を表示します。イベントの表示部分が拡大され、選択したイベントの追加の共通部分が表示されます。

–V

非常に詳細なイベント情報を表示します。イベントの表示部分が拡大され、各イベントに関連付けられたすべての名前-値ペアが表示されます。さらに、障害ログの場合は、イベントの表示部分に、診断に関連付けられていた該当するエラーの相互参照のリストも表示されます。

整形された出力を要求するには、–p–V を併用します。

オペランド

次のオペランドがサポートされています。

file

システム障害ログの代わりに表示する代替ログファイル (–A 使用時は複数の代替ログファイル) を指定します。fmdump ユーティリティーは、指定したログの種類を自動的に判別し、そのログに対応する適切な出力を生成します。

使用例 1 fmd ログからの特定のクラスの取得

fmd ログから、指定したクラスに関する情報を取得するには、次のいずれかのコマンドを使用します。完全なクラス名は ereport.io.ddi.context です。

# fmdump -Ve -c 'ereport.io.ddi.context'
# fmdump -Ve -c 'ereport.*.context'
# fmdump -Ve -n 'class=ereport.io.ddi.context'
# fmdump -Ve -n 'class=ereport.*.context'

前述のいずれのコマンドでも次の出力が生成されます。

Oct 06 2007 11:53:20.975021712 ereport.io.ddi.context
        nvlist version: 0
                class = ereport.io.ddi.context
                ena = 0x1b03a15ecf00001
                detector = (embedded nvlist)
                nvlist version: 0
                        version = 0x0
                        scheme = dev
                        device-path = /
                (end detector)

                __ttl = 0x1
                __tod = 0x470706b0 0x3a1da690
使用例 2 fmd ログからの特定の検出機能デバイスパスの取得

次のコマンドは、fmd ログから検出機能デバイスパスを取得します。

# fmdump -Ve -n 'detector.device-path=.*/disk@1,0$'
Oct 06 2007 12:04:28.065660760 ereport.io.scsi.disk.rqs
nvlist version: 0
       class = ereport.io.scsi.disk.rqs
       ena = 0x453ff3732400401
       detector = (embedded nvlist)
                nvlist version: 0
                        version = 0x0
                        scheme = dev
                        device-path = /pci@0,0/pci1000,3060@3/disk@1,0
                (end detector)

                __ttl = 0x1
                __tod = 0x4707094c 0x3e9e758

終了ステータス

次の終了ステータスが返されます。

0

正常終了。ログファイル内のすべてのレコードが検査され、問題はありませんでした。

1

致命的なエラーが発生しました。このため (指定されたファイルを開くのに失敗したなどの理由で)、ログファイルのデータは検査されませんでした。

2

無効なコマンド行オプションが指定されました。

3

ログファイルを開くことには成功しましたが、入出力エラーが発生したか、レコード自体の形式が不正だったため、ログファイルの 1 つ以上のレコードが表示されませんでした。fmdump は、表示できなかったレコードごとに警告メッセージを表示したあと、処理を続行し、ほかのレコードを表示しようとします。

ファイル

/var/fm/fmd

障害管理ログのディレクトリ

fmdump ユーティリティーでは、ユーザーは、/var/fm/fmd ディレクトリのファイルを読み取るために solaris.fm.read RBAC 承認 (「障害情報」または「障害管理」RBAC プロファイル) が割り当てられている必要があります

/var/fm/fmd/errlog

障害管理のエラーログ

/var/fm/fmd/fltlog

障害管理の障害ログ

/var/fm/fmd/infolog_hival

高価値情報ログ

/var/fm/fmd/infolog

情報ログ

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/fault-management
インタフェースの安定性
See below

コマンド行オプションは「不確実」です。人間が読める形式のエラーログおよび情報ログ出力は「非公開」です。人間が読める形式の障害ログ出力は「不確実」です。

関連項目

sh(1), libexacct(3LIB), attributes(7), regex(7), fmd(8), fmstat(8), logadm(8), syslogd(8)

https://support.oracle.com/msg/

障害ログには、エラーログに格納されたレコードへの参照が含まれています。fmdump –V を使ってこれらのレコードを表示することにより、特定の障害の診断に使用されたエラーを知ることができます。ログのローテーションによってエラーログの名前が変更されても、これらのリンクは保持されます。エラーログファイルを削除したり、エラーログファイルを別のファイルシステムのディレクトリに移動したりすると、これらのリンクが壊れることがあります。fmdump では、このような壊れたリンクのエラー情報を表示できません。障害ログに含まれる情報は引き続きすべて表示されます。