在一个位置查看AWS ALB访问日志

时间:2017-07-29 00:58:44

标签: amazon-web-services amazon-ec2 amazon-elb

我为AWS ALB配置了访问日志记录。它会在一定时间间隔内将这些日志转储到S3存储桶中。

要查看它们,您必须下载然后解压缩文件并查看文本。

我希望在一个地方看到ALB HTTP请求列表,而无需完成上述过程。

AWS是否提供此类内容?

2 个答案:

答案 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处理这些日志!你有什么要求!

几个选项:

  1. 正如约翰所说;您可以使用Athena直接查询此S3存储桶。就像你在本地文件系统上有这些日志并在其上运行grep一样。

  2. 如果您需要汇总这些数据;创建一些报告/仪表板 - >在这些日志文件上使用EMR。

  3. 如果您需要真正查看这些文件;你可以随时在服务器上设置一个cronjob,它每小时运行一次,完全按照你上面手动执行的操作。这将确保你有日志文件可以随时使用。

  4. 我们甚至可以将这些日志文件放入CloudWatch日志,Kinesis流中。

  5. 这一切都取决于你的要求..

相关问题