システムの稼働が続ければ、ログファイルは継続的に作成される。
AWS上で稼働しているシステムのログは基本的にS3に格納される。S3に格納したログの監察を行いたい場合、Athenaでオンライン上でログをクエリすることもできるが、一度ログをローカルにダウンロードして、集計したい場合もある。
S3自体はオブジェクトのマージ機能を持っていないため、マージはOSコマンドやプログラムで行う必要がある。
まずS3からオブジェクトをダウンロードするについては、S3のコマンドは*
で複数のオブジェクトを一括でダウンロードすることができる。
次にログのマージについては、Linuxならsort
コマンドでファイルをマージできる。
例として、以下2つのログファイルがある。
shinkai@DESKTOP-TEBBMRK:~/test$ cat 1.log2
Sep 4 00:00:08 ip–10–97–55–50 dhclient[2588]: XMT: Solicit on eth0, interval 120000ms.
Sep 4 00:02:08 ip–10–97–55–50 dhclient[2588]: XMT: Solicit on eth0, interval 124910ms.
Sep 4 00:04:13 ip–10–97–55–50 dhclient[2588]: XMT: Solicit on eth0, interval 109850ms.
Sep 4 00:06:03 ip–10–97–55–50 dhclient[2588]: XMT: Solicit on eth0, interval 112380ms.
shinkai@DESKTOP-TEBBMRK:~/test$ cat 2.log2
Sep 4 00:01:01 ip–10–97–55–50 CROND[18843]: (root) CMD (run-parts /etc/cron.hourly)
Sep 4 00:01:01 ip–10–97–55–50 run-parts(/etc/cron.hourly)[18843]: starting 0anacron
Sep 4 00:01:01 ip–10–97–55–50 anacron[18853]: Anacron started on 2018–09–04
Sep 4 00:01:01 ip–10–97–55–50 anacron[18853]: Jobs will be executed sequentially<
Sep 4 00:01:01 ip–10–97–55–50 anacron[18853]: Normal exit (0 jobs run)
sort
コマンドでマージすれば、自動的にタイムスタンプの順番でメッセージを1つのファイルにマージできる。
shinkai@DESKTOP-TEBBMRK:~/test$ sort -m *.log2 > result.log2
shinkai@DESKTOP-TEBBMRK:~/test$ cat result.log2
Sep 4 00:00:08 ip–10–97–55–50 dhclient[2588]: XMT: Solicit on eth0, interval 120000ms.
Sep 4 00:01:01 ip–10–97–55–50 CROND[18843]: (root) CMD (run-parts /etc/cron.hourly)
Sep 4 00:01:01 ip–10–97–55–50 run-parts(/etc/cron.hourly)[18843]: starting 0anacron
Sep 4 00:01:01 ip–10–97–55–50 anacron[18853]: Anacron started on 2018–09–04
Sep 4 00:01:01 ip–10–97–55–50 anacron[18853]: Jobs will be executed sequentially<
Sep 4 00:01:01 ip–10–97–55–50 anacron[18853]: Normal exit (0 jobs run)
Sep 4 00:02:08 ip–10–97–55–50 dhclient[2588]: XMT: Solicit on eth0, interval 124910ms.
Sep 4 00:04:13 ip–10–97–55–50 dhclient[2588]: XMT: Solicit on eth0, interval 109850ms.
Sep 4 00:06:03 ip–10–97–55–50 dhclient[2588]: XMT: Solicit on eth0, interval 112380ms.
なお、一応各ログファイルのサイズが5MB以上であれば、S3はmultipart upload機能で結合したオブジェクトを作成することができるため、大量のサイズが5MB以上のログファイルがあれば、multipart uploadでログファイルの結合を試しても良いと思う。