阅读网站请求日志

AWSBeginner
立即练习

介绍

访客报告页面问题。通过实际请求日志区分页面不存在与网站不可用,将浏览器观察到的结果与日志对应起来。

请先完成前序作品站实验。本节提供新网站与请求日志接入,无需安装采集代理。 每节使用独立的新环境,无需保留上一节的资源、文件或凭据。工具、连接和无关素材均已准备好。

认证考点

认证 考试任务 练习内容
AWS Certified Cloud Practitioner (CLF-C02) Task 3.8 通过 CloudWatch Logs 理解应用请求结果。

实验概览

概念图:实际网站请求产生 CloudWatch 日志事件。

找到一次成功的网站请求

本步骤,你将访问作品站,找到该请求对应的日志事件。

从 AWS View 打开网站,确认 Alex Morgan 与作品卡片。打开页面会向 EC2 上的网站发起真实请求。

日志事件(log event)记录某个时间发生的事情。CloudWatch Logs 将相关事件放在 log group 中,log stream 可以对应不同应用实例。本节提供一个组及实例专属 stream。接入代码记录路径、响应状态和请求 ID,不保存凭据或请求头。

进入目录并加载组名:

cd /home/labex/project
source website.env
echo "$LOG_GROUP"

filter-log-events 读取匹配的事件;不指定模式时读取已采集的事件:

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

在 events 中找到包含 path=/website status=200 的消息。HTTP 200 表示该请求成功。timestamp 是 Unix epoch 起的毫秒时间,request_id 标识这一次请求,具体值因环境而异。

浏览器还会为图片请求 /assets/aura-brand.webp,因此可能出现额外成功事件。AWS View 的 CloudWatch 卡片显示同一组的近期事件。检查确认实际页面请求已被采集,你需要理解各字段含义。

诊断不存在的页面

本步骤,你将产生缺失页面响应,找到其日志,并确认主网站仍正常。

在 AWS View 点击 Open a missing page,新页面请求 /missing,应显示 Page not found。

HTTP 404 表示该路径不存在,不代表实例停止或所有页面不可用。搜索包含 404 的消息:

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

--filter-pattern 限定返回消息。确认 path=/missing status=404,与刚打开的路径对应。

回到作品站并刷新,仍应显示 Alex Morgan。读取整组事件:

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

现在有缺失路径事件,也有成功主页事件。合理判断是:服务器可以提供作品站,但没有 /missing 这个页面。重启服务器不会创建这条路由。

过滤结果为空不能证明请求成功。确认打开的是本节链接、组名正确、请求已完成,然后重新查询。

真实实验检查点示例,标识因环境而异。

清理网站和请求日志

本步骤,你将终止工作负载,只删除本节日志组。

先显示实例标识:

echo "$INSTANCE_ID"
aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"
aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"

网站已不再运行。阅读日志后,仅删除 LOG_GROUP 指向的一次性组。这会移除其 streams 和事件:

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

成功时没有输出。AWS View 不再显示本节近期事件;保留独立的 reference 日志组和预置网络。下一节使用独立的日志与指标。

总结

你产生真实请求,读取 CloudWatch 日志,将路径与 HTTP 200、404 对应起来。你确认缺失路由不代表服务器停止,并清理工作负载与实验日志,保留参考数据。

官方参考:CloudWatch Logs 概念、过滤模式。