Nagiosを使用してサーバーを監視しています。今..LinuxはすべてのRAMを使用しているので、メモリが不足しているかどうかを検出する方法はありません。過度の原因でサーバーがクラッシュすることが何度かあります。メモリ使用量。
Ubuntu(linux)がOOMキラーを起動したかどうかを検出する方法はありますか?ログファイルに書き込まれていることは知っていますが、起動時に検出する方法はありますか?
/ RJ
OOMがいつ通過するかはわかりません。唯一の方法は、ログを確認して、そこにあることを期待することです(記録されない場合もあります)。
Nagiosでメモリ使用量をチェックするツールがあります。私は個人的に使用しています check_mem.pl
おそらく 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に保存された情報を破壊します。
以下のように/ 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に追加します。
明らかに、十分な空き仮想メモリがなく、アプリケーションがカーネルにメモリ領域を要求したときに起動されます。したがって、実際に監視する必要があるのは、空きメモリサイズです。また、負荷平均は、十分な空きメモリがない場合は常に高くなるため、監視の対象にもなります。