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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

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

行番号を表示する

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...
アバター画像
About 貝野 友香 71 Articles
OSSよろず相談室でサポートをやっています。時々ライブ配信や勉強会に出ていることもあります。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる