6


自動診断および自動回復

この章では、SMS 1.5 から提供されるようになった自動エラー診断機能と自動ドメイン回復機能について説明します。


自動診断および自動回復の概要

Sun Fire ハイエンドシステムでハードウェアエラーが発生すると、システムコントローラは、特定の診断およびドメイン回復手順を実行します。以下の自動診断エンジン (DE) が、システムとそのドメインの利用度に影響を与えるハードウェアエラーを特定し、診断を行います。

SMS DE は、ドメイン停止 (dstop) を伴うハードウェアエラーを診断します。

Solaris オペレーティングシステム DE (Solaris DE とも呼ばれる) では、致命的でないドメインのハードウェアエラーを特定し、そのエラーをシステムコントローラに報告します。

POST DE は、電源投入時自己診断の実行中に発生したハードウェアテスト障害を特定します。

以下では、さまざまな診断エンジンによってハードウェアエラーが特定されたときに実行される、診断および回復手順について説明します。

ドメイン停止を伴うハードウェアエラー

図 6-1 は、SMS 診断エンジンによって dstop を伴うハードウェアエラーが特定されたときに実行される、基本的な診断およびドメイン回復手順です。


ドメイン停止の原因となるエラーの診断と回復の手順を示すフロー図。

図 6-1 ドメイン停止を伴うハードウェアエラーに対する自動診断および自動回復プロセス


図 6-1 のプロセスについて、以下で簡単に説明します。

dstop が発生すると、ダンプファイルが作成されます。このファイル (/var/opt/SUNWSMS/sms_version/adm/domain_id/dump/dsmd.dstop.yymmdd.hhmm.ss) には、dstop を伴うドメインハードウェアエラーが記録されます。

DE で複数の FRU が特定された場合、障害が発生した FRU を決定するためには、サービスプロバイダによる詳細な分析が必要となることがあります。

コード例 6-1 は、ドメインが停止したときに表示される情報と、ドメイン D で発生した障害イベントを説明する自動診断メッセージです。イベントメッセージは、[AD] インジケータ以降の部分です。イベントメッセージの内容については、診断イベントの確認 を参照してください。


コード例 6-1 プラットフォームログファイルの Dstop と自動診断イベントメッセージの例

Jul 30 14:23:26 2005 smshostname dsmd[14838]-D(): [2516 589424843782403 ERR 
EventHandler.cc 136] Domain stop has been detected in domain D
Jul 30 14:23:27 2005 smshostname dsmd[14838]-D(): [2525 589425136691417 NOTICE 
SysControl.cc 2360] Taking hardware configuration dump. Dump
file: -D/var/opt/SUNWSMS/SMS1.5/adm/D/dump/dsmd.dstop.030730.1423.27
Jul 30 14:24:37 2005 smshostname erd[14864]-D(): [11900 589495236849691 CRIT Mes
sageReportingService.cc 381] [AD]  Event: SF15000-8000-GK  CSN: 352A00005
DomainID: D  ADInfo: 1.SMS-DE.1.5 Time: Wed Jul 30 14:23:27 PDT 2005 
Recommended-Action: Service action required
 

 

SRS Net Connect の一般的な情報については、以下の Web サイトを参照してください。

http://www.sun.com/srs

SRS Net Connect 製品マニュアルについては、次の Web サイトを参照してください。

https://srsnetconnect3.sun.com

および

http://docs.sun.com

showlogs コマンドでのイベント出力は、プラットフォームとドメインのメッセージログやイベント電子メールに記載されている診断情報を補足するものです。showlogs コマンドでのイベント出力は、サービスプロバイダでさらに詳しいトラブルシューティングを行う際に使用することができます。表示されるイベント情報についての詳細は、診断および回復情報の取得 を参照してください。



注 - これらのイベントメッセージが表示されたとき、あるいはこれらのイベントが通知されたときは、サービスプロバイダに連絡してください。サービスプロバイダでは、自動診断情報を確認して、適切な保守アクションを開始します。



致命的でないドメインハードウェアエラー

図 6-2 は、致命的でないドメインハードウェアエラーの診断に関する基本的な手順です。これらのエラーによってドメインが停止することはありません。


致命的でないドメインハードウェアエラーの診断プロセスを示すフロー図。

