Solaris のシステム管理 (上級編)

第 15 章 システムメッセージの管理

この章では、Oracle Solaris OS のシステムメッセージ機能について説明します。

システムメッセージの表示

システムのメッセージはコンソールデバイスに表示されます。ほとんどのシステムメッセージは次の形式で表示されます。

[ID msgid facility. priority]

次に例を示します。


[ID 672855 kern.notice] syncing file systems...

カーネルから出されるメッセージには、カーネルモジュール名が次のように表示されます。次に例を示します。


Oct 1 14:07:24 mars ufs: [ID 845546 kern.notice] alloc: /: file system full 

システムがクラッシュすると、システムのコンソールに次のようなメッセージが表示されることがあります。


panic: error message

まれに、パニックメッセージではなく次のメッセージが表示されることがあります。


Watchdog reset !

エラー記録デーモン syslogd は、さまざまなシステムの警告やエラーをメッセージファイルに自動的に記録します。デフォルトでは、これらのシステムメッセージの多くは、システムコンソールに表示されて、/var/adm ディレクトリに格納されます。システムメッセージ記録を設定することによって、これらのメッセージを格納する場所を指示できます。詳しくは、「システムのメッセージ記録のカスタマイズ」を参照してください。これらのメッセージは、失敗の予兆のあるデバイスなど、システム障害をユーザーに警告できます。

/var/adm ディレクトリには、いくつかのメッセージファイルが含まれています。もっとも新しいメッセージは、/var/adm/messages (および messages.*) にあり、もっとも古いメッセージは、messages.3 にあります。一定の期間 (通常は 10 日) ごとに、新しい messages ファイルが作成されます。messages.0 のファイル名は messages.1 に、messages.1messages.2 に、messages.2messages.3 にそれぞれ変更されます。その時点の /var/adm/messages.3 は削除されます。

/var/adm ディレクトリは、メッセージやクラッシュダンプなどのデータを含む大きなファイルを格納するため、多くのディスク容量を消費します。/var/adm ディレクトリが大きくならないようにするために、そして将来のクラッシュダンプが保存できるようにするために、不要なファイルを定期的に削除しなければなりません。crontab ファイルを使用すれば、この作業は自動化できます。この作業の自動化については、「クラッシュダンプファイルを削除する方法」および第 8 章システムタスクのスケジュール設定 (手順)を参照してください。

Procedureシステムメッセージを表示する方法

  1. システムクラッシュまたはリブートによって生成された最近のメッセージを表示するには、dmesg コマンドを使用します。


    $ dmesg
    

    あるいは、more コマンドを使用して、メッセージを 1 画面ごとに表示します。


    $ more /var/adm/messages
    

例 15–1 システムメッセージの表示

次の例は、dmesg コマンドからの出力を示します。


$ dmesg
Jan  3 08:44:41 starbug genunix: [ID 540533 kern.notice] SunOS Release 5.10 ...
Jan  3 08:44:41 starbug genunix: [ID 913631 kern.notice] Copyright 1983-2003 ...
Jan  3 08:44:41 starbug genunix: [ID 678236 kern.info] Ethernet address ...
Jan  3 08:44:41 starbug unix: [ID 389951 kern.info] mem = 131072K (0x8000000)
Jan  3 08:44:41 starbug unix: [ID 930857 kern.info] avail mem = 121888768
Jan  3 08:44:41 starbug rootnex: [ID 466748 kern.info] root nexus = Sun Ultra 5/
10 UPA/PCI (UltraSPARC-IIi 333MHz)
Jan  3 08:44:41 starbug rootnex: [ID 349649 kern.info] pcipsy0 at root: UPA 0x1f0x0
Jan  3 08:44:41 starbug genunix: [ID 936769 kern.info] pcipsy0 is /pci@1f,0
Jan  3 08:44:41 starbug pcipsy: [ID 370704 kern.info] PCI-device: pci@1,1, simba0
Jan  3 08:44:41 starbug genunix: [ID 936769 kern.info] simba0 is /pci@1f,0/pci@1,1
Jan  3 08:44:41 starbug pcipsy: [ID 370704 kern.info] PCI-device: pci@1, simba1
Jan  3 08:44:41 starbug genunix: [ID 936769 kern.info] simba1 is /pci@1f,0/pci@1
Jan  3 08:44:57 starbug simba: [ID 370704 kern.info] PCI-device: ide@3, uata0
Jan  3 08:44:57 starbug genunix: [ID 936769 kern.info] uata0 is /pci@1f,0/pci@1,
1/ide@3
Jan  3 08:44:57 starbug uata: [ID 114370 kern.info] dad0 at pci1095,6460
.
.
.

