まずは、ログサーバ側の syslogd の設定方法。
/etc/sysconfig/syslogd の SYSLOGD_OPTIONS を次のように設定します。
# Options to syslogd # -m 0 disables 'MARK' messages. # -r enables logging from remote machines # -x disables DNS lookups on messages recieved with -r # See syslogd(8) for more details SYSLOGD_OPTIONS="-m 0 -r -x"リモートからメッセージを受けるには、-r オプションだけでいいのですが、DNS へのアクセスを避けたい場合は、-x オプションも設定します。
次に netconsole 側の設定方法。CentOS 5 の場合は、/etc/sysconfig/netconsole を環境に合わせて設定(※)して、netconsole サービスを start すれば良い。
# This is the configuration file for the netconsole service. By starting # this service you allow a remote syslog daemon to record console output # from this system. # The local port number that the netconsole module will use # LOCALPORT=6666 # The ethernet device to send console messages out of (only set this if it # can't be automatically determined) DEV=eth1 ※ # The IP address of the remote syslog server to send messages to SYSLOGADDR=192.168.11.222 ※ # The listening port of the remote syslog daemon # SYSLOGPORT=514 # The MAC address of the remote syslog server (only set this if it can't # be automatically determined) SYSLOGMACADDR=00:0C:29:86:DC:7A ※netconsole サービスを起動します。
# service netconsole start Initializing netconsole [ OK ] # dmesg | tail -7 netconsole: local port 6666 netconsole: local IP 192.168.163.222 netconsole: interface eth1 netconsole: remote port 514 netconsole: remote IP 192.168.11.222 netconsole: remote ethernet address 00:0c:29:86:dc:7a netconsole: network logging starteddmesg の出力から使用される IP アドレスとポートを確認できます。
最後に、動作確認ですが、次のように sysrq-trigger を使ってカーネルにメッセージを生成させればよいかと思います。
# echo p > /proc/sysrq-trigger # dmesg | tail -1 SysRq : Show Regsログサーバ側には、次のように出力されます。
# tail -2 /var/log/messages Jan 16 19:59:29 192.168.163.222 SysRq : Jan 16 19:59:29 192.168.163.222 Show Regsこのように、ローカルでは1行で出力されるメッセージが、ログサーバ側には2行に分割されて出力されてしまいます。これは、netconsole の場合の特徴で、カーネル内でメッセージ出力の際に呼ばれる printk 関数毎に UDP パケットが生成/転送されるためです。SysRq p の対応コードを読めば printk が2回呼ばれていることが分かります。参照するカーネルソースファイルは、drivers/char/sysrq.c です。
注意点としては、以下が挙げられます。
●ローカルでは1行で出力されるメッセージが2行以上に分割される場合がある。
●残念ながら bonding インタフェースは利用できない。
→Fedora 14 でも試してみましたが、やはり NG でした。bonding モジュールに netpoll サポートが無いためのようですが、実装は困難なのかもしれません。あまりニーズも無い?
●設定を行う際、ログサーバ側の iptables にも注意する。
→当然ながら syslog 用ポート 514/udp が許可されている必要がある。
●ルータ越えを行う場合は、SYSLOGMACADDR にルータの MAC を設定する必要がある。
→私の環境では、ルータ越えは動作しました。そもそも動作しないということはないようです。
2011-02-05追記
これら注意点から、普通は商用サーバでは使えないものと思っています。どうしてもダンプ(kdump)も採取できないような障害に遭遇して情報採取(SysRq 等)が必要な場合は、最も確実なシリアルコンソールを使うのが良いと思う。
0 件のコメント:
コメントを投稿