本节我们使用CloudWatch Log和Metric创建有意义的Dashboard。
首先,AWS WAF在我们的Web ACL用户界面中提供了原生仪表板,可以轻松指出我们流量的高级指标。
Bot control Dashboard显示了机器人与非机器人流量的百分比、机器人类别、机器人名称:
如果我们启用了请求采样,我们可以查看AWS WAF检查并允许或阻止的请求样本。对于每个采样请求,我们可以查看有关该请求的详细数据,例如源IP地址和请求中包含的标头。我们还可以查看与该请求匹配的规则,以及规则操作设置:
对于区域性AWS WAF(如Application Load Balancer或API Gateway的AWS WAF),CloudWatch会在其运行的区域收集指标。对于使用AWS WAF保护的CloudFront,指标会在us-east-1收集。
在Cloudwatch metric中找到WAFV2。单击WAFV2框,查看所有可用指标:
选择Rule,WebACL维度:
在指标列表中,我们将看到所有Web ACL中所有规则的命中次数。我们还可以看到AllowedRequests、CaptchaRequests、ChallengeRequests、RequestsWithValidChallengeToken、CountedRequests、BlockedRequests、RequestsWithValidCaptchaToken、CaptchasSolved和CaptchasAttempted的总计指标:
通过这些指标,可以单独做一个Dashboard,并且通过指标的数学计算(如计算block百分比)能够添加其他指标
Log Insights中的查询也可以集成到 CloudWatch 仪表板中。
导航到 CloudWatch 服务控制台并单击 Logs Insights。对于 Log Group,选择 aws-waf-logs-Bots-Workshop 日志组。
我们将构建一个查询,用于查找由于被AWSManagedRulesBotControlRuleSet
阻止的前 10 个 IP 地址及其所在国家。将以下查询复制到查询窗口中:
fields @timestamp,httpRequest.clientIp
| filter terminatingRuleId = "AWS-AWSManagedRulesBotControlRuleSet"
| stats count(*) as requestCount by httpRequest.clientIp, httpRequest.country
| sort requestCount desc
| limit 10
单击 Run query。我们应该会看到 10 个 IP 地址及其所在国家,以及失败尝试次数:
单击 Add to dashboard 按钮。选择要想添加的Dashboard,然后单击 Add to dashboard:
根据需要调整小部件的大小,然后单击 Save 保存仪表板布局。
我们已成功在 CloudWatch 仪表板上设置了小部件。我们可以继续尝试在仪表板中添加更多 Insight 查询或指标:
请注意这3个易于配置的解决方案:
在实际环境中,可能会使用上述方法的混合,