web-dev-qa-db-ja.com

Netconsoleが機能しない

最近、さまざまなカーネルパニックが発生しているサーバーでnetconsoleをセットアップし、カーネルメッセージを別のサーバーに記録しようとしています。ネットキャットセッションを開始し、データのランダムなビットを入力して、ホストサーバーに設定した後、ネットコンソールをテストしました。これらは問題なくキャプチャサーバーに到着し、設定したログファイルのテキストを表示できます。

ただし、dmesgにログインしているもの(カーネルメッセージなど)は、キャプチャサーバーに転送されていません。私のprintkは61 4 7に設定されており(私も8 1 4 7になりました)、何もありません。 modprobeでモジュールを有効/無効にしようとしましたが、キャプチャサーバーに出力がありません。

すべてが明らかに正しく設定されているため、この時点で他に何を確認すればよいかわからないため、これに関するアドバイスをいただければ幸いです。

2
Striketh

ホストサーバーに設定してnetconsoleをテストしたと言います。そこでリスニングsyslogdをセットアップし、クライアントでnetcatを使用してメッセージを送信したということですか?はいの場合、実際にnetconsoleをテストしたようには見えません。

すべてのMACアドレスが正しい状態で、netconsoleのセットアップを確認しましたか? documentation は素晴らしく詳細です。適切な属性を使用してモジュールをロードしたら、rootとして/ dev/kmsgに書き込むことでモジュールをテストできます。

# echo my kernel message > /dev/kmsg

または、 memdumpをトリガーするか、sysrqでクラッシュします 。 Netconsoleはこれを取得して、ターゲットに送信する必要があります。 Tcpdumpは、テスト中に送信されるパケットの種類を確認するのに非常に役立ちます。このようなものがあなたを始めるでしょう(イーサネットアドレスを含む-eに注意してください):

# tcpdump -i eth0 -n -e port 514

あなたはパニックを捕らえたいと言っています。これらのパニックの性質は、netconsole(またはkexec/kdump)が(最近のうるう秒の問題の場合のように)何もできない前にシステムを完全に強制終了する、または実際に成功したログエントリを取得する可能性があります。 。

ちなみに、netconsoleの代わりに、 kexec + kdump カーネル機能を使用することもできます。 「管理可能な」パニックが発生すると、カーネルはkdump対応のカーネルをkexecし、最小限のinitrdをロードしてから、カーネルダンプをディスクに書き込みます。その後、crashなどのツールで分析できます。

2
svenx