Athena를 사용하여 AWS 로그 집계
13183 단어 AthenaCloudtrailelbCloudFrontAWS
DDL 정의도 포함되어 있습니다. 문서 기재의 것과 달리, 사용하기 쉬운 형태로 변경했습니다.
Athena 개요
아직 버지니아와 오레곤에서만 사용할 수 있습니다.
해보자
데이터베이스 만들기
샘플
CREATE DATABASE aws_logs;
테이블 만들기
ELB
ELB
CREATE EXTERNAL TABLE IF NOT EXISTS aws_logs.elb_log (
request_protocol string,
request_timestamp string,
elb_name string,
request_ip string,
request_port int,
backend_ip string,
backend_port int,
request_processing_time double,
backend_processing_time double,
client_response_time double,
elb_response_code string,
backend_response_code string,
received_bytes bigint,
sent_bytes bigint,
request_verb string,
url string,
protocol string,
user_agent string,
ssl_cipher string,
ssl_protocol string,
arn string,
extra string )
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1','input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*):([0-9]*) (-1|[.0-9]*) (-1|[.0-9]*) (-1|[.0-9]*) (-|[0-9]*) (-|[0-9]*) ([-0-9]*) ([-0-9]*) \\\"([^ ]*) ([^ ]*) (- |[^ ]*)\\\" (\"[^\"]*\") ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)$' )
LOCATION 's3://*******/********/'
CloudFront
cloudfront
CREATE EXTERNAL TABLE IF NOT EXISTS aws_logs.cloudfront_log (
date STRING,
time STRING,
xEdgeLocation STRING,
scBytes INT,
cIp STRING,
csMethod STRING,
csHost STRING,
csUriStem STRING,
scStatus INT,
csReferer STRING,
csUserAgent STRING,
csUriQuery STRING,
csCookie STRING,
xEdgeResultType STRING,
xEdgeRequestId STRING,
xHostHeader STRING,
csProtocol STRING,
csBytes INT,
timeTaken INT,
xForwardedFor STRING,
sslProtocol STRING,
sslCipher STRING,
xEdgeResponseResultType STRING,
csProtocolVersion STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1','input.regex' = '([^ ]*)\t([^ ]*)\t([^ ]*)\t([0-9]*)\t([.0-9]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([0-9]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([0-9]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)$'
) LOCATION 's3://****/******/'
CloudTrail
cloudtrail
CREATE EXTERNAL TABLE IF NOT EXISTS sample.records (
records ARRAY<STRUCT<eventTime:STRING,eventSource:STRING,eventName:STRING>>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://********/***/'
SELECT하다
CloudFront의 SELECT 참고 사항
org.apache.hadoop.hive.serde2.OpenCSVSerde
사용할 수있게되기를 기다리십시오 date NOT LIKE '#%'
를 지정하도록합시다 sample-select
SELECT count(*)
FROM aws_logs.cloudfront_log
WHERE date NOT LIKE '#%'
CloudTrail의 SELECT 참고 사항
sample-trail-select
SELECT record.eventTime
FROM aws_logs.traillog
CROSS JOIN unnest(records) AS t(record)
WHERE record.eventname='ConsoleLogin' limit 10
sample-trail-select2
SELECT record
FROM aws_logs.traillog
CROSS JOIN unnest(records) AS t(record)
WHERE record.eventtime LIKE '2017-02-08%' limit 10
요약
Reference
이 문제에 관하여(Athena를 사용하여 AWS 로그 집계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazu23pole/items/57a6b721bb3cdf5e5ef8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)