5



自動診断および自動回復

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


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

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

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

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

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

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

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

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

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

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

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

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

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

POST 検出ハードウェア障害

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

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

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


Sep  8 13:31:16 2003 smshostname erd[11987]: [11900 240509936296585 CRIT
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 2003
Recommended-Action: Service action required


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


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

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

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

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


Date: Tue, 19 Aug 2003 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 2003.
Fault severity = SMIEVENT_SEV_FATAL <7>
Indictment Count: 2
Indictment list:
sb11
ex11


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



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




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

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

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

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

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

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



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



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

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

コード例 5-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.


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

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

表 5-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)


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

図 5-3 電子メールテンプレートと作成された電子メールの例

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

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

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

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

コード例 5-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


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

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

表 5-2 電子メール制御ファイルのパラメタ

電子メール制御パラメタ

説明

Event_Class

フィルタとして使用する障害イベントクラス。

このパラメタが広範囲のイベントクラスに適用されるように、イベントクラスを正規表現で指定する。たとえば、デフォルトの書式 fault.* では、「fault」というイベント名の障害イベントが、すべてイベント電子メールに報告される。

Domains

フィルタとして使用するドメイン。デフォルトの書式 [A-R] では、A から R までのドメインで発生した障害イベントが電子メールで特定される。ドメインは大文字で指定する。

Template

電子メールの内容の作成に使用する電子メールテンプレートファイルの名前。

From

電子メールの作成者の電子メールアドレス。

Include-event?

以下の状態のいずれかである。

  • Y - はい、イベントメッセージ構造の 2 進ファイルを、電子メールの添付ファイルとして含める。このファイルは、サービスプロバイダによるトラブルシューティングの際に使用できる。

  • N - いいえ、イベントメッセージ構造の 2 進ファイルを、電子メールの添付ファイルとして含めない。

Recipients

イベント電子メールを受信する個人の電子メールアドレス。各アドレスはコンマで区切る。

Script

指定した受信者に電子メールを送信する際に使用するシェルスクリプト。/etc/opt/SUNWSMS/config/scriptssendmail.sh スクリプトが標準のスクリプトであるが、この標準のスクリプトの代わりに独自に作成したスクリプトを同じディレクトリで使用することもできる。


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

コード例 5-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) マニュアルページを参照してください。

たとえば、次のコマンドを指定します。

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

このコマンドでは、ドメイン A から fault.test.email というタイプのイベントが生成されます。

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

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

Aug 19 10:45:28 2003smshostname [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 2003 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 2003.
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 を起動します。これで、次回再起動するまで 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] イベントメッセージ (コード例 5-1コード例 5-2、およびコード例 5-3 を参照) には、次の情報が含まれています。

イベントログの確認

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

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

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

表 5-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.4.1 リファレンスマニュアル』の showlogs(1M) コマンドの説明を参照してください。