コピペで使えるELBのアクセスログ解析による事象分析 (ShellScript, Athena)
アクセスログ解析
ELBのアクセスログの事象分析について、ShellScriptとAthenaを用いた実行例についてまとめます。
ShellScript
NLB
No.1 : 最も多いリクエスト元のクライアントIPアドレスのリクエスト数
$ gunzip -dc * | awk '{print $6}' | awk -F ":" '{print $1}' | sort | uniq -c | sort -r| head -n 10No.2 : 時間毎のリクエスト数
$ gunzip -dc * | awk '{print substr($3,0,13)}' | sort | uniq -c | awk '{print $2, $1}'No.3 : 分単位でのリクエスト数
$ gunzip -dc * | awk '{print substr($3,0,16)}' | sort | uniq -c | awk '{print $2, $1}'No.4 : TLSでクライアントが最も使った暗号スイートのランキング
$ gunzip -dc * | awk '{print $15}' | sort | uniq -c | sort -nr | head -5No.5 : TLSでクライアントが最も使ったTLSバージョンのランキング
$ gunzip -dc * | awk '{print $16}' | sort | uniq -c | sort -nr | head -5No.6 : TLSでクライアントが最も使ったプロトコルと暗号スイートのランキング
$ gunzip -dc * | awk '{print $15 " " $16}' | sort | uniq -c | sort -nr | headNo.7 : received_bytesとsent_bytesの大きさ別の分布
received_bytes
sent_bytes
No.8 : リクエスト・レスポンス合計のサイズの平均
No.9 : ログ毎のファイルの行数
No.10 : クライアント別リクエスト数
No.11 : NLB IPアドレス別リクエスト数
No.12 : connection_timeが5秒以上のレコード一覧
No.13 : tls_handshake_timeが1秒以上のレコード一覧
ALB
No.1 : レスポンスが正常に受け取れていないELBのレスポンスコード毎のカウント
No.2 : ELBのレスポンスコード毎の数集計
No.3 : ELBのレスポンスコードとバックエンドのレスポンスコードの組み合わせ毎の数集計
No.4 : ELBのレスポンスコードとバックエンドのレスポンスコードの組み合わせ毎の数集計(ファイル別)
No.5 : ELBのレスポンスコードとバックエンドのレスポンスコードの組み合わせ毎の数集計(分単位)
No.6 : ELB 504のレコード一覧
No.7 : ELBが504時のクライアント順
No.8 : 504がどのHTTPリクエストで多く出力されているか
No.9 : バックエンドから正常に応答が受け取れていない時
No.10 : request_processing_time の3つの統計値(最小値、最大値、平均)と -1 の値を取った回数
No.11 : target_processing_time の3つの統計値(最小値、最大値、平均)と -1 の値を取った回数
No.12 : response_processing_time の3つの統計値(最小値、最大値、平均)と -1 の値を取った回数
No.13 : 最も多いリクエスト元のクライアントIPアドレスのリクエスト数
No.14 : 時間毎のリクエスト数
No.15 : 分単位でのリクエスト数
No.16 : ユーザーエージェント毎のランキング
No.17 : TLSでクライアントが最も使った暗号スイートのランキング
No.18 : TLSでクライアントが最も使ったTLSバージョンのランキング
No.19 : TLSでクライアントが最も使ったプロトコルと暗号スイートのランキング
No.20 : received_bytesとsent_bytesの大きさ別の分布
received_bytes
sent_bytes
No.21 : リクエスト・レスポンス合計のサイズの平均
No.22: ログ毎のファイルの行数
No.23 : クライアント別リクエスト数
No.24 : バックエンド別リクエスト数
No.25 : バックエンド(IP:Port)毎のリクエスト数(分単位)
No.26 : リクエストされるURLランキング
No.27 : target_processing_timeが5秒以上のレコード一覧
No.28 : backend_processing_timeが5秒以上のレコード一覧(リクエスト別集計)
CLB
No.1 : レスポンスが正常に受け取れていないELBのレスポンスコード毎のカウント
No.2 : ELBのレスポンスコード毎の数集計
No.3 : ELBのレスポンスコードとバックエンドのレスポンスコードの組み合わせ毎の数集計
No.4 : ELBのレスポンスコードとバックエンドのレスポンスコードの組み合わせ毎の数集計(ファイル別)
No.5 : ELBのレスポンスコードとバックエンドのレスポンスコードの組み合わせ毎の数集計(分単位)
No.6 : ELB 504のレコード一覧
No.7 : ELBが504時のクライアント順
No.8 : 504がどのHTTPリクエストで多く出力されているか
No.9 : バックエンドから正常に応答が受け取れていない時
No.10 : request_processing_time の3つの統計値(最小値、最大値、平均)と -1 の値を取った回数
No.11 : backend_processing_time の3つの統計値(最小値、最大値、平均)と -1 の値を取った回数
No.12 : response_processing_time の3つの統計値(最小値、最大値、平均)と -1 の値を取った回数
No.13 : 最も多いリクエスト元のクライアントIPアドレスのリクエスト数
No.14 : 時間毎のリクエスト数
No.15 : 分単位でのリクエスト数
No.16 : ユーザーエージェント毎のランキング
No.17 : TLSでクライアントが最も使った暗号スイートのランキング
No.18 : TLSでクライアントが最も使ったTLSバージョンのランキング
No.19 : TLSでクライアントが最も使ったプロトコルと暗号スイートのランキング
No.20 : received_bytesとsent_bytesの大きさ別の分布
received_bytes
sent_bytes
No.21 : リクエスト・レスポンス合計のサイズの平均
No.22: ログ毎のファイルの行数
No.23 : クライアント別リクエスト数
No.24 : バックエンド別リクエスト数
No.25 : バックエンド(IP:Port)毎のリクエスト数(分単位)
No.26 : リクエストされるURLランキング
No.27 : backend_processing_timeが5秒以上のレコード一覧
No.28 : backend_processing_timeが5秒以上のレコード一覧(リクエスト別集計)
Athena
以下、全て CLB を前提とします。 また、以下のような、デフォルトで生成されている sampledb データベースの elb_logs テーブルを使用します。
HTTPステータスコードが200のレコード一覧
ELB毎のリクエスト数
ELB毎のリクエスト数(期間指定)
ELB毎のリクエスト数(期間+ELB 指定)
ELB毎の5XXエラーのリクエスト数
ELB毎の5XXエラーのリクエスト数(ELB指定)
ELB毎の5XXエラーのリクエスト数(期間+ELB 指定)
ELB毎の5XXエラーのリクエスト数(期間+ELB+URL 指定)
ELB毎の5XXエラーのリクエスト数(期間+ELB+URL+UserAgent 指定)
送信元IPのリクエスト数ランキング
日付ごとのリクエスト数
直近1年の500エラー発生のリクエスト数
レスポンスに1.0s以上時間がかかっているリクエスト
任意のエントリ取得(期間+リクエスト元IP 指定)
あるページからの遷移先ページ傾向
参考
ELB アクセスログ
Access Logs for Your Network Load Balancer - Elastic Load Balancing https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html Application Load Balancer のアクセスログ - Elastic Load Balancing https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-entry-syntax Classic Load Balancer のアクセスログ - Elastic Load Balancing https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/classic/access-log-collection.html#access-log-entry-syntax
Athena
Querying Classic Load Balancer Logs - Amazon Athena https://docs.aws.amazon.com/ja_jp/athena/latest/ug/elasticloadbalancer-classic-logs.html Querying Application Load Balancer Logs - Amazon Athena https://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html
Amazon AthenaでELBのログを調査するときに使ったSQL https://dev.classmethod.jp/cloud/amazon-athena-sql-for-elb/ Amazon AthenaでELBログをSQLで解析する #reinvent https://dev.classmethod.jp/cloud/aws/amazon-athena-sql-elb-log-reinvent/ Amazon Athenaではじめるログ分析入門 https://qiita.com/miyasakura_/items/174dc73f706e8951dbdd
Last updated