관리 메뉴

피터의 개발이야기

[AWS Athena] AWS Athena alb log 분석용 테이블 생성문 본문

AWS

[AWS Athena] AWS Athena alb log 분석용 테이블 생성문

기록하는 백앤드개발자 2024. 5. 5. 10:08
반응형

ㅁ 들어가며

 트래픽 지연이 발생하면 해당 대상을 찾아야하는 경우가 발생합니다. 이럴 경우 alb의 log를 분석하여 그 대상을 찾을 경우 로그 내용을 테이블로 생성하여 SQL으로 분석을 한다면 쉽게 그 대상을 찾을 수 있을 것입니다. AWSAthena는 S3에 저장된 log를 정규화 패턴으로 데이터화 하고 SQL을 통해 조회할 수 있었습니다. Athena를 이용해 테이블 생성 쿼리를 남겨 봅니다.

 

ㅁ Athena란?

  Amazon Athena는 표준 SQL을 사용하여 Amazon S3(Amazon Simple Storage Service)에 있는 데이터를 직접 간편하게 분석할 수 있는 대화형 쿼리 서비스입니다. AWS Management Console에서 몇 가지 작업을 수행하면 Athena에서 Amazon S3에 저장된 데이터를 지정하고 표준 SQL을 사용하여 임시 쿼리를 실행하여 몇 초 안에 결과를 얻을 수 있습니다.

 

ㅁ alb log 분석용 테이블 생성

 ㅇ 운영에서 사용해던 alb log 분석 테이블 생성 쿼리를 남겨보았습니다.

 ㅇ Athena의 데이터베이스 생성 방법은 AWS Athena 시작하기에서 확인하실 수 있습니다.

CREATE EXTERNAL TABLE IF NOT EXISTS int_alb_logs_new (
            type string,
            time string,
            elb string,
            client_ip string,
            client_port int,
            target_ip string,
            target_port int,
            request_processing_time double,
            target_processing_time double,
            response_processing_time double,
            elb_status_code string,
            target_status_code string,
            received_bytes bigint,
            sent_bytes bigint,
            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,
            domain_name string,
            chosen_cert_arn string,
            matched_rule_priority string,
            request_creation_time string,
            actions_executed string,
            redirect_url string,
            lambda_error_reason string,
            target_port_list string,
            target_status_code_list string,
            classification string,
            classification_reason 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]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) ([^ ]*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\s]+?)\" \"([^\s]+)\" \"([^ ]*)\" \"([^ ]*)\"')
            LOCATION 's3://prd-peterica-alb/int-alb/AWSLogs/123456789123/elasticloadbalancing/ap-northeast-2/';

 

 

ㅁ 함께 보면 좋은 사이트

Amazon Athena란 무엇인가요?

Amazon Athena를 사용하여 S3에서 데이터 분석

 

반응형
Comments