AWS Athena对ELB访问日志的SQL查询按客户端计数进行asc/desc排序:具有特定状态代码回复的端口



对于AWS ALB访问日志(https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html),我希望一个Athena SQL查询示例在开始和结束日期(DD-MM-YYYY HH-MM(期间按elb_status_code/target_status_code的client:port字段的计数降序/升序排序。target_status_code=500的查询结果如下:

计数
客户端:端口 target_status_code=500
70.132.2XX:端口 2570
70.132.2XX:端口 2315
80.122.1.XX:端口 1750

使用查询经典负载均衡器日志中描述的表,假设您按日期对其进行分区(分区键在下面称为date_partition_key(,您可以执行以下操作:

SELECT
CONCAT(request_ip, ':', CAST(request_port AS VARCHAR)) AS client_port,
COUNT(*) AS count_of_status_500
FROM elb_logs
WHERE elb_response_code = '500'
AND date_partition_key BETWEEN '2022-01-01' AND '2022-01-03'
GROUP BY 1
ORDER BY 2 DESC

group和order by子句中的1和2分别指代选择列表中的第一项和第二项,即客户端端口和计数。这只是一种不必重复函数调用等的方便方法。

同时我发现了这个链接https://aws.amazon.com/premiumsupport/knowledge-center/athena-analyze-access-logs/带有一些ALB访问日志查询示例。这对于不太熟悉SQL查询的用户(比如我(来说可能很有用。

最新更新