TenForward

技術ブログ。はてなダイアリーから移転しました

netconsole でカーネルメッセージをリモートの syslogd で受ける

開発中の Plamo-5.0 を日常のデスクトップにして仕事をしていますが,たまに X を使っていると,そのまま突然死してしまうことがあります.console に落ちてダンプが見える場合もあるんですが,大概は X がブラックアウトした状態で固まるか,そのまま男らしく黙って再起動してしまいます.つまり,原因究明のためのメッセージが残りません.

そこで,カーネルメッセージをリモートに飛ばして,syslogd で受けるという設定をしてみました.これには netconsole というモジュールを使いますので,カーネルで有効になっている必要があります.

/etc/modprobe.conf

netconsole モジュールをロードするときのオプションとして,以下のように設定します.

options netconsole netconsole=6665@192.168.0.100/eth0,514@192.168.0.101/xx:xx:xx:xx:xx:xx
"netconsole=送信元ポート@送信元アドレス/インターフェース,受信先ポート@受信先アドレス/受信先MACアドレス"

ですね.

あとは起動時に netconsole がロードされるように /etc/rc.d/rc.modules なんかに書いておきます.

/sbin/modprobe -v netconsole

受信先での設定

これは受信先の syslogd の設定になります.今回は Debian 上で動いている rsyslogd で受けていますので,/etc/rsyslog.conf で以下のように設定しました (コメント外しただけですが).

$ModLoad imudp
$UDPServerRun 514

こんな感じで出ています.

Aug  3 13:15:17 enterprise [ 1821.691236] netconsole: local port 6665
Aug  3 13:15:17 enterprise [ 1821.691241] netconsole: local IP 192.168.0.100
Aug  3 13:15:17 enterprise [ 1821.691244] netconsole: interface 'eth0'
Aug  3 13:15:17 enterprise [ 1821.691247] netconsole: remote port 514
Aug  3 13:15:17 enterprise [ 1821.691250] netconsole: remote IP 192.168.0.101
Aug  3 13:15:17 enterprise [ 1821.691253] netconsole: remote ethernet address xx:xx:xx:xx:xx:xx
Aug  3 13:15:17 enterprise [ 1821.691296] console [netcon0] enabled
Aug  3 13:15:17 enterprise [ 1821.691300] netconsole: network logging started

送信元ホストで例えば Sysrq m (SysRq + Alt + m)とやると,以下のような感じに.

Aug  3 13:28:58 Show Memory
Aug  3 13:28:58 enterprise [ 2642.654449] Mem-Info:
Aug  3 13:28:58 enterprise [ 2642.654453] DMA per-cpu:
Aug  3 13:28:58 enterprise [ 2642.654457] CPU    0: hi:    0, btch:   1 usd:   0
Aug  3 13:28:58 enterprise [ 2642.654462] CPU    1: hi:    0, btch:   1 usd:   0
Aug  3 13:28:58 enterprise [ 2642.654466] DMA32 per-cpu:
Aug  3 13:28:58 enterprise [ 2642.654470] CPU    0: hi:  186, btch:  31 usd: 164
Aug  3 13:28:58 enterprise [ 2642.654475] CPU    1: hi:  186, btch:  31 usd:   4
Aug  3 13:28:58 enterprise [ 2642.654478] Normal per-cpu:
Aug  3 13:28:58 enterprise [ 2642.654482] CPU    0: hi:  186, btch:  31 usd: 155
Aug  3 13:28:58 enterprise [ 2642.654487] CPU    1: hi:  186, btch:  31 usd:  95
  : (略)

さあ,これで有効なメッセージが取れるでしょうか? しばらく様子見で,ダメならまた別の方法も試します.