ちょっとLinuxのサーバーログを調べるときに使うコマンド

Linuxのログファイルで主になるのが/var/log/messagesになります。

リアルタイムでログを監視

tail -fを使用することで確認できます。

tail -f /var/log/messages

終了はCtrl+cで行います。

ログファイルから特定のメッセージのみを調査したい

grepを使用することで確認できます。

下記の例はoom-killerによりプロセスが強制終了したときのログのみを表示させています。

[root@server ~]# grep oom-killer /var/log/messages
Sep  7 09:05:47 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
Sep  7 09:35:57 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
Sep  7 09:45:42 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
Sep  7 09:58:31 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
Sep  7 09:58:33 server kernel: postgres invoked oom-killer: gfp_mask=0x200da, order=0, oom_score_adj=0

oom-killerにより強制終了した09:05:47のログを抽出して見ます。

[root@server ~]# grep 09:05:47 /var/log/messages
Sep  7 09:05:47 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
Sep  7 09:05:47 server kernel: SysMonMgr cpuset=/ mems_allowed=0
Sep  7 09:05:47 server kernel: CPU: 2 PID: 230184 Comm: SysMonMgr Not tainted 3.10.0-327.el7.x86_64 #1
Sep  7 09:05:47 server kernel: Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.0 12/17/2019
Sep  7 09:05:47 server kernel: ffff880b78b42280 00000000fdacee5d ffff88070ccdbb00 ffffffff816351f1
Sep  7 09:05:47 server kernel: ffff88070ccdbb90 ffffffff81630191 ffff880a372069f0 ffff880a37206a08
Sep  7 09:05:47 server kernel: ffffffff00000202 fffeefff00000000 0000000000000001 ffffffff81128803
Sep  7 09:05:47 server kernel: Call Trace:
Sep  7 09:05:47 server kernel: [<ffffffff816351f1>] dump_stack+0x19/0x1b
Sep  7 09:05:47 server kernel: [<ffffffff81630191>] dump_header+0x8e/0x214
Sep  7 09:05:47 server kernel: [<ffffffff81128803>] ? delayacct_end+0x63/0xb0

強制終了の原因は、SysMonMgr cpuset=/ mems_allowed=0より、メモリ不足によるものだとわかります。