(57)【要約】      （修正有）【課題】記録するログの整合性を確保できる情報処理装置を提供する。【解決手段】情報処理装置はＢＭＣ（Ｂａｓｅｂｏａｒｄ Ｍａｎａｇｅｍｅｎｔ Ｃｏｎｔｒｏｌｌｅｒ）を含む。ＢＭＣ１１は、通信部２１と記憶部２２と選択部２３と記録部２４と取得部２５とを含む。通信部は、各種ハードウェアとのデータの送受信を行う。記憶部は、ＳＥＬ（Ｓｙｓｔｅｍ Ｅｖｅｎｔ Ｌｏｇ）記録領域と詳細ログ記録領域とを含む。選択部は、新たに発生した事象と、記録されているＳＥＬが示す事象との関連性に基づいて、取得部に詳細ログを取得させないか、一部の詳細ログを取得させるか、全ての詳細ログを取得させるかを選択する。記録部は、ログ取得対象の事象が発生した場合、スレッド番号に対応する識別情報（第２識別情報）を詳細ログに付与して保存し、ＳＥＬを、発生した事象に対応するＳＥＬ＿ＩＤ（第１識別情報）と記録時刻とに対応付けて記録する。【選択図】図５
2018180982.tif 000002
【特許請求の範囲】
【請求項１】
発生した事象の検出に応じて、前記事象に関する事象データを取得する取得部と、
前記事象データの取得が完了した後に、前記事象に対応する第１識別情報を設定し、前記事象データに対応するログを前記第１識別情報に対応付けて記録する記録部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記記録部は、
前記事象データに対応する第２識別情報を設定し、
前記ログを記録した後、前記第１識別情報に基づいて前記第２識別情報を更新する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記記録部は、
前記ログを記録する際の時刻を、該ログに対応付けて記録する
ことを特徴とする請求項１または請求項２記載の情報処理装置。
【請求項４】
前記発生した事象と、記録されている前記ログが示す事象との関連性に基づいて、前記取得部に前記事象データを取得させないか、前記取得部に一部の前記事象データを取得させるか、前記取得部に全ての前記事象データを取得させるかを選択する選択部を含む
ことを特徴とする請求項１乃至３のうちのいずれか１項に記載の情報処理装置。
【請求項５】
前記選択部は、前記発生した事象が、記録されている前記ログが示す事象と同じである場合、前記取得部に前記事象データを取得させないことを選択する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記選択部は、前記発生した事象が、記録されている前記ログが示す事象と関連する場合、前記取得部に一部の前記事象データを取得させるか、前記取得部に全ての前記事象データを取得させるかを選択する
ことを特徴とする請求項４または請求項５に記載の情報処理装置。
【請求項７】
前記選択部は、前記発生した事象が、記録されている前記第１ログが示す事象と関連し、かつ、前記発生した事象の発生時刻が、記録されている前記第１ログが示す事象の発生時刻と所定範囲内である場合、前記取得部に前記第２ログを取得させないか、前記取得部に一部の前記第２ログを取得させるかを選択する
ことを特徴とする請求項４乃至６のうちのいずれか１項に記載の情報処理装置。
【請求項８】
発生した事象の検出に応じて、前記事象に関する事象データを取得し、
前記事象データの取得が完了した後に、前記事象に対応する第１識別情報を設定し、前記事象データに対応するログを前記第１識別情報に対応付けて記録する、
処理を情報処理装置が実行することを特徴とするログ記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、およびログ記録方法に関する。
【背景技術】
【０００２】
コンピュータに搭載されたBaseboard Management Controller（ＢＭＣ）ファームウェアが、コンピュータのハードウェアの監視を行い、リモートコントロールやハードウェアイベント等に関する情報のログを記録する。ログの記録について、Intelligent Platform Management Interface （ＩＰＭＩ）に標準仕様が規定されている。
【０００３】
監視対象の装置が大規模になると、取得するログの量は多くなり、ユーザによるログの解析にも時間がかかるため、解析の効率化が求められる。
【０００４】
関連する技術として、アプリケーションプログラムの障害発生の際に、障害内容等の判別のために必要なログ情報のみをファイル装置に出力する技術が提案されている（例えば、特許文献１を参照）。
【０００５】
また、関連する技術として、排他制御を行わずに、複数のタスクに関する動作履歴情報を収集する情報処理装置が提案されている（例えば、特許文献２を参照）。
できる情報処理装置
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−５８２６５号公報
【特許文献２】特開２０１０−６６７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＢＭＣは、例えば、ＩＰＭＩに規定されている故障種別を含むSystem Event Log（ＳＥＬ）と、故障発生時のアプリケーションの動作情報、ハードウェアのレジスタから出力された情報等の詳細が記述された詳細ログとを記録する。ＳＥＬの記述内容は、ＩＰＭＩに規定されている。
【０００８】
例えば、ＳＥＬに識別情報を付与した後に詳細ログの記録を開始し、詳細ログの記録完了後にＳＥＬにメッセージと記録時刻を書き込むことが考えられる。しかし、詳細ログの取得に要する時間は事象によって異なる。従って、ＳＥＬの識別情報の順序とＳＥＬ記録時刻の順序とが一致しない可能性がある。
１つの側面として、本発明は、記録するログの整合性を確保することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、情報処理装置は、発生した事象の検出に応じて、前記事象に関する事象データを取得する取得部と、前記事象データの取得が完了した後に、前記事象に対応する第１識別情報を設定し、前記事象データに対応するログを前記第１識別情報に対応付けて記録する記録部と、を含む。
【発明の効果】
【００１０】
１つの側面によれば、記録するログの整合性を確保することできる。
【図面の簡単な説明】
【００１１】
【図１】実施形態のシステムの全体構成の一例を示す図である。
【図２】ＢＭＣファームウェアのプロセス概要を示す図である。
【図３】ＳＥＬの一例を示す図である。
【図４】不整合が発生するログ記録処理の一例を示す図である。
【図５】ＢＭＣのソフトウェア構成の一例を示す図である。
【図６】ログ取得方法の管理情報の一例を示す図である。
【図７】エラーの管理情報を示す図である。
【図８】実施形態の処理の流れの一例を示すフローチャートである。
【図９】図８のステップＳ１０１の処理の一例を示す図である。
【図１０】ログ記録処理の第１の例を示す図である。
【図１１】ログ記録処理の第２の例を示す図である。
【発明を実施するための形態】
【００１２】
＜実施形態のシステムの全体構成の一例＞
以下、図面を参照して、実施形態について説明する。図１は、実施形態のシステムの全体構成の一例を示す。実施形態のシステムは、第１サーバ１と第２サーバ２とを含む。第２サーバ２は１台であってもよいし、複数台であってもよい。第１サーバと第２サーバとは通信可能であり、ＩＰＭＩコマンドの送受信を相互に行う。
【００１３】
第１サーバ１は、ＢＭＣ１１とPower Supply Unit（ＰＳＵ）１５とセンサ１６とCPU Memory Unit（ＣＭＵ）１７とを含む。第１サーバ１は、情報処理装置の一例である。
【００１４】
ＢＭＣ１１は、記憶装置１２と第１通信インタフェース１３ａと第２通信インタフェース１３ｂと第３通信インタフェース１３ｃとプロセッサ１４とを含む。ＣＭＵ１７は、Central Processing Unit（ＣＰＵ）１８とメモリ１９とを含む。
【００１５】
ＢＭＣ１１は、オンチップの管理用コントローラであり、例えばマザーボード上に搭載されている。ＢＭＣ１１は、第１サーバ１内の各ハードウェア、第２サーバ２に含まれる各種ハードウェア等に関する各種のログを、記憶装置１２に記録する。
【００１６】
記憶装置１２は、コンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。記憶装置１２は、例えば、半導体メモリを用いた可搬型記録媒体（例えば、ＳＤメモリーカード）である。ただし、記憶装置１２は、可搬型には限られず、ＢＭＣ１１に内蔵されていてもよい。記憶装置１２にＢＭＣ１１における各種処理を実行させるプログラムが記憶されていてもよい。
【００１７】
第１通信インタフェース１３ａは、第２サーバ２との通信に用いられる。第２通信インタフェース１３ｂは、ＰＳＵ１５およびＣＭＵ１７との通信に用いられる。第３通信インタフェース１３ｃは、General Purpose Input/Output（ＧＰＩＯ）の一例であり、センサ１６との通信に用いられる。
【００１８】
プロセッサ１４は、記憶装置１２に展開されたプログラムを実行する。ＰＳＵ１５は、第１サーバ１に電源を供給する。ＰＳＵ１５は、Inter-Integrated Circuit（Ｉ２Ｃ）通信方式により、ＢＭＣ１１と通信を行う。
【００１９】
センサ１６は、第１サーバ１に関する各種の検出を行う。センサ１６は、１つであってもよく、複数であってもよい。センサ１６は、例えば、漏水検知センサ、温度センサ、冷却ファンの回転数を測定するセンサ等である。
【００２０】
ＣＭＵ１７は、例えば、ＣＰＵ１８とメモリ１９とが搭載された基板である。メモリ１９は、例えば、Random Access Memory(RAM)である。ＣＰＵ１８は、メモリ１９に展開されたプログラムを実行する。
【００２１】
第１サーバ１は、図１に示す構成の他に、ハードディスクドライブや半導体メモリ等の補助記憶装置を含んでいてもよい。
【００２２】
ＢＭＣ１１は、Ｉ２Ｃ通信方式により、ＰＳＵ１５から電源状態を記録したログを取得する。電源状態は、例えば、電圧値である。ログのファイル形式は、例えば、バイナリ形式であり、ツールを使用することにより参照可能である。
【００２３】
また、ＢＭＣ１１は、Ｉ２Ｃ通信方式により、第２通信インタフェース１３ｂを介してＰＳＵ１５から、電源状態（例えば、電圧値）を示すログとして取得する。
【００２４】
また、ＢＭＣ１１は、第３通信インタフェース１３ｃを介してセンサ１６から各種検出データを取得し、各種検出データに関するログを記録する。検出データは、漏水の有無、ＣＰＵ１８等の温度、冷却ファンの回転数等である。ログのファイル形式は、例えば、バイナリ形式であり、ツールを使用することにより参照可能である。センサ１６からのログ取得にかかる時間は、例えば、数ミリ秒である。
【００２５】
また、ＢＭＣ１１は、Ｉ２Ｃ通信方式により、第２通信インタフェース１３ｂを介してＣＭＵ１７のダンプ情報をログとして取得する。ダンプ情報は、例えば、エラーの発生時にＣＰＵ１８が有するレジスタから出力された情報である。ＣＭＵ１７からのログ取得にかかる時間は、ＰＳＵ１５やセンサ１６からのログ取得時間と比べて長い可能性が高い。
【００２６】
また、ＢＭＣ１１は、第１通信インタフェース１３ａを介して第２サーバ２からＩＰＭＩコマンドを用いて、ログを取得する。第２サーバ２からのログ取得にかかる時間は、第１サーバ１内のハードウェアからのログ取得にかかる時間より長い可能性が高く、例えば、数分である。
【００２７】
プロセッサ１４は、実行するプログラムの動作を示すログ（以下、プログラム動作ログと称する）を出力し、記憶装置１２に記憶する。プログラム動作ログは、定期的に更新される。プロセッサ１４は、例えば、ハードウェアエラー等の事象が発生した際にプログラム動作ログを出力する。ＢＭＣ１１は、以前に同様の事象が発生している場合、その事象のログをコピーしてもよい。
【００２８】
プログラム動作ログは、例えば、定期的に出力され、ＰＳＵ１５、センサ１６、ＣＭＵ１７、第２サーバ２等から取得するログと比較して記録にかかる時間は短い可能性が高い。プログラム動作ログのファイル形式は、バイナリ形式またはテキスト形式である。バイナリ形式の動作ログは、ツールを使用することにより参照可能である。
【００２９】
第２サーバ２内の構成要素は、第１サーバ１と同じであってもよいし異なっていてもよい。第１サーバ１は、サーバ以外の電子装置（例えば、ストレージ、スイッチ等）と接続されていてもよく、接続されている電子装置に関するログを取得してもよい。
【００３０】
図２は、ＢＭＣファームウェアのプロセス概要を示す図である。ＢＭＣファームウェアの処理は、例えば、ＩＰＭＩのＭａｉｎプロセスとして規定されている。
【００３１】
ＢＭＣファームウェアのプロセスは、ＣＰＵ（例えば、ＣＰＵ１８）の割り込み受付スレッドと、ＰＳＵ（例えば、ＣＭＵ１７）の割り込み受付スレッドと、各種センサ（例えば、センサ１６）から出力される値に対する監視スレッドを含む。各スレッドにおいて、ＳＥＬ登録ライブラリと詳細ログ登録ライブラリへのログ記録が行われる。
【００３２】
ＳＥＬ登録ライブラリおよび詳細ログ登録ライブラリは、例えば、記憶装置１２に記憶される。なお、ＳＥＬは、ログの一例である。また、詳細ログは、事象データの一例である。
【００３３】
ＢＭＣ１１は、ハードウェアごとにスレッドを生成する。また、同一のハードウェアであっても、事象の種類が異なる場合、ＢＭＣ１１は、新たなスレッドを生成してもよい。また、ＢＭＣ１１は、ハードウェアのエラー等の事象の内容を解析し、ＳＥＬの記録と詳細ログの記録を各スレッドで処理する。
【００３４】
ＢＭＣ１１は、例えば、ＣＰＵ１８およびＰＳＵ１５からの割り込みに応じて、ＳＥＬ記録および詳細ログ記録を行う。ＢＭＣ１１は、例えば、ＣＰＵ１８およびＰＳＵ１５を定期監視してログを取得し、ＳＥＬ記録および詳細ログ記録を行ってもよい。また、ＢＭＣ１１は、各種センサを定期監視し、例えば、異常値を検出した場合に、ＳＥＬ記録および詳細ログ記録を行う。
【００３５】
図３は、ＳＥＬの一例を示す図である。ＳＥＬは、事象の概要を示すログであり、記述内容は、ＩＰＭＩで規定される。ＳＥＬは、例えば、障害の発生や重度を切り分けるために用いられる。図３に示すＳＥＬは、ＳＥＬ＿ＩＤ、時刻（timestamp）、メッセージコード（MsgCode）、エラーレベル（ErrLvl）、部品名、メッセージが含まれている。
【００３６】
なお、ＳＥＬ＿ＩＤ、時刻、メッセージコードは、ＩＰＭＩで規定された内容である。例えば、ＢＭＣ１１からログを取得したサーバが、ツールを用いてメッセージコードを変換して、エラーレベル、部品名、メッセージを取得することができる。
【００３７】
ＳＥＬ＿ＩＤは、スレッド毎に付与されるログの識別情報である。時刻は、メッセージ記録時の時刻である。メッセージコードは、事象を分別するコードである。
【００３８】
エラーレベルは、例えば、エラー内容が通常レベルか、警告レベルか、致命的なレベルかを示す情報である。ハード種別は、事象を発生したハードウェアの種別を示す。メッセージ内容は、エラー内容など、事象の内容についての記述である。
【００３９】
ＢＭＣ１１は、図３に示すＳＥＬに対応する、１以上の詳細ログ（図示せず）を記録する。詳細ログは、各種ハードウェア（例えば、ＰＳＵ１５、センサ１６、ＣＭＵ１７、および第２サーバ２）から取得したログである。または、ＢＭＣ１１は、取得したログを所定の形式に編集して詳細ログとしてもよい。
【００４０】
詳細ログは、障害要因を詳細に調査するために用いられる。また、詳細ログは、Original Equipment Manufacturing（ＯＥＭ）により生成されるログであり、ユーザにより記録内容や記録方法が定義される。
【００４１】
また、詳細ログは、障害の詳細原因追究の解析のために用いられる。監視対象の装置が大規模になるに応じて、詳細ログは多くなり解析にも時間がかかる。ＢＭＣ１１は、ＳＥＬと詳細ログに共通の識別情報を付与し、識別情報を用いて関連性を管理することで、解析に必要な情報明確にして効率化する。例えば、ユーザがログを参照してエラーの解析をする際に、ＳＥＬを参照して、ＳＥＬの内容に基づいて解析に用いる詳細ログを選択することにより、全ての詳細ログを参照せずにエラーの解析をすることができる。
【００４２】
例えば、ＢＭＣ１１は、以前に発生した事象と同様または関連した事象が発生したと判定した場合、詳細ログとして以前に生成したログの識別情報のみを記録してもよいし、詳細ログの取得を省略してもよい。ＢＭＣ１１は、以前に生成したログの識別情報のみを記録したり、詳細ログの取得を省略することにより、ログ容量の削減をすることができる。
【００４３】
図４は、不整合が発生するログ記録処理の一例を示す図である。図４に示す例では、ログ記録の対象となる２つの事象（エラー）が発生し、２つのエラーにそれぞれ対応するスレッドＡおよびスレッドＢで処理が行われることを想定する。
【００４４】
図４に示すＳＥＬ記録領域には、ＳＥＬ＿ＩＤに日付（ＳＥＬ記録日）、時刻（ＳＥＬ記録時刻）、メッセージコードが記録される。図４では、予め、ＳＥＬ＿ＩＤ：「１」に対応して、日付（Ｘ／Ｘ）、時刻（０９：００）、メッセージコード（○○）が記録されている。また、詳細ログには、ＳＥＬ＿ＩＤ：「１」に対応するフォルダ「ＩＤ０００１」が予め作成されている。
【００４５】
ログの取得対象のエラーＡが発生した場合（Ｓ１１）、ＢＭＣ１１は、エラーＡについてＳＥＬ記録領域の空きを確保し、ＳＥＬ＿ＩＤとして「２」を設定する（Ｓ１２）。ＳＥＬ＿ＩＤの取得時点では、ＳＥＬ記録日時、およびログ内容が不明であるため、ＢＭＣ１１は、日付、時刻、メッセージコードの替わりに「ｒｅｓｅｒｖｅｄＡ」というメッセージをＳＥＬ記録領域に仮記録する。
【００４６】
ＢＭＣ１１は、エラーＡに関して詳細ログの取得を開始する（Ｓ１３）。ＢＭＣ１１は、詳細ログの取得を開始する際に、ＳＥＬ＿ＩＤに対応するフォルダ名を付与したフォルダを作成する。そして、ＢＭＣ１１は、作成したフォルダ内に取得したログを保存する。図４の例では、ＢＭＣ１１は、ＳＥＬ＿ＩＤ：「２」に対応してフォルダ名を「ＩＤ０００２」とする。
【００４７】
Ｓ１３の後に、エラーＡとは異なるエラーＢが発生したとする（Ｓ１４）。ＢＭＣ１１は、エラーＢについてＳＥＬ記録領域の空きを確保し、ＳＥＬ＿ＩＤとして「３」を設定する（Ｓ１５）。ＳＥＬ＿ＩＤの取得時点では、ＳＥＬ記録日時、およびログ内容が不明であるため、ＢＭＣ１１は、日付、時刻、メッセージコードの替わりに「ｒｅｓｅｒｖｅｄ  Ｂ」というメッセージをＳＥＬ記録領域に仮記録する。
【００４８】
ＢＭＣ１１は、エラーＢに関して詳細ログの取得を開始する（Ｓ１６）。ＢＭＣ１１は、詳細ログの取得を開始する際に、ＳＥＬ＿ＩＤ：「３」に対応して「ＩＤ０００３」という名称のフォルダを作成する。そして、ＢＭＣ１１は、詳細ログの取得を完了する（Ｓ１７）。
【００４９】
ＢＭＣ１１は、スレッドＢにおける詳細ログの保存後、ＳＥＬ記録領域にＳＥＬ記録を行う（Ｓ１８）。ＢＭＣ１１は、ＳＥＬ＿ＩＤが「３」である領域に、日付、時刻、メッセージコードを記録する。記録される日付、時刻は、ＳＥＬの記録を行った日付、時刻である。
【００５０】
Ｓ１８の後、エラーＡに関して、詳細ログの取得が完了したとする（Ｓ１９）。ＢＭＣ１１は、スレッドＡにおける詳細ログの保存後、ＳＥＬ記録領域にＳＥＬ記録を行う（Ｓ２０）。ＢＭＣ１１は、ＳＥＬ＿ＩＤが「Ａ」である領域に、日付、時刻、メッセージコードを記録する。
【００５１】
以上の処理において、Ｓ１８の処理の時点で、ＳＥＬ＿ＩＤ：「１」、「３」に対応する日付、時刻、メッセージコードが記録されているが、ＳＥＬ＿ＩＤ：「２」に対応する日付、時刻、メッセージコードが記録されていない。すなわち、ＳＥＬ＿ＩＤの順序で確保されたＳＥＬ記録領域の中間に空きが発生する。
【００５２】
さらに、Ｓ１１〜Ｓ２０の処理の結果、ＳＥＬ記録領域において、ＳＥＬ＿ＩＤ：「２」に対応する日時（ｘ／ｘ  １０：５０）よりＳＥＬ＿ＩＤ：「３」に対応する日時（ｘ／ｘ  １０：４０）の方が前の日時となっている。すなわち、ＳＥＬ＿ＩＤの順序と日時の順序が逆転している。
【００５３】
ＳＥＬ記録領域の中間に空きができた状態やＳＥＬ＿ＩＤの順序と日時の順序が逆転した状態は、プログラムにとって想定していない状態であるため、各種処理に異常が発生する可能性がある。例えば、外部の情報処理装置等から送られた、ＳＥＬを読み込むためのＩＰＭＩコマンドがエラーとなったり、ログデータの取得が部分的にうまくいかない可能性がある。また、サーバの再起動時にログの復元が行えない可能性がある。また、ＳＥＬの領域の中間に空きができた状態では、新規のログ記録ができない可能性がある。
【００５４】
詳細ログの形式は様々であり、収集時間にもばらつきがある。例えば、上述したように、自装置内のハードウェアからの詳細ログ（センサ情報等）の収集と比較して他の装置からの詳細ログの収集には時間がかかる。また、大規模なシステムでは、複数の故障イベントがほぼ同時に発生することがあり、短期間に多数のログ記録する場合があるため、上記のような問題が発生する。
【００５５】
詳細ログの記録前にＳＥＬを記録すれば、上記問題は解消するが、収集した詳細ログを解析した上で記録するＳＥＬを決定する場合、詳細ログの記録後にＳＥＬを記録することが好ましい。
【００５６】
また、ＳＥＬの記録方法は、ＩＰＭＩ規格でサポートされるため、記録の処理が標準的なパッケージの一つとして提供される。そのため、例えば、詳細ログの完了に合わせてＳＥＬ＿ＩＤを変更する等の工夫をすることは困難である。
【００５７】
また、スレッド間の排他により、上記の問題を防ぐ方法は考えられる。例えば、スレッドＡの処理中はスレッドＢの処理を行わないことが考えられる。しかし、スレッド間の排他を行うと、短期間に複数の事象が発生した場合、ログの記録時間が長くなってしまう。
【００５８】
＜ＢＭＣの一例＞
上記のような問題を回避するために、実施形態におけるＢＭＣ１１は、発生した事象に関して記録するログの整合性を確保する処理を行う。なお、以下の説明において、発生する事象はハードウェアのエラーであるが、発生する事象はエラーには限られない。例えば、発生する事象は、プログラムが定期的に出力する情報であってもよい。
【００５９】
図５は、ＢＭＣのソフトウェア構成の一例を示す図である。ＢＭＣ１１は、通信部２１と記憶部２２と選択部２３と記録部２４と取得部２５とを含む。
【００６０】
通信部２１は、各種ハードウェアとのデータの送受信を行う。通信部２１は、図１に示す第１通信インタフェース１３ａ、第２通信インタフェース１３ｂ、第３通信インタフェース１３ｃに対応する。
【００６１】
記憶部２２は、論理的に分割されたＳＥＬ記録領域と詳細ログ記録領域とを含む。また、ＳＥＬ記録領域にはＳＥＬが記憶され、詳細ログ記録領域には詳細ログが記憶される。また、記憶部２２は、後述するログ取得方法の管理情報、エラーの管理情報を記憶する。記憶部２２は、図１に示す記憶装置１２により実現される。
【００６２】
選択部２３は、新たに発生した事象と、記録されているＳＥＬが示す事象との関連性に基づいて、取得部２５に詳細ログを取得させないか、取得部２５に一部の詳細ログを取得させるか、取得部２５に全ての詳細ログを取得させるかを選択する。選択部２３の処理の詳細は後述する。
【００６３】
記録部２４は、ログ取得対象の事象が発生した場合、詳細ログに対応する第２識別情報として、スレッド番号に対応する識別情報を設定し、詳細ログに付与する。また、記録部２４は、詳細ログ記録領域に、第２識別情報に対応するフォルダ名を付与したフォルダを作成する。そして、記録部２４は、取得した詳細ログを作成したフォルダ内に保存する。
【００６４】
記録部２４は、詳細ログの記録を完了した場合、発生した事象に対応するＳＥＬ＿ＩＤを設定し、ＳＥＬをＳＥＬ＿ＩＤと記録時刻とに対応付けて記録する。
【００６５】
記録部２４は、ＳＥＬの記録後、ＳＥＬ＿ＩＤに基づいて、詳細ログ領域のフォルダ名と第２識別情報をスレッド番号からＳＥＬ＿ＩＤに基づく名称に更新（リネーム）する。ＳＥＬ＿ＩＤは、第１識別情報の一例である。
【００６６】
取得部２５は、選択部２３の選択結果に基づいて、発生した事象の検出に応じて、詳細ログ取得対象の各種ハードウェアから、発生した事象に関する詳細ログを取得する。詳細ログ取得対象の各種ハードウェアは、例えば、図１に示すＰＳＵ１５、センサ１６、ＣＭＵ１７、第２サーバ２等である。取得部２５は、センサ１６から取得した温度が所定値を超えた場合、第２サーバ２等から所定の要求を受信した場合、詳細ログを取得する。
【００６７】
図６は、ログ取得方法の管理情報の一例を示す図である。選択部２３は、エラーの発生後にエラーの種類を判定し、過去に記憶装置１２に記憶したＳＥＬにおいて、所定時間以内に関連するエラーが発生していないか判定する。選択部２３は、関連するエラーが起きていた場合、そのエラーに関する詳細ログを確認し、新たに記録する詳細ログが記憶装置１２に記憶した詳細ログと同じとなるか推測する。同じとなると推測した場合、選択部２３は、取得部２５に、詳細ログの一部のみ取得させるか、詳細ログを取得させない。なお、エラーの種別毎に、取得対象の詳細ログが予め設定されているとする。
【００６８】
例えば、選択部２３は、記憶装置１２に記憶されたＳＥＬが示すエラーと同じエラーを検出した場合、詳細ログを取得しないことを選択する。選択部２３は、同じエラーかどうかを、例えば、図３に示すメッセージコード（MsgCode）と、新たに発生したエラー内容に基づいて判定する。
【００６９】
選択部２３は、記憶装置１２に記憶されたＳＥＬが示すエラーと関連するエラーを検出した場合、同じスレッドでの検出であれば、そのエラーに対して設定された取得対象の詳細ログのうち一部の詳細ログを取得部２５に取得させることを選択する。例えば、関連するエラーを同じスレッドで検出した場合、プログラム動作ログが同じ内容となる可能性が高いため、選択部２３は、プログラム動作ログを詳細ログとして取得しないことを選択する。選択部２３は、例えば、ＣＰＵ１８のレジスタ情報等の詳細ログは異なる可能性があるため、ＣＰＵ１８のレジスタ情報等を取得部２５に取得する。
【００７０】
選択部２３は、例えば、一部の詳細ログを取得部２５に取得させることを選択した場合、エラーが電源に関するエラーであれば、取得部２５に、ＰＳＵ１５からの詳細ログのみ取得させる。
【００７１】
また、選択部２３は、記憶装置１２に記憶されたＳＥＬが示すエラーと関連するエラーを検出した場合、別スレッドでの検出であれば、そのエラーに対して設定された全ての取得対象の詳細ログを取得することを選択する。
【００７２】
関連するエラーが頻発した場合、すなわち、新たに発生したエラーの発生時刻と、記録されているＳＥＬに記録されているエラー発生時刻とが所定範囲内である場合、後に発生したエラーよりも先に発生したエラーの方が、重要度が高い可能性が高い。先のエラーが原因で後のエラーが発生した要因で発生した可能性が高いからである。従って、選択部２３は、関連するエラーが頻発した場合、同じスレッドでの検出であれば、詳細ログを取得しないことを選択する。また、選択部２３は、関連するエラーが頻発した場合、異なるスレッドでの検出であれば、そのエラーに対して設定された一部の詳細ログを取得することを選択する。
【００７３】
以上のように、選択部２３は、同じ内容になると推測された詳細ログの取得を省略することを選択することにより、記憶するログ容量を低減し、ログ取得時間を短縮することができる。
【００７４】
図７は、エラーの管理情報を示す図である。図７に示す管理情報は、記憶部２２に記憶される。図７に示す「メッセージ」は、エラーが発生した際に、ＢＭＣ１１が各種ハードウェアから取得した情報に基づくエラーメッセージである。「エラー種別」は、「メッセージ」に対応するエラーの種別である。また、詳細ログ１〜４は、例えば、図１に示すＰＳＵ１５、センサ１６、ＣＭＵ１７、第２サーバ２から取得部２５がそれぞれ取得する詳細ログである。
【００７５】
図７に示す「エラー種別」は、選択部２３が、新たに発生したエラーが過去に発生したエラーと関連するか同一であるかを判定する際に用いられる。
【００７６】
図７において、「○」は、詳細ログが取得対象であることを示す。「△」は、詳細ログが取得対象であるが省略可能であることを示す。図６における「全ての詳細ログ」とは図７で「○」および「△」となっている詳細ログである。また、図６における「一部の詳細ログ」とは図７で「○」となっている詳細ログである。
【００７７】
図７に示す例では、メッセージ毎に取得対象の詳細ログが記録されているが、例えば、図３に示すMsgCode毎に取得対象の詳細ログが記録されていてもよい。
【００７８】
＜実施形態の処理の流れの一例＞
図８は、実施形態の処理の流れの一例を示すフローチャートである。図４に示す処理は、ＢＭＣ１１が、ハードウェアエラー等の所定の事象を検出した際に開始する。
【００７９】
選択部２３は、発生した事象と、記録されているＳＥＬが示す事象との関連性に基づいて、取得部２５に詳細ログを取得させないか、一部の詳細ログを取得させるか、全ての詳細ログを取得させるかを選択する（ステップＳ１０１）。選択部２３は、例えば、図６および図７に示す管理情報に基づいて、選択を行う。
【００８０】
ステップＳ１０１において、一部または全部の詳細ログを取得することが選択された場合（ステップＳ１０１でＹＥＳ）、記録部２４は、スレッド番号を取得する（ステップＳ１０３）。
【００８１】
記録部２４は、記憶部２２の詳細ログ記録領域に、発生した事象に対応するフォルダが作成されているか判定する（ステップＳ１０４）。ステップＳ１０４でＮＯの場合、記録部２４は、詳細ログに対して、スレッド番号に対応する識別情報を設定して、記憶部２２の詳細ログ記録領域に、識別情報に対応するフォルダ名のフォルダを作成する（ステップＳ１０５）。
【００８２】
ステップＳ１０４でＹＥＳの場合、またはステップＳ１０５の処理後、取得部２５は、各種ハードウェアから詳細ログを取得する（ステップＳ１０６）。記録部２４は、取得した詳細ログを記録する（ステップＳ１０７）。記録部２４は、例えば、取得した詳細ログを作成したフォルダ内に保存する。記録部２４は、取得した詳細ログを所定の形式に変換してからフォルダ内に保存してもよい。
【００８３】
なお、ステップＳ１０１において、一部の詳細ログを取得することが選択されている場合、ステップＳ１０５では、取得部２５は、取得対象の詳細ログのうちの一部の詳細ログを取得する。取得部２５は、図７の管理情報のうち「○」となっている詳細ログのみ取得する。
【００８４】
記録部２４は、詳細ログの記録を完了したかを判定する（ステップＳ１０８）。ステップＳ１０８でＮＯの場合、記録部２４は、ステップＳ１０４の処理に戻る。ステップＳ１０８でＹＥＳの場合、記録部２４は、発生したエラーに対応するＳＥＬ＿ＩＤを設定し、ＳＥＬをＳＥＬ＿ＩＤと記録時刻に対応付けて記録する（ステップＳ１０９）。記録部２４は、例えば、ＳＥＬ＿ＩＤ、日付、時刻、メッセージコードを含むＳＥＬを、ＳＥＬ記録領域に記録する。
【００８５】
記録部２４は、ＳＥＬ記録領域から、記録されたＳＥＬ＿ＩＤを取得する（ステップＳ１１０）。記録部２４は、取得したＳＥＬ＿ＩＤに基づいて、詳細ログに対応付けられた第２識別情報と詳細ログ記録領域のフォルダ名とを更新（リネーム）する（ステップＳ１１０）。すなわち、記録部２４は、詳細ログに対応付けられた第２識別情報とフォルダ名をスレッド番号からＳＥＬ＿ＩＤに対応する名称に変更する。
【００８６】
記録部２４は、詳細ログに対応付けられた識別情報とフォルダ名をスレッド番号からＳＥＬ＿ＩＤに対応する名称に変更することにより、後で行われるログ解析を効率化することができる。
【００８７】
図９は、図８のステップＳ１０１の処理の一例を示す図である。選択部２３は、各種ハードウェアから送信された情報に基づいて、エラー種別を判定する（ステップＳ２０１）。選択部２３は、図７に示す管理情報に基づいて、エラー種別を判定してもよい。
【００８８】
選択部２３は、記憶装置１２に記憶されたＳＥＬと詳細ログに基づいて、新たに発生したエラーと過去に発生したエラーとの関連性を判定する（ステップＳ２０２）。選択部２３は、例えば、新たに発生したエラー内容と、記録されたＳＥＬのメッセージコードに基づいて、関連性の有無を判定する。また、選択部２３は、関連する可能性があるエラーに関する詳細ログ選択し、その詳細ログを参照して、新たに発生したエラーと過去に発生したエラーとの関連性を判定してもよい。
【００８９】
選択部２３は、新たに発生したエラーが過去に発生したエラーと同じエラーまたは関連するエラーである場合（ステップＳ２０３でＹＥＳ）記憶装置１２に記憶された管理情報（例えば、図６）に基づいて、ログ取得方法を選択する（ステップＳ２０４）。選択部２３は、取得部２５に詳細ログを取得させないか、取得部２５に一部の詳細ログを取得させるか、取得部２５に全ての詳細ログを取得させるかを選択する。
【００９０】
ステップＳ２０３でＮＯの場合、選択部２３は、全ての詳細ログを取得することを選択する（ステップＳ２０５）。
【００９１】
以上のように、実施形態のＢＭＣ１１は、詳細ログの取得が完了した後に、ＳＥＬ＿ＩＤを設定し、ＳＥＬ＿ＩＤを含むＳＥＬを記録するため、ＳＥＬ＿ＩＤとＳＥＬ記録時刻との順序が逆転することを防ぐことができる。また、実施形態のＢＭＣ１１は、ＳＥＬ記録領域の中間に空きができた状態の発生を防ぐことができる。すなわち、実施形態のＢＭＣ１１は、記録するログの整合性を確保することができる。そのため、実施形態のＢＭＣ１１は、例えば、ログ記録中に装置の再起動が実施されたとしても余計なログを残さずにログを復元をすることができる。
【００９２】
＜ログ記録処理の第１の例＞
図１０は、ログ記録処理の第１の例を示す。図１０に示す例では、ログ記録の対象となる２つの事象（エラー）が発生し、２つのエラーにそれぞれ対応するスレッドＡおよびスレッドＢの処理が行われることを想定する。
【００９３】
図１０に示すＳＥＬ記録領域には、ＳＥＬ＿ＩＤに対応付けて、日付（ＳＥＬ記録日）、時刻（ＳＥＬ記録時刻）、メッセージコードが記録される。図１０では、予め、ＳＥＬ＿ＩＤ：「１」に対して、日付（Ｘ／Ｘ）、時刻（０９：００）、メッセージ（○○）が記録されている。また、詳細ログ記録領域には、ＳＥＬ＿ＩＤ：「１」に対応するフォルダ「ＩＤ０００１」が予め作成されている。
【００９４】
ログの取得対象のエラーＡが発生した場合（Ｓ２１）、記録部２４は、詳細ログ記録領域に、スレッド番号「２２２２」に対応するフォルダ（ＴＭＰ２２２２）を作成する。そして、取得部２５は、エラーＡに関して詳細ログの取得を開始する（Ｓ２２）。記録部２４は、エラーＡに関して取得された詳細ログを「ＴＭＰ２２２２」に保存する。
【００９５】
Ｓ２２の処理後、エラーＡと異なる、ログの取得対象のエラーＢが発生した場合（Ｓ２３）、記録部２４は、詳細ログ記録領域に、スレッド番号（３３３３）に対応するフォルダ（ＴＭＰ３３３３）を作成する。記録部２４は、フォルダを作成するとともに、エラーＢに関して詳細ログの取得を開始する（Ｓ２４）。記録部２４は、エラーＢに関して取得された詳細ログを「ＴＭＰ３３３３」に保存する。そして、エラーＢに関して、取得対象の全ての詳細ログの取得が完了したとする（Ｓ２５）。
【００９６】
記録部２４は、エラーＢについてＳＥＬ記録領域の空きを確保し、ＳＥＬ記録を行う（Ｓ２６）。ＳＥＬ＿ＩＤとして「１」が使用されているため、記録部２４は、ＳＥＬ＿ＩＤに「２」を設定する。記録部２４は、ＳＥＬ記録領域に、ＳＥＬ＿ＩＤ：「２」に対応付けて、ＳＥＬ記録時の日付および時刻と、メッセージコードとを記録する。
【００９７】
記録部２４は、ＳＥＬ記録領域から、記録したＳＥＬ＿ＩＤ「２」を取得する（Ｓ２７）。記録部２４は、エラーＢについて作成したフォルダ「ＴＭＰ３３３３」の名称を、ＳＥＬ＿ＩＤ「２」に対応する名称「ＩＤ０００２」にリネームする。
【００９８】
そして、エラーＡについて、取得対象の全ての詳細ログの取得が完了したとする（Ｓ３０）。記録部２４は、ＳＥＬ記録領域の空きを確保し、ＳＥＬ記録を行う（Ｓ３１）。ＳＥＬ＿ＩＤとして「１」、「２」が使用されているため、記録部２４は、ＳＥＬ＿ＩＤに「３」を設定する。記録部２４は、ＳＥＬ記録領域に、ＳＥＬ＿ＩＤ：「３」に対応付けて、ＳＥＬ記録時の日付および時刻と、メッセージコードとを記録する。
【００９９】
記録部２４は、ＳＥＬ記録領域から、記録したＳＥＬ＿ＩＤ：「３」を取得する（Ｓ３２）。記録部２４は、エラーＡについて作成したフォルダ「ＴＭＰ２２２２」の名称を、ＳＥＬ＿ＩＤ「３」に対応する名称「ＩＤ０００３」にリネームする。
【０１００】
以上のように、第１の例では、図４に示した例と異なり、ＳＥＬ記録領域の中間に空きができた状態やＳＥＬ＿ＩＤの順序と日時の順序が逆転した状態が発生しない。すなわち、実施形態の情報処理装置は、記録するログの整合性を確保することができる。
【０１０１】
＜ログ記録処理の第２の例＞
図１１は、ログ記録処理の第２の例を示す。図１１に示す例では、１つのスレッドにおいて、ログ記録の対象となる２つの事象（エラー）が発生したことを想定する。例えば、ハードウェアからの１回の割り込みに対して１つのスレッドを作成する場合において、１回の割り込みに対して２つのエラーが発生したことを想定する。
【０１０２】
ログの取得対象のエラーＡが発生した場合（Ｓ４１）、記録部２４は、詳細ログ記録領域に、スレッド番号「３３３３」に対応するフォルダ「ＴＭＰ３３３３」を作成する。そして、取得部２５は、エラーＡに関する詳細ログ１の取得を開始する（Ｓ４２）。記録部２４は、エラーＡに関して取得された詳細ログ１を「ＴＭＰ３３３３」に保存する。
【０１０３】
さらに、ログの取得対象のエラーＢが発生した場合（Ｓ４３）、記録部２４は、詳細ログ記録領域に、スレッド番号「３３３３」に対応するフォルダ「ＴＭＰ３３３３＿１」を作成する。そして、取得部２５は、エラーＢに関する詳細ログ２の取得を開始する（Ｓ４４）。記録部２４は、エラーＢに関して取得された詳細ログ２を「ＴＭＰ３３３３＿１」に保存する。
【０１０４】
なお、エラーＢがエラーＡに関連する場合、記録部２４は、新たなフォルダ「ＴＭＰ３３３３＿１」を作成せずに、エラーＢに関して詳細ログをフォルダ「ＴＭＰ３３３３」に保存してもよい。
【０１０５】
そして、エラーＢに関して、取得対象の全ての詳細ログ２の取得が完了したとする（Ｓ４５）。記録部２４は、ＳＥＬ記録領域の空きを確保し、エラーＢに関するＳＥＬ記録を行う（Ｓ４６）。ＳＥＬ＿ＩＤとして「１」が使用されているため、記録部２４は、ＳＥＬ＿ＩＤに「２」を設定する。記録部２４は、ＳＥＬ記録領域に、ＳＥＬ＿ＩＤ：「２」に対応付けて、ＳＥＬ記録時の日付および時刻と、メッセージコードとを記録する。
【０１０６】
記録部２４は、ＳＥＬ記録領域から、記録したＳＥＬ＿ＩＤ「２」を取得する（Ｓ４７）。記録部２４は、エラーＡに関して作成したフォルダ「ＴＭＰ３３３３＿１」の名称を、ＳＥＬ＿ＩＤ「２」に対応する名称「ＩＤ０００２」にリネームする（Ｓ４８）。
【０１０７】
そして、エラーＡに関して、取得対象の全ての詳細ログ１の取得が完了したとする（Ｓ４９）。記録部２４は、ＳＥＬ記録領域の空きを確保し、エラーＡに関するＳＥＬ記録を行う（Ｓ５０）。ＳＥＬ＿ＩＤは、「１」、「２」が使用されているため、記録部２４は、ＳＥＬ＿ＩＤに「３」を設定する。記録部２４は、ＳＥＬ記録領域に、ＳＥＬ＿ＩＤ：「３」に対応付けて、ＳＥＬ記録時の日付および時刻と、メッセージコードとを記録する。
【０１０８】
記録部２４は、ＳＥＬ記録領域から、記録したＳＥＬ＿ＩＤ「３」を取得する（Ｓ５１）。記録部２４は、エラーＡに関して作成したフォルダ「ＴＭＰ３３３３」の名称を、ＳＥＬ＿ＩＤ「３」に対応する名称「ＩＤ０００３」にリネームする（Ｓ５２）。
【０１０９】
以上のように、第２の例では、図４に示した例と異なり、ＳＥＬ記録領域の中間に空きができた状態やＳＥＬ＿ＩＤの順序と日時の順序が逆転した状態が発生しない。すなわち、実施形態の情報処理装置は、一つのスレッドで複数のエラーが発生した場合であっても、記録するログの整合性を確保することができる。
【０１１０】
＜その他＞
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０１１１】
１    第１サーバ
２    第２サーバ
１１    ＢＭＣ
１２    記憶装置
１３ａ  第１通信インタフェース
１３ｂ  第２通信インタフェース
１３ｃ  第３通信インタフェース
１４    プロセッサ
１５    ＰＳＵ
１６    センサ
１７    ＣＭＵ
１８    ＣＰＵ
１９    メモリ
２１    通信部
２２    記憶部
２３    選択部
２４    記録部
２５    取得部
【図１】
2018180982.tif 000003
【図２】
2018180982.tif 000004
【図３】
2018180982.tif 000005
【図４】
2018180982.tif 000006
【図５】
2018180982.tif 000007
【図６】
2018180982.tif 000008
【図７】
2018180982.tif 000009
【図８】
2018180982.tif 000010
【図９】
2018180982.tif 000011
【図１０】
2018180982.tif 000012
【図１１】
2018180982.tif 000013