上京エンジニアの葛藤

都会に染まる日々

ALB のアクセスログを JSON に変換するコマンドラインツールを作ったので紹介する

概要

albconv という ALB のアクセスログJSON に変換するコマンドラインツールを作ったので、紹介です。 github.com

demo albconv

きっかけは ALB のアクセスログを少し解析する必要があり、量も少ないので手元で確認しようとしたところ、ログフォーマットがスペース区切りで扱いにくく JSON に変換したいと思って作りました。

実際はログの量も膨大で Amazon Athena などを使って解析することが多いと思うので、必要な場面が多くなさそうですが、ちょっと確認したい時とかでは意外と使えるんじゃないかと思っていたりします。

使い方

Mac ユーザーは Homebrew に対応しています。

brew install okkun-sh/tap/albconv

Linux, Windows ユーザーは binary を直接 DL して使えると思います。
Releases · okkun-sh/albconv · GitHub

基本的には jq と合わせて使うことを想定しています。

albconv alb.log.gz alb2.log.gz | jq '[.[] | select(.type == "http")] | length'
2

複数ファイルのインプットも対応しており、アウトプットはファイルの入力順になります。

補足

複数ファイル指定時はファイル読み込み、JSON 変換を並列にするなど Go のメリットを活かした実装を意識しました。しかし、現状の実装はメモリに全て載せることになるため大容量のファイルを読み込もうとすると、メモリ不足が発生するかもしれません。(負荷テストなどはしていません)

こうした方が良いなどの意見や PR お待ちしています!

感想

Go でコマンドラインツールを公開するのが初めてだったのですが goreleaser でのリリース体験がとても良かったので、他にもコマンドラインツール作りたい気持ちになりました。