Athena의 CloudFront 로그 분석
개요
이번은 Athena에 의한 로그 해석입니다.
동영상을 다루면 CDN(예: CloudFront)을 통해 전송되므로 CloudFront 로그에서 재생 상태를 확인하는 경우가 많습니다.
로컬에 s3 로부터 아카이브 된 로그를 다운로드해 grep, sort, uniq 해 하는 것도 편합니다만, 보기 어렵게 해석하기 어려운 때가 있습니다.
이 때 AWS Athena를 사용하면 SQL 쿼리에서 조건을 좁히거나 정렬할 수 있으므로 편리합니다.
S3에 CloudFront 로그 넣기
Athena에서 테이블 만들기
이번에는 이미 준비한 아래 쿼리에서 테이블을 만듭니다.
htps : // 아 p의 r ぇ아 st-1. 안녕하세요. 아 ws. 아마존. 코 m / 아테나 / 칭찬? Furr & Region = A p-r tea st-1 # 쿠 ry
다음 쿼리를 Query Editor에서 설정하고 "Run query"를 실행합니다.
CREATE EXTERNAL TABLE `app_log`(
`request_date` string,
`request_time` string,
`x_edge_location` string,
`sc_bytes` int,
`client_ip` string,
`cs_method` string,
`cs_host` string,
`cs_uri_stem` string,
`sc_status` string,
`cs_referer` string,
`user_agent` string,
`uri_query` string,
`cookie` string,
`x_edge_result_type` string,
`x_edge_request_id` string,
`x_host_header` string,
`cs_protocol` string,
`cs_bytes` int,
`time_taken` decimal(8,3),
`x_forwarded_for` string,
`ssl_protocol` string,
`ssl_cipher` string,
`x_edge_response_result_type` string,
`cs_protocol_version` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '\t',
'input.regex' = '\t'
)
LOCATION
's3://xxxxxx-sandbox/cf-logs/app'
TBLPROPERTIES (
'has_encrypted_data'='false')
쿼리를 던지다
간단히 얻으려면 다음 SQL을 실행하십시오.
SELECT * FROM app_log;
필터와 순서를 변경하려면 SQL과 유사한 쿼리를 실행하면 됩니다.
WHERE request_time >= '17:00:00' AND request_time < '18:00:00'
AND time_taken > 1 # 1秒以上のレスポンスでかかったもの
AND sc_status = '200' # 200 のもの
ORDER BY request_time ASC # 処理時間順に表示
LIMIT 10 # 10件のみ
덤
AWS-CLI에서도 생성하거나 검색할 수 있으므로 운영상 편리합니다. (아래는 취득만)
$aws athena get-query-results --query-execution-id xxxxxxxxxx --output table
끝
실전에서 사용하려면 파티션 설계가 필요합니다. 그렇지 않으면 전체 스캔이 되므로 비용 증가나 시간이 더 걸립니다. Lmabda 등으로 출력되는 로그에서 s3의 경로를 year=YYYY/month=mm/day=dd/등의 날짜별로 분할하도록 하고 대상 날짜의 것만 스캔하는 장치가 필요할 것 같습니다. (아직 할 수 없지만..)
Reference
이 문제에 관하여(Athena의 CloudFront 로그 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ytanaka3/items/ad5e7d96bc425ff4c843텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)