web-dev-qa-db-ja.com

UbuntuでOOMキラーが実行されたかどうかを検出する方法

Nagiosを使用してサーバーを監視しています。今..LinuxはすべてのRAMを使用しているので、メモリが不足しているかどうかを検出する方法はありません。過度の原因でサーバーがクラッシュすることが何度かあります。メモリ使用量。

Ubuntu(linux)がOOMキラーを起動したかどうかを検出する方法はありますか?ログファイルに書き込まれていることは知っていますが、起動時に検出する方法はありますか?

/ RJ

4

OOMがいつ通過するかはわかりません。唯一の方法は、ログを確認して、そこにあることを期待することです(記録されない場合もあります)。

Nagiosでメモリ使用量をチェックするツールがあります。私は個人的に使用しています check_mem.pl

1
Lucas Kauffman

おそらく logtail によって。

oom-killerは、syslogとdmesgで実行の痕跡を残します。 cronジョブまたはスクリプトを配置して、syslogを「ログテール」する監視ツールを介して呼び出し、実行の間に以下のような行がある場合に警告することができます。

Feb 24 13:35:29 hostname kernel: [22472693.216224] foobar:23 invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0

dmesgは「ログテーラブル」ではありませんが、dmesg -cは印刷後にdmesgバッファをクリアするため、スクリプトはdmesg -c | grep <string> | wc -lを呼び出すことができます。値が1以上の場合、las run/boot以降にoom-killerが呼び出されたことを意味します。しかし、これはあなたのdmesgに保存された情報を破壊します。

2
theist

以下のように/ etc/rsyslog.d/30-oom-killer.confを作成します。

if ($msg contains [
    "oom",
    "kill"
]) then {
    /var/log/oom-killer.log
    stop
}

/ var/log/oom-killer.log/ etc/logrotate.d/rsyslogに追加します。

1

明らかに、十分な空き仮想メモリがなく、アプリケーションがカーネルにメモリ領域を要求したときに起動されます。したがって、実際に監視する必要があるのは、空きメモリサイズです。また、負荷平均は、十分な空きメモリがない場合は常に高くなるため、監視の対象にもなります。

0
Alex