Amazon CloudWatch Logs
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

示例:对 HTTP 404 代码进行计数

使用 CloudWatch Logs,您可以监控 Apache 服务器返回 HTTP 404 响应的次数,404 是表示找不到页面的响应代码。您可能需要对此进行监控,从而了解站点来访者找不到所查找资源的频率。假定日志记录是结构化的,每一个日志记录 (站点访问) 都包含以下信息:

  • 请求者 IP 地址

  • RFC 1413 标识

  • Username

  • 时间戳

  • 请求方法以及请求的资源和协议

  • 对请求的 HTTP 响应代码

  • 请求中传输的字节数

这种日志记录的示例如下所示:

Copy
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326

您可以指定一个规则,让它尝试匹配其结构反应 HTTP 404 错误的事件,如下例所示:

使用 CloudWatch 控制台创建指标筛选器

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Logs

  3. 在内容窗格中,选择一个日志组,然后选择 Create Metric Filter

  4. Define Logs Metric Filter 屏幕上,为 Filter Pattern 键入 [IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]

  5. 要测试筛选器模式,请为 Select Log Data to Test 选择要对其测试指标筛选器的日志组,然后选择 Test Pattern

  6. Results 下,CloudWatch Logs 显示一条消息,表明筛选器模式在日志文件中出现的次数。

    要查看详细结果,请选择 Show test results

  7. 选择 Assign Metric,然后在 Create Metric Filter and Assign a Metric 屏幕上,为 Filter Name 键入 HTTP404Errors

  8. Metric Details 下,为 Metric Namespace 键入 MyNameSpace

  9. Metric Name 键入 ApacheNotFoundErrorCount,然后选择 Create Filter

使用 AWS CLI 创建指标筛选器

在命令提示符处,运行以下命令:

Copy
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-monitoring-policies 命令来验证指标筛选器的创建。应看到类似如下内容的输出:

Copy
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]" } ] }

现在,您可以手动发布一些事件:

Copy
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 指标。