📝

QuickSight で Athena と連携して ALB のアクセスログを可視化してみた

2022/06/06に公開

先日 QuickSight のチュートリアルを実施したのですが、30 日間の無料トライアル期間中なので、色々遊んでみることにしました。
今回は、QuickSight で Athena と連携して ALB のアクセスログを可視化してみました。

事前準備

QuickSight アカウント作成

手順概要

  1. ALB のアクセスログを有効化
  2. Athena のセットアップ
  3. QuickSight と Athena の連携
  4. QuickSight で ALB のアクセスログを可視化

1. ALB のアクセスログを有効化

まずは ALB のアクセスログを有効化します。

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging

今回は適当な ALB とターゲットグループを作成し、アクセスログを有効化しました。

また、EC2 インスタンスを作成せずに、ALB の固定レスポンスを設定しました。

とりあえず ALB にアクセスして何かしら返すページはできました。

ALB のアクセスログを有効化後、何回かアクセスしてしばらく待ちます。
すると、アクセスログの配信先に指定した S3 バケットに ALB のアクセスログが配信されます。
パスは以下のようになっています。

s3://{bucket-name}/AWSLogs/{Accout-id}/elasticloadbalancing/{region}/{year}/{month}/{day}/{gz-file}

これで分析用のデータを取得できました。

2. Athena のセットアップ

続いて Athena のセットアップを行います。
初めて Athena を使用する場合には、クエリの実行結果を保存する S3 バケットを指定する必要があるので、以下のチュートリアルを参考にしてください。

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/getting-started.html

S3 バケットを設定したら、あとは 以下の AWS 公式ドキュメント通りにクエリを実行するだけです。

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/application-load-balancer-logs.html

クエリの以下の部分は ALB のアクセスログが配信されている S3 の URI に書き換えます。

LOCATION 's3://your-alb-logs-directory/AWSLogs/<ACCOUNT-ID>/elasticloadbalancing/<REGION>/'

AWS 公式ドキュメントでは、Athena で ALB のアクセスログを分析するためのクエリも紹介されていますが、今回は QuickSight で可視化するので、テーブルの作成までできれば OK です。

3. QuickSight と Athena の連携

続いて QuickSight と Athena の連携をするための設定を行います。
QuickSight が 対象の S3 バケットにアクセスできるように設定します。

QuickSight のダッシュ―ボードで、右上のユーザー名をクリックし、「QuickSight の管理」を選択します。

「セキュリティとアクセス権限」を選択し、「Manage」をクリックします。

「S3 バケットを選択する」→ ALB のアクセスログが配信されている S3 バケットにチェックを入れて、「完了」をクリックします。
なお、今回は QuickSight アカウントと同じ AWS アカウントに S3 バケットがあるので、「QuickSight アカウントにリンクされている S3 バケット」を選択しています。

「保存」をクリックします。

これで QuickSight が 対象の S3 バケットにアクセスできるようになりました。

4. QuickSight で ALB のログを可視化

それでは QuickSight で ALB のログを可視化してみます。

QuickSight のダッシュボードから「新しい分析」をクリックします。

「新しいデータセット」をクリックします。

「Athena」をクリックします。

任意の「データソース名」を入力し、「データソースを作成」をクリックします。

Athena のデータベースやテーブル名を選択し、「選択」をクリックします。

その他の設定はデフォルト設定で「Visualize」をクリックします。

少し待つと「インポートの完了」メッセージが表示されるので、これでインポート完了です。

あとは色々な項目をクリックすると、自動的にグラフが生成されます。
例えば、client_ip をクリックすると以下のようなグラフが生成されます。

elb_status_code と client_ip を選択した状態です。

User_agent と Request_verb を選択した状態です。

このように、Athena のようにクエリを実行せずに ALB のアクセスログを可視化することができました!
選択する項目の組み合わせやグラフの種類を変えることで、レポートとしても使用できるかと思います。

まとめ

今回は、QuickSight で Athena と連携して ALB のアクセスログを可視化してみました。
同じ要領で CloudFront のログも可視化できたので、興味のある方は色々試してみてください。

参考になれば幸いです。

Discussion