本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:对 HTTP 404 代码进行计数
使用 CloudWatch Logs,您可以监控 Apache 服务器返回 HTTP 404 响应的次数,404 是表示找不到页面的响应代码。您可能需要对此进行监控,从而了解站点来访者找不到所查找资源的频率。假定日志记录是结构化的,每一个日志记录 (站点访问) 都包含以下信息:
-
请求者 IP 地址
-
RFC 1413 标识
-
用户名
-
Timestamp
-
请求方法以及请求的资源和协议
-
对请求的 HTTP 响应代码
-
请求中传输的字节数
这种日志记录的示例如下所示:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326
您可以指定一个规则,让它尝试匹配其结构反应 HTTP 404 错误的事件,如下例所示:
使用 CloudWatch 控制台创建指标筛选条件
-
访问 https://console.aws.amazon.com/cloudwatch/
打开 CloudWatch 控制台。 -
在导航窗格中,选择 Log groups(日志组)。
-
选择
Actions
、Create metric filter(创建指标筛选条件)。 -
对于 Filter Pattern(筛选条件模式),键入
[IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]
。 -
(可选)要测试您的筛选条件模式,请在 Test Pattern(测试模式)下,输入一个或多个用于测试模式的日志事件。每个日志事件必须位于一行内,因为换行符用于在 Log event messages(日志事件消息)框中分隔日志事件。
-
选择 Next(下一步),然后对于 Filter Nam(筛选条件名称),键入 HTTP404Errors。
-
在 Metric Details(指标详细信息)下,对于 Metric Namespace(指标命名空间),输入
MyNameSpace
。 -
对于 Metric Name(指标名称),输入
ApacheNotFoundErrorCount
。 确认 Metric Value(指标值) 为 1。这指定对于每个“404 Error”事件,计数以 1 累加。
对于 Default Value(默认值),输入 0,然后选择 Next(下一步)。
选择 Create metric filter(创建指标筛选条件)。
使用 Amazon CLI 创建指标筛选条件
在命令提示符处,运行以下命令:
aws logs put-metric-filter \ --log-group-name MyApp/access.log \ --filter-name HTTP404Errors \ --filter-pattern '[ip, id, user, timestamp, request, status_code=404, size]' \ --metric-transformations \ metricName=ApacheNotFoundErrorCount,metricNamespace=MyNamespace,metricValue=1
此示例中使用了文字字符,如左右方括号、双引号和字符串 404。该模式需要整个日志事件消息匹配,才能考虑监控日志事件。
您可以使用 describe-metric-filters 命令来验证指标筛选条件的创建。应看到类似如下内容的输出:
aws logs describe-metric-filters --log-group-name MyApp/access.log
{ "metricFilters": [ { "filterName": "HTTP404Errors", "metricTransformations": [ { "metricValue": "1", "metricNamespace": "MyNamespace", "metricName": "ApacheNotFoundErrorCount" } ], "creationTime": 1399277571078, "filterPattern": "[ip, id, user, timestamp, request, status_code=404, size]" } ] }
现在,您可以手动发布一些事件:
aws logs put-log-events \ --log-group-name MyApp/access.log --log-stream-name hostname \ --log-events \ timestamp=1394793518000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 404 2326" \ timestamp=1394793528000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb2.gif HTTP/1.0\" 200 2326"
在发布这些日志事件示例后,您很快可以在 CloudWatch 控制台中检索名为 ApacheNotFoundErrorCount 的指标。