AWS Athena 分析日誌
阿新 • • 發佈:2019-01-02
AWS裡面可以用Athena來分析S3裡面儲存的日誌,他把日誌轉換成資料庫表的格式,這樣就可以通過sql語句進行查詢了。這個功能和在windows伺服器上用logparser來分析Exchange或者IIS的日誌很相似。
下面做個演示,通過Cloudtrail記錄管理日誌,然後通過Athena來查詢日誌內容。
首先選擇CloudTrail, CloudTrail 是一個日誌記錄的服務,他和cloudwatch的區別在於這個服務更多是側重於審計,他的內容都是關於什麼時候,什麼賬號,從什麼IP上進行了什麼操作。
點選 Create Trail
取個名字, 建立一個新的S3 bucket來儲存日誌
建立好之後可以看見他自動已經在記錄最新的日誌了
然後選擇 Athena
跳過嚮導,直接進入查詢器的編輯器,這裡是編輯SQL語句的地方。這裡我直接建立一個的資料庫
下面來建立一個表,從指定的S3 Bucket裡面獲取資料。
我們可以通過嚮導建立,但是比較繁瑣
比較容易的是通過指令碼建立,注意最後一行S3儲存桶的地址
CREATE EXTERNAL TABLE cloudtrail_logs ( eventversion STRING, useridentity STRUCT< type:STRING, principalid:STRING, arn:STRING, accountid:STRING, invokedby:STRING, accesskeyid:STRING, userName:STRING, sessioncontext:STRUCT< attributes:STRUCT< mfaauthenticated:STRING, creationdate:STRING>, sessionissuer:STRUCT< type:STRING, principalId:STRING, arn:STRING, accountId:STRING, userName:STRING>>>, eventtime STRING, eventsource STRING, eventname STRING, awsregion STRING, sourceipaddress STRING, useragent STRING, errorcode STRING, errormessage STRING, requestparameters STRING, responseelements STRING, additionaleventdata STRING, requestid STRING, eventid STRING, resources ARRAY<STRUCT< ARN:STRING, accountId:STRING, type:STRING>>, eventtype STRING, apiversion STRING, readonly STRING, recipientaccountid STRING, serviceeventdetails STRING, sharedeventid STRING, vpcendpointid STRING ) ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde' STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://mycloudtrailbucket-faye/AWSLogs/757250003982/';
建立表成功的樣子
下面我們可以進行一個簡單的查詢,結果如下。