今号では、ログを読みやすくするためのちょっとした小技 (コマンド) のご紹介をします!
行番号を表示する
less -N コマンドを使用すると、ログの左側に行番号を表示します。
行番号でログの内容を管理できると、後で見返す際に便利ですね。
例:less -N /var/log/messages コマンドで messages ファイルの内容を表示した結果
1 Dec 10 03:12:02 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="5956" x-info="http://www.rsyslog.com"] rsyslogd was HUPed 2 Dec 10 03:12:02 localhost systemd: Removed slice User Slice of root. 3 Dec 10 03:20:01 localhost systemd: Created slice User Slice of root. 4 Dec 10 03:20:01 localhost systemd: Started Session 2015 of user root. 5 Dec 10 03:20:01 localhost systemd: Removed slice User Slice of root. 6 Dec 10 03:30:01 localhost systemd: Created slice User Slice of root. 7 Dec 10 03:30:01 localhost systemd: Started Session 2016 of user root. 8 Dec 10 03:30:01 localhost systemd: Removed slice User Slice of root. …
不要な情報を表示しないようにする
grep -v コマンドを使用すると、指定した単語 (行) を表示しないようにすることができます。
例えば、messages ファイルにはユーザのログイン情報が大量に出力されますが、これらの行を表示しないようにすることで
目的のログを探しやすくすることができます。
例:messages ファイルの内容のうち、systemd の情報以外を表示したい場合
# grep -v systemd /var/log/messages Dec 10 03:12:02 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="5956" x-info="http://www.rsyslog.com"] rsyslogd was HUPed Dec 10 07:32:28 localhost dhclient[16777]: DHCPREQUEST on ens192 to 10.11.0.4 port 67 (xid=0x73eaff20) Dec 10 07:32:28 localhost dhclient[16777]: DHCPACK from 10.11.0.4 (xid=0x73eaff20) Dec 10 07:32:28 localhost NetworkManager[5386]:[1702161148.6850] dhcp4 (ens192): address 10.1.1.5 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6853] dhcp4 (ens192): plen 16 (255.255.0.0) Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6853] dhcp4 (ens192): gateway 10.1.0.1 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6853] dhcp4 (ens192): lease time 43200 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6854] dhcp4 (ens192): nameserver '10.11.0.2' Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6854] dhcp4 (ens192): nameserver '10.11.0.3' Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6854] dhcp4 (ens192): state changed bound -> bound
なお、1. で紹介した less -N コマンドと組み合わせて使用することもできます。
例:grep -v systemd /var/log/messages | less -N コマンドで messages ファイルの内容を表示した結果
1 Dec 10 03:12:02 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="5956" x-info="http://www.rsyslog.com"] rsyslogd was HUPed 2 Dec 10 07:32:28 localhost dhclient[16777]: DHCPREQUEST on ens192 to 10.11.0.4 port 67 (xid=0x73eaff20) 3 Dec 10 07:32:28 localhost dhclient[16777]: DHCPACK from 10.11.0.4 (xid=0x73eaff20) 4 Dec 10 07:32:28 localhost NetworkManager[5386]:[1702161148.6850] dhcp4 (ens192): address 10.1.1.5 5 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6853] dhcp4 (ens192): plen 16 (255.255.0.0) 6 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6853] dhcp4 (ens192): gateway 10.1.0.1 7 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6853] dhcp4 (ens192): lease time 43200 8 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6854] dhcp4 (ens192): nameserver '10.11.0.2' 9 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6854] dhcp4 (ens192): nameserver '10.11.0.3' 10 Dec 10 07:32:28 localhost NetworkManager[5386]: [1702161148.6854] dhcp4 (ens192): state changed bound -> bound
※less -N /var/log/messages | grep -v systemd コマンドでは行数が表示されません。
unix 時間を変換する
ソフトウェアの種類によっては、デフォルトの設定でログの時刻が unix 時間となっており、人間にとって読みづらい場合があります (squid などがこれに該当します)。
そのような場合 awk コマンドを使用して、指定した文字列の内容を置き換えることができます。
例:ログファイル (今回は squid の access.log) の時刻を、unix 時間から yyyy/mm/dd hh:mm:ss 形式に変換したい場合
# cat access.log 1701936353.513 19 10.1.1.100 TCP_TUNNEL/200 20 CONNECT example.com:80... 1701936371.322 61 10.1.1.100 TCP_TUNNEL/200 40 CONNECT example.com:80... 1701936392.054 77 10.1.1.100 TCP_TUNNEL/200 40 CONNECT example.com:80... 1701936412.127 37 10.1.1.100 TCP_TUNNEL/200 40 CONNECT example.com:80... 1701936431.592 28 10.1.1.100 TCP_TUNNEL/200 25 CONNECT example.com:80... # # cat access.log | awk '{print strftime("%Y/%m/%d %H:%M:%S", $1), $0}' 2023/12/07 17:05:53 1701936353.513 19 10.1.1.100 TCP_TUNNEL/200 20 CONNECT example.com:80... 2023/12/07 17:06:11 1701936371.322 61 10.1.1.100 TCP_TUNNEL/200 40 CONNECT example.com:80... 2023/12/07 17:06:32 1701936392.054 77 10.1.1.100 TCP_TUNNEL/200 40 CONNECT example.com:80... 2023/12/07 17:06:52 1701936412.127 37 10.1.1.100 TCP_TUNNEL/200 40 CONNECT example.com:80... 2023/12/07 17:07:11 1701936431.592 28 10.1.1.100 TCP_TUNNEL/200 25 CONNECT example.com:80...