図 6-2 致命的でないドメインハードウェアエラーの自動診断プロセス


図 6-2 の手順は、以下の相違点を除けば、ドメイン停止を伴うハードウェアエラー の節で説明した手順と同じです。

コード例 6-2 は、致命的でないハードウェアエラーの診断とイベントメッセージ情報の表示例です。イベントメッセージは、[DOM] インジケータ以降の部分です。イベントメッセージの内容については、診断イベントの確認 を参照してください。


コード例 6-2 Solaris により特定された致命的でないドメインハードウェアエラーと、ドメインイベントメッセージの例

Sep 12 14:47:24 2005 smshostname dsmd[7839]: [0 876197473671508 ERR 
SoftErrorHandler.cc 577] E$ Slot 3 SubSlot 5
Sep 12 14:47:25 2005 smshostname dsmd[7839]: [2552 876198449525014 ERR 
SoftErrorHandler.cc 592] Soft Error: Comp ID : 0x62 Error Code: 3 Error Type: 1
Error Bit/Pin: 104 
Sep 12 14:47:58 2005 smshostname erd[17227]: [11900 876231607099583 CRIT
MessageReportingService.cc 243] [DOM]  Event: SF15000-8000-FF  CSN: 352A00006
DomainID: D  ADInfo: 1.SF-SOLARIS-DE.5-9-cs3:4791004-on81:08/18/2005  Time: Fri
Sep 12 14:47:38 PDT 2005  Recommended-Action: Service action required
 

 

注 - これらのイベントメッセージが表示されたとき、あるいはこれらのイベントが通知されたときは、サービスプロバイダに連絡してください。サービスプロバイダでは、自動診断情報を確認して、適切な保守アクションを開始します。



POST 検出ハードウェア障害

システムボードコンポーネントのテストと構成を行う POST が実行されている場合は、自己診断に失敗したコンポーネントは自動的にシステムから構成解除されます。それに応じて、影響を受けたコンポーネントの健全性ステータスも POST により更新されます。

コード例 6-3 は、POST DE によって報告された、Domain B に関する自動診断イベントメッセージです。イベントメッセージの内容については、診断イベントの確認 を参照してください。


コード例 6-3 POST 自動診断イベントメッセージの例

Sep 8 13:31:16 2005 smshostname erd[11987]: [11900 240509936296585 C
RIT
MessageReportingService.cc 243] [AD]  Event: SF15000-8000-4L  CSN: 352A00005
DomainID: B  ADInfo: 1.POST-DE.1.4.1  Time: Mon Sep  8 13:30:47 PDT 2005
Recommended-Action: Service action required
 

 

これらのイベントメッセージが表示されたとき、あるいはこれらのイベントが通知されたときは、サービスプロバイダに連絡して、適切な保守アクションを開始するよう依頼してください。


電子メールイベント通知の有効化

電子メールイベント通知は、ドメイン障害イベントが発生したときに、そのドメイン障害イベントを指定した受信者に知らせる電子メール通知を自動的に作成する機能です。手動でプラットフォームやドメインのメッセージログを監視しなくても、重大な障害イベントの通知をただちに受信できます。

コード例 6-4 は、2 つのコンポーネントが指摘されている (障害の原因である疑いがもたれている) 障害イベントを報告している電子メールの例です。以下では、電子メールの内容と通知の制御方法を説明します。


コード例 6-4 イベント電子メールの例

Date: Tue, 19 Aug 2005 10:45:28 -0600 (MDT)
Subject: FAULT: SF15000, csn: 352A00007, main fault class: list.suspects
From: smshostname@xyz.com
To: undisclosed-recipients:;
 
FAULT: platform: SF15000, csn: 352A00007, main fault class: list.suspects
EVENT CODE: SF15000-8000-GK
EMBEDDED FAULT(S): fault.board.sb.l1l2
fault.board.ex.l1l2
 
Fault event in domain(s) R at Fri Jun 27 00:08:05 PDT 2005.
Fault severity = SMIEVENT_SEV_FATAL <7>
Indictment Count: 2
Indictment list:
sb11
ex11
 

 

以下のファイルが連携し合うことにより、イベント電子メールが作成されます。

