2017-07-29 260 views
0

我有爲我的AWS ALB配置的訪問日誌記錄。它會將這些日誌在一段時間內轉儲到S3存儲桶中。在一個地方查看AWS ALB訪問日誌

要查看它們,您必須下載然後解壓縮文件並查看文本。

我想在一個地方看到ALB HTTP請求列表,而不必經歷上述過程。

AWS提供類似這樣的東西嗎?

+0

可以查詢與雅典娜https://aws.amazon.com/athena/ –

回答

2

AWS Application Load Balancer將日誌文件保存到Amazon S3中。

然後亞馬遜雅典娜可用於查詢保存在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/'; 
+0

日誌我的目的,這完美的作品。謝謝! – mcdrummerman

1

AWS把這些日誌文件在S3 ..這無法改變,我看不出有任何另一個更好的地方AWS也可以把這些日誌。現在,重要的是你想如何從S3處理這些日誌!那裏你的要求是什麼!

幾個選項:

  1. 正如約翰提到的;您可以使用Athena直接查詢此S3存儲桶。這就像你有這些日誌在你的本地文件系統上,你運行grep。

  2. 如果您需要彙總此數據,創建一些報告/儀表板 - >在這些日誌文件上使用EMR。

  3. 如果您需要真正查看這些文件;您可以隨時在每小時運行一臺服務器上設置一個cronjob,這個服務器正是您手動完成的操作。這將確保您有日誌文件隨時可供使用。

  4. 我們甚至可以將這些日誌文件放入CloudWatch日誌,Kinesis流。

這一切都取決於你的需求..