参照

詳細は、dmesg(1M) のマニュアルページを参照してください。

システムログローテーション

システムログファイルは、root の crontab ファイルのエントリから logadm コマンドによって実行されます。/usr/lib/newsyslog スクリプトは使用されません。

このシステムログローテーションは、/etc/logadm.conf ファイルに定義されます。このファイルには、syslogd などのプロセスのログローテーションエントリが含まれています。たとえば、/etc/logadm.conf ファイルにある 1 つのエントリは、/var/log/syslog ファイルが空でなければローテーションが毎週実行されることを示しています。つまり、最新の syslog ファイルが syslog.0 になり、その次に新しい syslog ファイルが syslog.1 になります。最新からさかのぼって 8 つまでの syslog ログファイルが保存されます。

また、/etc/logadm.conf ファイルには、最後のログローテーション実行時のタイムスタンプも含まれます。

logadm コマンドを使用して、必要に応じてシステムログをカスタマイズしたり、/etc/logadm.conf ファイルにログを追加したりすることができます。

たとえば、Apache アクセスとエラーログのローテーションを実行するには、次のコマンドを使用します。


# logadm -w /var/apache/logs/access_log -s 100m
# logadm -w /var/apache/logs/error_log -s 10m

この例では、Apache の access_log ファイルのローテーションは、そのサイズが 100M バイトに達したときに実行され、そのファイル名に .0 .1 などのように接尾辞が付けられます。また、古い access_log ファイルのコピーが 10 個保存されます。また、error_log のローテーションは、そのサイズが 10M バイトに達したときに実行され、access_log ファイルと同様に、接尾辞が付けられ、コピーが保存されます。

前述の Apache ログローテーションの例における /etc/logadm.conf エントリの例は、次のようになります。


# cat /etc/logadm.conf
.
.
.
/var/apache/logs/error_log -s 10m
/var/apache/logs/access_log -s 100m

詳細は、logadm(1M) のマニュアルページを参照してください。

スーパーユーザーでログインするか、同等の役割 (ログ管理の権限を持つ) でアクセスすることによって、logadm コマンドを使用できます。役割によるアクセス制御 (RBAC) を設定すれば、logadm コマンドへのアクセス権を与えることで、root 以外のユーザーにログ管理の権限を与えることができます。

たとえば、次のエントリを /etc/user_attr ファイルに追加すれば、logadm コマンドを使用する権限がユーザー andy に与えられます。


andy::::profiles=Log Management

または、Solaris 管理コンソールを使用して、ログ管理の役割を設定できます。役割の設定については、『Solaris のシステム管理 (セキュリティサービス)』「役割によるアクセス制御 (概要)」を参照してください。

システムのメッセージ記録のカスタマイズ

/etc/syslog.conf ファイルを変更すると、さまざまなシステムプロセスが生成するさらに多くのエラーメッセージを記録できます。デフォルトでは、/etc/syslog.conf は、多くのシステムプロセスのメッセージが /var/adm/messages ファイルに格納されるように指示します。クラッシュとブートのメッセージも、同様にこのファイルに格納されます。/var/adm メッセージを表示する方法については、「システムメッセージを表示する方法」を参照してください。

/etc/syslog.conf ファイルは、タブで区切られた 2 つの列から構成されています。


facility.level ... action
facility.level

機能またはメッセージや状態のシステムでの出所。コンマで区切られた機能のリスト。機能の値については、表 15–1 を参照。level は、記録する状態の重要度や優先順位を示します。優先レベルについては表 15–2 を参照

同じ機能の 2 つのエントリは、それぞれの優先順位が異なる場合、同じ行に入力しないでください。syslog ファイルに優先順位を入力すると、この優先順位以上のすべてのメッセージが記録され、最後のメッセージが優先されます。指定の機能とレベルに対し、syslogd はそのレベル以上のすべてのメッセージを記録します。

action

動作フィールドは、メッセージが転送される場所を示します。

次の例は、デフォルトの /etc/syslog.conf ファイルのサンプルを示します。