このテンプレートでは、電子メールで報告するイベント情報を特定します。この情報には、電子メールの件名と、電子メールで報告する特定のイベント項目 (タグ) が含まれます。

このファイル (/etc/opt/SUNWSMS/SMS/config/event_email.cf) では、特定のイベント情報、すなわちイベントクラスと、イベントによって影響を受けたドメインを使用して、指定する電子メール受信者と、報告するイベント情報を制御する電子メールテンプレートを指定します。



注 - イベント電子メール機能では、標準の sendmail ユーティリティーを使用して、指定した電子メール受信者に電子メールを送信します。




procedure icon  電子メールイベント通知を有効にする

1. 電子メールテンプレートファイルで、電子メールで報告するイベントタグを指定します。

SMS で提供されているサンプル電子メールテンプレート(sample_email) をコピーし、コピーしたファイルを編集します。電子メールテンプレートの変更方法については、電子メールテンプレートの設定 を参照してください。

2. 電子メール制御ファイルで、電子メールの受信者と、使用する電子メールテンプレートを特定するパラメタを設定します。

SMS に含まれている電子メール制御ファイル (event_email.cf) を編集し、電子メール通知パラメタを指定します。

電子メール制御ファイルの変更方法については、電子メール制御ファイルの設定 を参照してください。



注 - 電子メール通知機能を使用する場合、電子メールの着信先アドレスを確認して、承認されているドメインだけに関するイベント通知を受信者が受信するようにします。担当者の職責や承認の有無に変更があったときは、必ず適切なセキュリティー分離を保持するプロセスを実装および実行することをお勧めします。



電子メールテンプレートの設定

sample_email (/etc/opt/SUNWSMS/SMS/config/templates) というサンプル電子メールテンプレートファイルが SMS から提供されています。コード例 6-5 はデフォルトのテンプレートです。小なり大なり括弧 (><) 内のテキストは、イベント電子メールの本文に表示されるイベント情報を特定するタグとしての機能を持っています。


コード例 6-5 デフォルトのサンプル電子メールテンプレート

# Sample Email Template File - This sample is intended to convey
# a terse fault event notification to a pager.
#
# The following is the subject line for the email with the event
# descriptor from the event and the platform model and serial
# number inserted.
#
FAULT: <PLATFORM_MODEL>, serial# <PLATFORM_SERIAL_NUMBER>, code <EVENT_CODE> 
#
# The following lines are the body of the email notification.
#
Fault event in domain(s) <EVENT_DOMAINS_AFFECTED> at <EVENT_TIMESTAMP>.
Fault severity = <EVENT_SEVERITY>
 
Indictment Count: <EVENT_INDICTMENT_COUNT>
Indictment list:
<EVENT_INDICTMENT_LIST>
 
Member fault list:
<EVENT_FAULT_MEMBERS>
# End of email template.
 

 

このサンプルテンプレートファイルをそのまま使用することも、このサンプルテンプレートファイルを新規ファイルにコピーし、そのコピーしたファイルを編集して、電子メールに含まれる追加イベントタグや別のイベントタグを特定できるようにすることもできます。サンプルテンプレートファイルのコピーや名前の変更を行うには、スーパーユーザー特権が必要です。ファイル名には任意の文字列を指定できます。

