さてさて、今回も本ブログサーバを稼働させているArchLinuxのネタでございます。

先日はufwのインストールとログの出力先についての記事を投稿しました。

それにより、ブロックしたログの格納先であるeverything.logをベースにufw.logに出力させていますが、
今更感がありますが、そもそも、ログのデフォルトのフォーマットがイマイチですね。

その後、ログを解析するpythonプログラムを再度書いていて気が付いたのですが。。。

syslog-ngのフォーマットはデフォルトでは使わないほうがいい

デフォルトの状態だと以下のようなスタイルです。

Dec 31 07:31:09 tpx240 kernel: [UFW BLOCK] IN=enp0s25 OUT= MAC=28:d2:44:ac:48:16:18:cf:24:eb:fa:c6:08:00 SRC=116.1.201.38 DST=192.168.xxx.xxx LEN=60 TOS=0x00 PREC=0x00 TTL=48 ID=52877 DF PROTO=TCP SPT=47700 DPT=2004 WINDOW=29200 RES=0x00 SYN URGP=0

何がイマイチかって、日付の表示がわかりにくいのです。Decって12月ですが、いつの年の12月だよって・・・。

というわけで、日付のフォーマットだけでも変更しておきましょう。

以前もUbuntuのufwのログは上記形式だったのですが、今回は流石に年の瀬。
筆者もこのフォーマットじゃまずいだろうと気がつきましたわけで。


syslog-ngのログフォーマットを変更する

以下の手順で変更しました。
viエディタで以下の設定ファイルを開きます。

$ sudo vi /etc/syslog-ng/syslog-ng.conf

以下の箇所に一行追加します。(赤字のts_format(iso)を追記)

options {
  stats_freq (0);
  flush_lines (0);
  time_reopen (10);
  log_fifo_size (10000);
  chain_hostnames (off);
  dns_cache (no);
  use_dns (no);
  use_fqdn (no);
  create_dirs (no);
  keep_hostname (yes);
  perm(0640);
  group("log");
  ts_format(iso);
};

変更が終わったら、以下コマンドでsyslog-ngサービスを再起動します。

$ sudo systemctl restart syslog-ng@default.service

syslog-ngのログフォーマットを変更した結果

フォーマットを変更した結果は以下です。
赤字部分が変更になっています。

2021-12-31T09:17:02+09:00 tpx240 kernel: [UFW BLOCK] IN=enp0s25 OUT= MAC=28:d2:44:ac:48:16:18:cf:24:eb:fa:c6:08:00 SRC=185.200.116.83 DST=192.168.1.240 LEN=40 TOS=0x00 PREC=0x00 TTL=246 ID=54321 PROTO=TCP SPT=43734 DPT=1723 WINDOW=65535 RES=0x00 SYN URGP=0 

これで何年の12月なのかわかりやすくなりました。
しかし、これは最初にやるべきでしたね。

ログファイルの中身は、ここ数日分のログは旧形式で出力されて、フォーマットが新旧で混在してしまいますのでログを解析するにはやや使いにくいですからね。。。


まとめ

というわけで、ArchLinuxのsyslog-ngの日付フォーマットを変更する方法についてご紹介しました。
尚、この方法はArchLinuxのwikiにも掲載されています。
詳細はそちらを参照ください。

それでは、何かの役に立てば幸いです。