user.err                                        /dev/sysmsg
user.err                                        /var/adm/messages
user.alert                                      `root, operator'
user.emerg                                      *

この例は、次のユーザーメッセージが自動的に記録されることを意味します。


注 –

エントリを個別の行に入力すると、/etc/syslog.conf ファイルでログの対象が複数回指定された場合に、メッセージのログ順が変わることがあります。単独行のエントリに複数のセレクターを指定できます。その際、セレクターはセミコロンで区切ります。


一般的なエラー状態の送信元を次の表に示します。一般的な優先順位を、重要度順に表 15–2 に示します。

表 15–1 syslog.conf メッセージの送信元の機能

送信元 

説明 

kern

カーネル 

auth

認証 

デーモン

すべてのデーモン 

mail

メールシステム 

lp

スプールシステム 

user

ユーザープロセス 


注 –

/etc/syslog.conf ファイルで有効化できる syslog 機能の数に制限はありません。


表 15–2 syslog.conf メッセージの優先レベル

優先順位 

説明 

emerg

システムの緊急事態 

alert

すぐに修正が必要なエラー 

crit

致命的なエラー 

err

その他のエラー 

info

情報メッセージ 

debug

デバッグ用の出力 

none

この設定は出力を記録しない  

Procedureシステムのメッセージ記録をカスタマイズする方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. /etc/syslog.conf ファイルを編集します。syslog.conf(4) のマニュアルページで説明している構文に従って、メッセージの送信元、優先順位、およびメッセージの格納場所を追加または変更します。

  3. 変更を保存して編集を終了します。


例 15–2 システムのメッセージ記録のカスタマイズ

次の /etc/syslog.confuser.emerg 機能の例は、ユーザー緊急メッセージを root ユーザーと個別のユーザーに送信します。


user.emerg                                      `root, *'

リモートコンソールメッセージングを有効にする

次の新しいリモートコンソール機能を使うと、リモートシステムの問題を解決しやすくなります。

実行レベルの変更中に補助コンソールメッセージングを使用する

実行レベルの変更中に補助コンソールメッセージングを使う場合は、次の点に注意してください。

対話型ログインセッション中に consadm コマンドを使用する

シリアルポートに接続された端末からシステムにログインしてから、 consadm コマンドを使ってこの端末にコンソールメッセージを表示して、対話型ログインセッションを行う場合、次の点に注意してください。

Procedure補助 (リモート) コンソールを有効にする方法

consadm デーモンは、consadm コマンドで補助コンソールを追加するまでポートの監視を開始しません。セキュリティー機能として、コンソールメッセージは、キャリア信号が失われるまでか、補助コンソールデバイスの選択が解除されるまでの間だけ出力変更されます。そのため、consadm コマンドを使うには、そのポートでキャリア信号が確立されている必要があります。

補助コンソールの有効化については、consadm(1m) のマニュアルページを参照してください。

  1. システムにスーパーユーザーとしてログインします。

  2. 補助コンソールを有効にします。


    # consadm -a devicename
    
  3. 現在の接続が補助コンソールであることを確認します。


    # consadm
    

例 15–3 補助 (リモート) コンソールを有効にする


# consadm -a /dev/term/a
# consadm
 /dev/term/a

Procedure補助コンソールのリストを表示する方法

  1. システムにスーパーユーザーとしてログインします。

  2. 次のどちらかの手順に従います。

    1. 補助コンソールのリストを表示します。


      # consadm
      /dev/term/a
    2. 持続的補助コンソールのリストを表示します。


      # consadm -p
      /dev/term/b

Procedureシステムリブート後も補助 (リモート) コンソールを有効にする方法

  1. システムにスーパーユーザーとしてログインします。

  2. 複数のシステムリブート後も補助コンソールを有効にします。


    # consadm -a -p devicename     
    

    このデバイスが持続的な補助コンソールのリストに追加されます。

  3. デバイスが持続的な補助コンソールのリストに追加されているか確認します。


    # consadm
    

例 15–4 システムリブート後も補助 (リモート) コンソールを有効にする


# consadm -a -p /dev/term/a 
# consadm
/dev/term/a

Procedure補助 (リモート) コンソールを無効にする方法

  1. システムにスーパーユーザーとしてログインします。

  2. 次のどちらかの手順に従います。

    1. 補助コンソールを無効にします。


      # consadm -d devicename
      

      または

    2. 補助コンソールを無効にし、持続的な補助コンソールのリストから削除します。


      # consadm -p -d devicename
      
  3. 補助コンソールが無効になっていることを確認します。


    # consadm
    

例 15–5 補助 (リモート) コンソールを無効にする


# consadm -d /dev/term/a
# consadm