我为AWS ALB配置了访问日志记录。它会在一定时间间隔内将这些日志转储到S3存储桶中。
要查看它们,您必须下载然后解压缩文件并查看文本。
我希望在一个地方看到ALB HTTP请求列表,而无需完成上述过程。
AWS是否提供此类内容?
答案 0 :(得分:3)
AWS Application Load Balancer将日志文件保存到Amazon S3。
然后可以使用Amazon Athena 查询S3中保存的文件。重要的是知道文件格式。
请参阅此优秀文章:Athena & ALB Log Analysis
他们使用此查询来创建表:
CREATE EXTERNAL TABLE IF NOT EXISTS logs.web_alb (
type string,
time string,
elb string,
client_ip string,
client_port string,
target string,
request_processing_time int,
target_processing_time int,
response_processing_time int,
elb_status_code int,
target_status_code string,
received_bytes int,
sent_bytes int,
request_verb string,
request_url string,
request_proto string,
user_agent string,
ssl_cipher string,
ssl_protocol string,
target_group_arn string,
trace_id string
)
PARTITIONED BY(year string, month string, day string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1',
'input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*) ([-0-9]*) ([-0-9]*) ([-0-9]*) ([-0-9]*) ([^ ]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) ([^ ]*) ([^ ]*)\" \"([^\"]*)\" ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)'
) LOCATION 's3://{{BUCKET}}/AWSLogs/{{ACCOUNT}}/elasticloadbalancing/us-east-1/';
答案 1 :(得分:1)
AWS将这些日志文件放在S3中。这是无法更改的,我也没有看到任何其他更好的地方AWS也可以放置这些日志。现在,重要的是你想如何从S3处理这些日志!你有什么要求!
几个选项:
正如约翰所说;您可以使用Athena直接查询此S3存储桶。就像你在本地文件系统上有这些日志并在其上运行grep一样。
如果您需要汇总这些数据;创建一些报告/仪表板 - >在这些日志文件上使用EMR。
如果您需要真正查看这些文件;你可以随时在服务器上设置一个cronjob,它每小时运行一次,完全按照你上面手动执行的操作。这将确保你有日志文件可以随时使用。
我们甚至可以将这些日志文件放入CloudWatch日志,Kinesis流中。
这一切都取决于你的要求..