ファイルを編集する場合は、電子メールの件名と本文で報告するイベントタグを指定します。これらのタグは、ファイルの新しい行またはコメント行でない行 (# 記号が行頭に付いていない行) で指定します。電子メールテンプレートで指定できるタグのリストについては、表 6-1 を参照してください。


表 6-1 電子メールテンプレートファイルのイベントタグ

イベントタグ

表示される情報

<EVENT_CLASS>

イベントのカテゴリ (エラーレポート、障害イベント、または疑わしい障害のリスト) を示す、ドットで区切られた英数文字列。たとえば、list.suspects のように表示されます。

<EVENT_CODE>

イベントタイプを一意に識別する、ダッシュで区切られた英数字文字列。たとえば、SF15000-8000-GK のように表示されます。イベントコードは、イベントに関する障害クラスが要約されたもので、そのイベントの詳細な情報をサービスプロバイダが取得するときに使用されます。

<EVENT_DE_NAME>

障害イベントの判定に使用する診断エンジン (DE) の名前。SMS-DESF-SOLARIS-DE、または POST-DE のいずれかになります。

<EVENT_DE_VERSION>

イベントの判定に使用する診断エンジンのバージョン。

<EVENT_DOMAINS_AFFECTED>

イベントの影響を受けたドメインを、コンマで区切って列挙したリスト。

<EVENT_FAULT_MEMBERS>

障害イベントに関連する障害イベントクラスのリスト。たとえば、次のメッセージが表示されます。fault.board.sb.l1l2

<EVENT_INDICTMENT_COUNT>

障害イベントの原因となっている、あるいはその疑いがあるコンポーネントの数。

<EVENT_INDICTMENT_LIST>

障害の原因と指摘されたコンポーネント。各コンポーネントは 1 行ずつ表示されます。

<EVENT_SEVERITY>

0 〜 7 のレベルで表したイベントの重要度。たとえば、テストイベントメッセージの重要度は 2 で、ドメインが停止するような障害イベントの重要度は 7 (SMIEVENT_SEV_FATAL) です。

<EVENT_TIMESTAMP>

イベントが発生した日時。

<PLATFORM_SERIAL_NUMBER>

Sun Fire ハイエンドシステムの特定に使用するシャーシのシリアル番号

<PLATFORM_MODEL>

イベントの影響を受けた製品のモデル番号 (SF15000、SFE25000、SF12000 または SFE20000)


 

図 6-3 はカスタマイズされた電子メールテンプレートで、コード例 6-4 は、このテンプレートから作成された電子メールの例です。


カスタマイズされた電子メールテンプレートと作成された電子メールの例。図 6-3 電子メールテンプレートと作成された電子メールの例


電子メール制御ファイルの設定

電子メール制御ファイルには、以下のことを実行する電子メール通知パラメタが含まれています。

これらの通知パラメタを、SMS で提供されている電子メール制御ファイル (/etc/opt/SUNWSMS/SMS/config/event_email.cf) で指定します。このファイル (コード例 6-6) には、シャープ (#) 記号が行頭に付いたコメント行が含まれています。これらのコメント行で、ファイルの更新方法が説明されています。


コード例 6-6 電子メール制御ファイル ( event_email.cf )
#
# Copyright (c) 2004 by Sun Microsystems, Inc.
# All rights reserved.
#
# Email Control File
#
# ident "@(#)event_email.cf 1.5     03/08/19 SMI"
#
# The following fields are required to receive email notification of fault
# events
# Event_Class  Domains  Template  From  Include-event?  Recipients Script
# Event_Class and Domains are regular expressions filtering for specific event
# types and affected domains. Domains are required to be upper case.
# The following example, uncommented, generates an email for any List Event
# containing a Fault Event, affecting any domain, and sends it to
# two recipients.
# The Packed Event List is included as an attachment to the email.
#
# Event_Class  Domains  Template  From  Include-event?  Recipients  Script
#^fault[.] [A-R] sample_email FMA@xyz.com Y adm@xyz.com,adm2xyz.com sendmail.sh
#
#
# The following example, uncommented, generates an email for any Event
# that contains a Fault Event and affects domains A through C.  The Packed
# Event List is not sent as an attachment. The user would be required to add his
# custom fault_email template to the directory
# /etc/opt/SUNWSMS/config/templates, and for tag
# replacement to work should refer to the documentation, or look at the
# sample_email template in that directory.
#^fault[.] [A-C] fault_email FMA@xyz.com N admin.manager@xyz.com sendmail.sh
 

 

テキストエディタを使用してファイルを編集し、新しい行またはコメント行でない行に通知パラメタを追加します。電子メール制御ファイルを編集して、必要な電子メールパラメタを追加するには、スーパーユーザー特権が必要です。各パラメタは、スペースまたはタブで区切ります。ドメイン、イベントクラス、または電子メールテンプレートごとに、異なるイベント電子メールメッセージの配布方法を指定する複数の通知行を入力できます。設定する通知パラメタについては、表 6-2 で説明します。

Event_ClassDomains パラメタは、正規表現を使用して、範囲や特定の一致条件で指定することができます。regexp(5) マニュアルページで説明されているように、電子メール制御ファイルでは、拡張正規表現がサポートされています。いくつかの有効な正規表現の例を以下に示します。

 

コード例 6-7 は、更新された電子メール制御ファイルで、通知パラメタがファイルの最後に追加されています。sendmail.sh スクリプトを使用して、指定した 2 人の受信者にイベント電子メールが送信されます。A から C までのドメインで発生したすべての障害イベントに対してイベント電子メールが作成され、sample_email というテンプレートファイルを基にして書式が設定されます。電子メールとともに、イベントメッセージ構造が 2 進ファイルの添付ファイルとして送信されます。


コード例 6-7 電子メール制御ファイルの例
#
# Copyright (c) 2004 by Sun Microsystems, Inc.
# All rights reserved.
# Email Control File
#
# ident "@(#)event_email.cf 1.1     03/03/12 SMI"
#
# The following fields are required to receive email notification of fault
# events
# Event_Class  Domains  Template  From  Include-event?  Recipients-Script
# Event_Class and Domains are regular expressions filtering for specific event
# types and affected domains. Domains are required to be upper case.
# The following example, uncommented, generates an email for any List Event
# containing a Fault Event, affecting any domain, and sends it to
# two recipients. Recipients are email addresses separated by commas if there
# are more than 1. Embedded blanks are not permitted in the Recipients list.
# The Packed Event List is included as an attachment to the email.
#
# Event_Class  Domains  Template  From  Include-event?  Recipients Script
#^fault[.] [A-R] sample_email FMA@xyz.com Y adm1@xyz.com,adm2@xyz.com sendmail.sh
#
#
# The following example, uncommented, generates an email for any Event
# that contains a Fault Event and affects domains A through C.  The Packed
# Event List is not sent as an attachment. The user would be required to add his
# custom fault_email template to the directory
# /etc/opt/SUNWSMS/config/templates, and for tag
# replacement to work should refer to the documentation, or look at the
# sample_email template in that directory.
#
#^fault[.] [A-C] sample_email FMA@xyz.com Y adm1@xyz.com,adm2@xyz.com sendmail.sh
^fault[.] [A-C] sample_email FMA@xyz.com Y adm1@xyz.com,adm2@xyz.com sendmail.sh
 

 


電子メールイベント通知のテスト

testemail(1M) コマンドを使用して、電子メールイベント通知を確認します。このコマンドを使用すると、イベントを追跡し、電子メール制御ファイルに加えられた変更をチェックすることもできます。


procedure icon  電子メールイベント通知をテストする

1. 電子メールイベント通知の有効化 の説明に従って、電子メールイベントテンプレートと電子メール制御ファイルを設定します。

2. SC ウィンドウで、プラットフォーム管理者またはプラットフォーム保守としてログインし、以下のように入力します。


sc0:sms-user:> /opt/SUNWSMS/SMS/lib/smsadmin/testemail -c event_class_list -d domain_id [-i resource_indictment_list]

 

ここで次の点に留意します。

event_class_list は、追跡対象となる 1 つまたは複数の障害イベントクラスのリストです。

domain_id には、A-R の間のドメインを 1 つ指定します。

resource_indictment_list は、指定された各イベントクラスに割り当てる 1 つまたは複数のコンポーネントのオプションのリストです。コンポーネントの有効値のリストについては、testemail(1M) マニュアルページを参照してください。

たとえば、次のコマンドはドメイン A からイベントタイプ fault.test.email を生成します。


sc0:sms-user:> /opt/SUNWSMS/SMS/lib/smsadmin/testemail -c fault.test.email -d A

 

3. テストイベントがプラットフォームまたはドメインメッセージログに記録されたことを確認します。

たとえば、次のようなメッセージがプラットフォームのメッセージログに表示されます。


Aug 19 10:45:28 2005smshostname [6696:1]: [11917 682823530704603 ERR teste
mailApp.cc 345] Test fault with code SF15000-8000-Y1 generated by user root
using testEmailReporting - please ignore

 

4. テストイベントが正常にメッセージログに記録された場合は、指定した受信者がテスト電子メールを受信したことを確認します。

たとえば、テスト電子メールは次のように表示されます。


Date: Tue, 19 Aug 2005 10:45:28 -0600 (MDT)
Subject: FAULT: SF15000, serial# 352A0008, code SF15000-8000-Y1
From: smshostname@xyz.com
To: undisclosed-recipients:;
 
FAULT: SF15000, serial# 352A0008, code SF15000-8000-Y1
Fault event in domain(s) A at Tue Aug 19 10:45:18 MDT 2005.
Fault severity = SMIEVENT_SEV_INFO <2>
Indictment Count: 0
Indictment list:
 
Member fault list:
fault.test.email
 

 

テスト電子メールが作成されなかった場合は、次の節を参考にしてトラブルシューティングを行ってください。

テスト電子メールの作成に失敗した場合の対処法

テスト電子メール通知が受信されなかった場合は、次の操作を行ってください。

1. 電子メールイベントテンプレートと電子メール制御ファイルを調べて、ファイルが正しく設定されていることを確認します。

2. ドメインとプラットフォームのメッセージログを調べて、テストイベントが記録されていることを確認します。

3. sendmail デーモンが実行されていることを確認します。たとえば、次のメッセージが表示されます。


sc0:sms-user:> ps -ef | grep sendmail
    root  256     1  0   Aug 06 ?        0:05 /usr/lib/sendmail -bd -q15m
sms-user  525 28546  0 21:23:15 pts/27   0:00 grep sendmail

 

sendmail デーモンが実行されていない場合は、インストールの設定を修正しなければならない可能性があります。手順 4 へ進みます。

4. スーパーユーザーとしてログインして sendmail デーモンを再起動することにより、手動で sendmail を起動して、次回再起動するまで実行されるようにします。


sc0:# /usr/lib/sendmail -bd -q15m &

 

5. SC 上の /var/log/syslog を調べ、電子メールが Mail Transfer Agent (MTA) である sendmail によって送信されたかどうかを確認します。

sendmail が設定されていない場合や、正しく設定されていなかった場合は、エラーメッセージがこのログファイルに表示されるはずです。

6. ドメインおよびネームサーバーの IP アドレス (システムコントローラの外部に電子メールメッセージを配信するため) が /etc/resolv.conf ファイルで指定されていることを確認します。

7. sendmail.sh を再起動します。


sc0:#:/etc/inet.d/sendmail stop
sc0:#:/etc/inet.d/sendmail start

 


診断および回復情報の取得

ここでは、診断エラーを監視し、障害およびエラーイベントに関する追加情報を取得するさまざまな方法について説明します。

診断イベントの確認

loghost サーバーが構成されている場合は、自動診断 [AD] およびドメイン [DOM] イベントメッセージがプラットフォームメッセージログとドメインのコンソール、または syslog ホストに表示されます。[AD] または [DOM] イベントメッセージ (コード例 6-1コード例 6-2、およびコード例 6-3を参照) には、次の情報が含まれています。

イベントログの確認

プラットフォームの管理者特権、またはプラットフォームの保守特権を持っている場合は、showlogs コマンドを使用して、イベントログの内容を確認し、特定のタイプのイベントに関する詳細な情報を取得することができます。表示される情報は、サービスプロバイダがトラブルシューティングの際にも使用できます。

イベントログに記録されている、次のタイプ (クラス) のイベント情報を取得できます。

表 6-3 は、showlogs コマンドを使用してイベント情報を表示する方法の一部を示しています。


表 6-3 エラーおよび障害イベント情報を表示する showlogs (1M) コマンドのオプション

コマンドのオプション

説明

showlogs -E -p e

イベントログの最後のイベントを要約して表示します。

showlogs -E -p e number

イベントの最後の number 個のイベントデータを要約して表示します。たとえば、showlogs -E -p e 3 では、イベントログの最後 3 つの簡潔なイベント情報が表示されます。

showlogs -p e list

イベントログの最後のリストイベントを表示します。

showlogs -p e ereport

イベントログの最後の ereport (エラーレポート) を表示します。エラーレポートには、予期しない状態や動作など、ハードウェアに関する特定の情報が含まれます。

showlogs -d domain_ID -p e number

指定したドメインの最後の number 個のイベントを表示します。

showlogs -E -p e event_code

指定したイベントコードのイベントログ情報を要約して表示します。


 

showlogs コマンドのオプションの詳細と、イベントの出力例については、
System Management Services (SMS) 1.5 リファレンスマニュアル』の showlogs(1M) コマンドの説明を参照してください。