QuickSight で Athena と連携して ALB のアクセスログを可視化してみた
先日 QuickSight のチュートリアルを実施したのですが、30 日間の無料トライアル期間中なので、色々遊んでみることにしました。
今回は、QuickSight で Athena と連携して ALB のアクセスログを可視化してみました。
事前準備
手順概要
- ALB のアクセスログを有効化
- Athena のセットアップ
- QuickSight と Athena の連携
- QuickSight で ALB のアクセスログを可視化
1. ALB のアクセスログを有効化
まずは ALB のアクセスログを有効化します。
今回は適当な 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 バケットを指定する必要があるので、以下のチュートリアルを参考にしてください。
S3 バケットを設定したら、あとは 以下の AWS 公式ドキュメント通りにクエリを実行するだけです。
クエリの以下の部分は 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