쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Amazon S3에 저장된 Apache 로그 쿼리

포커스 모드

이 페이지에서

Amazon S3에 저장된 Apache 로그 쿼리 - Amazon Athena

Amazon Athena를 사용하여 Amazon S3 계정에 저장된 Apache HTTP 서버 로그 파일을 쿼리할 수 있습니다. 이 주제는 테이블 스키마를 생성하여 일반 로그 형식의 Apache 액세스 로그 파일을 쿼리하는 방법을 보여줍니다.

일반 로그 형식의 필드에는 클라이언트 IP 주소, 클라이언트 ID, 사용자 ID, 요청 수신 타임스탬프, 클라이언트 요청의 텍스트, 서버 상태 코드, 클라이언트로 반환된 개체의 크기가 포함됩니다.

다음 데이터 예제는 Apache 일반 로그 형식을 보여 줍니다.

198.51.100.7 - Li [10/Oct/2019:13:55:36 -0700] "GET /logo.gif HTTP/1.0" 200 232 198.51.100.14 - Jorge [24/Nov/2019:10:49:52 -0700] "GET /index.html HTTP/1.1" 200 2165 198.51.100.22 - Mateo [27/Dec/2019:11:38:12 -0700] "GET /about.html HTTP/1.1" 200 1287 198.51.100.9 - Nikki [11/Jan/2020:11:40:11 -0700] "GET /image.png HTTP/1.1" 404 230 198.51.100.2 - Ana [15/Feb/2019:10:12:22 -0700] "GET /favicon.ico HTTP/1.1" 404 30 198.51.100.13 - Saanvi [14/Mar/2019:11:40:33 -0700] "GET /intro.html HTTP/1.1" 200 1608 198.51.100.11 - Xiulan [22/Apr/2019:10:51:34 -0700] "GET /group/index.html HTTP/1.1" 200 1344

Athena에서 Apache 로그용 테이블 생성

Amazon S3에 저장된 Apache 로그를 쿼리하기 전에 먼저 Athena용 테이블 스키마를 생성해야 로그 데이터를 읽을 수 있습니다. Apache 로그에 대한 Athena 테이블은 Grok SerDe를 사용해 만들 수 있습니다 . Grok SerDe를 사용하는 방법에 대한 자세한 내용은 AWS Glue 개발자 안내서Grok 사용자 지정 분류자 작성을 참조하세요.

Athena에서 Apache 웹 서버 로그에 대한 테이블 생성
  1. https://console.aws.amazon.com/athena/에서 Athena 콘솔을 엽니다.

  2. 다음 DDL 문을 Athena 쿼리 편집기에 붙여 넣습니다. Amazon S3의 Athena 로그를 가리키도록 LOCATION 's3://amzn-s3-demo-bucket/apache-log-folder/'의 값을 수정합니다.

    CREATE EXTERNAL TABLE apache_logs ( client_ip string, client_id string, user_id string, request_received_time string, client_request string, server_status string, returned_obj_size string ) ROW FORMAT SERDE 'com.amazonaws.glue.serde.GrokSerDe' WITH SERDEPROPERTIES ( 'input.format'='^%{IPV4:client_ip} %{DATA:client_id} %{USERNAME:user_id} %{GREEDYDATA:request_received_time} %{QUOTEDSTRING:client_request} %{DATA:server_status} %{DATA: returned_obj_size}$' ) STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/apache-log-folder/';
  3. Athena 콘솔에서 apache_logs 테이블을 등록하는 쿼리를 실행합니다. 이 쿼리가 완료되면 로그를 Athena에서 쿼리할 수 있습니다.

쿼리 예제

예 - 404 오류 필터링

다음 쿼리 예제는 apache_logs 테이블에서 요청 수신 시간, 클라이언트 요청의 텍스트 및 서버 상태 코드를 선택합니다. WHERE 절은 HTTP 상태 코드 404(페이지를 찾을 수 없음)를 필터링합니다.

SELECT request_received_time, client_request, server_status FROM apache_logs WHERE server_status = '404'

다음 이미지는 Athena 쿼리 편집기의 쿼리 결과를 보여줍니다.

Athena에서 HTTP 404 항목에 대해 Apache 로그 쿼리.
예 - 성공적인 요청 필터링

다음 쿼리 예제는 apache_logs 테이블에서 사용자 ID, 요청 수신 시간, 클라이언트 요청의 텍스트 및 서버 상태 코드를 선택합니다. WHERE 절은 HTTP 상태 코드 200(성공)을 필터링합니다.

SELECT user_id, request_received_time, client_request, server_status FROM apache_logs WHERE server_status = '200'

다음 이미지는 Athena 쿼리 편집기의 쿼리 결과를 보여줍니다.

Athena에서 HTTP 200 항목에 대해 Apache 로그 쿼리.
예 - 타임스탬프별 필터링

다음 예제에서는 요청 수신 시간이 지정된 타임스탬프보다 큰 레코드를 쿼리합니다.

SELECT * FROM apache_logs WHERE request_received_time > 10/Oct/2023:00:00:00
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.