知っておくとちょっと便利!ログを読みやすくする小技

今号では、ログを読みやすくするためのちょっとした小技 (コマンド) のご紹介をします!

行番号を表示する

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...
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です