サイトのリクエストログを読む

AWSBeginner
オンラインで実践に進む

はじめに

実際のページリクエストを CloudWatch Logs で追跡し、成功と存在しないページを区別します。

先に前段のポートフォリオラボを完了してください。この環境は必要な前段機能と独自のリソースを提供します。以前のインスタンス、ファイル、認証情報ではなく知識を引き継ぎます。

認定試験との関連

認定 タスク 練習内容
AWS Certified Cloud Practitioner (CLF-C02) Task 3.8 ログでアプリケーションを観察する。

ラボの概要

実際のページリクエストを CloudWatch Logs で追跡し、成功と存在しないページを区別します。

成功リクエストを記録する

このステップでは、 ログは起きた出来事の記録です。ロググループは関連記録、ストリームはこのインスタンスの記録をまとめます。最初は演習グループが空です。

フォルダーへ移動します。

cd /home/labex/project

LOG_GROUP を読み、表示します。

source website.env
echo "$LOG_GROUP"

サイトを開いてからログを読みます。

aws logs filter-log-events --log-group-name "$LOG_GROUP"

実際の /website status=200 を確認します。200 はそのリクエストの成功です。timestamp は Unix epoch からのミリ秒、request_id は 1 リクエストの識別子です。値は環境によって異なります。

存在しないページを調べる

このステップでは、 AWS View の missing-page リンクを開きます。404 はそのパスがないという意味で、サーバー停止ではありません。

精確な status=404 の短語でログを絞ります。外側の単一引用符は内側の二重引用符を保持します。

aws logs filter-log-events --log-group-name "$LOG_GROUP" --filter-pattern '"status=404"'

メインページを開き直してから全ログを読みます。

aws logs filter-log-events --log-group-name "$LOG_GROUP"

/missing status=404 と、新しい /website status=200 を比較します。過去の 404 は消えません。

実際のラボの確認例です。リソース ID は環境によって異なります。

演習ログとサーバーを削除する

このステップでは、 参照ログや保存素材は残します。

インスタンス ID を表示します。

echo "$INSTANCE_ID"

指定したサーバーを終了します。

aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"

最終状態を待ちます。

aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"

指定した演習グループだけを削除します。

aws logs delete-log-group --log-group-name "$LOG_GROUP"

自分のグループは消え、参照イベント、バケット、ロールとネットワークが残ります。

まとめ

パス、HTTP 状態と request_id を対応付け、履歴を保ちながら成功したページを確認しました。

公式ドキュメント: CloudWatch Logs concepts, filter pattern syntax.