AWS ALBやELBのアクセスログですが、5分毎に出力していると大量のファイルになります。
調査するにしても複数の細かく分かれたファイルを結合したり、JSTとUTCの差を失念していて勘違いしたり、S3のフォルダ構造深かったり、ALBのアクセスログはgzip形式なのでダウンロードしてからもすぐにgrepできなかったりと結構面倒です。
通常はKibana等で分析するにしても、細かいのはコマンドライン使いたかったり、サポート問い合わせで必要だったりでダウンロード作業が無くなることはありませんでした。
現在、複数のALB/ELBを運用していて、このダウンロード作業が大変になってきたので、楽にするためのツール作りました。
使い方
細かいオプションはREADME見てください。
実行すると以下のようにプロンプトが表示されるので「 start
」入力するとダウンロードが始まります。(プロンプトはforceモードで省略可能)
ダウンロードされたgzipファイルは展開されて、 -o
で指定したファイルにGlobal IP毎にテキストとして追記されます。以下の場合なら /tmp/test_52.10.11.12
みたいになります。設定した時間に動いていたALBが4ノードなら4つのファイルにマージされることになります。
利用用途例
- ALB/ELBログを時間範囲指定してダウンロード
- ALBログをダウンロードGzip解凍しALBのGlobalIP毎にファイルに出力
- ALBログをGzip形式のままダウンロードも可
- ELBログをダウンロードしGlobalIP毎にファイルに出力
- ALB/ELBのログを時間ソートし標準出力へ直接出力してGrep分析
Usage: aloget -b <S3Bucket> -p <ALBAccessLogPrefix> {-o <OutputFilePrefix>|-stdout} [-s yyyy-MM-ddTHH:mm:ss] [-e yyyy-MM-ddTHH:mm:ss] [-r aws-region] [-cred] [-gz|-elb] [-utc] [-force] [-debug] [-version] Usage of ./aloget: -b string S3 Bucket -cred Use default credentials (~/.aws/credentials) -debug Debug mode -e string End Time. defalut now (default 2017-10-04T23:04:04) -elb ELB(Classic Load Balancer) mode -force Force mode -gz Don't decompress gzip, preserve gzip format. -o string Output file prefix. (ex /tmp/alb) -p string S3 ALB AccessLog Prefix -r string AWS REGION (ex. us-west-1) -s string Start Time. default 10 minutes ago (default 2017-10-04T22:54:04) -stdout Write access log to stdout. -utc -s and -e as UTC -v Show version info
$ aloget -r ap-northeast-1 -b yourbucket \ -p prefix/accesslog/alb -o /tmp/test \ -s 2017-09-20T00:00:00 \ -e 2017-09-20T01:00:00 -cred From-To(Local) : 2017-09-20T00:00:11 JST - 2017-09-20T00:55:12 JST From-To(UTC) : 2017-09-19T15:00:11 UTC - 2017-09-19T15:55:12 UTC Donwload Size : 28 kB Decompress Gzip : true S3 Objects : 24 objects Start/Cancel>start