Amazon CloudFront 배포에서 로깅을 활성화하여 웹 액세스 로그를 New Relic으로 보낼 수 있습니다.
로그 전송 옵션
CloudFront에서 로그를 보내는 데는 표준 로깅 또는 실시간 로그의 두 가지 옵션이 있습니다.
Standard logs CloudFront에서 저장된 S3 버킷으로 전송됩니다. 그런 다음 AWS Lambda 트리거를 사용하여 S3에서 뉴렐릭으로 로그를 보냅니다. 표준 로그(액세스 로그) 구성 및 사용에 대한 Amazon CloudFront 문서를 검토하십시오. 여기에는 S3 버킷 생성 및 적절한 권한 설정에 대한 자세한 정보가 포함되어 있습니다. 표준 로그에는 모든 데이터 필드가 포함되며 5분마다 S3로 전송된 다음 뉴렐릭으로 전송됩니다. Amazon 콘솔에서 표준 로그를 구성하고 S3 Lambda 트리거를 통해 뉴렐릭으로 보내는 방법에 대한 자세한 지침은 표준 로깅 활성화 섹션을 참조하세요.
Real-time logs Kinesis Data Stream 소비자 및 Kinesis Data Firehose를 사용하여 요청을 받은 후 몇 초 내에 뉴렐릭으로 전송됩니다. 실시간 로그 구성에 대해서는 Amazon CloudFront 문서를 검토하십시오. 로그 로그는 구성 가능하며 샘플링 속도(전송할 로그의 백분율)를 구성하고, 로그 기록에서 수신할 특정 필드를 선택하고, 로그를 수신하려는 특정 캐시 동작(경로 패턴)을 정의할 수 있습니다. 실시간 로그에는 모든 데이터를 전송하거나 실패한 데이터만 전송하기 위한 S3 백업 버킷도 필요합니다. 따라서 실시간 로그를 활성화하려면 S3 버킷 생성 지침 도 따라야 합니다. Amazaon 콘솔에서 표준 로그를 구성하고 이를 S3 Lambda 트리거를 통해 뉴렐릭으로 보내는 방법에 대한 자세한 지침은 활성화 로그 로그 섹션을 참조하세요.
두 옵션 모두 내장된 로그 구문 분석 규칙 을 사용하여 CloudFront 액세스 로그를 자동으로 구문 분석하고 빠른 시작 대시보드를 사용하여 데이터에 대한 통찰력을 즉시 얻을 수 있습니다. 기본 제공 구문 분석 규칙이 작동하고 제공된 빠른 시작 대시보드의 위젯에 데이터를 채우려면 지침에 정의된 대로 logtype
속성을 구성해야 합니다. 일부 로깅 필드만 선택한 경우 실시간 로그 구문 분석에 대한 자세한 내용은 구문 분석 섹션 을 참조하세요.
CloudFront 로그 저장을 위한 S3 버킷 생성
CloudFront 배포에 대한 표준 로그 또는 실시간 로그를 활성화하려면 먼저 다음 위치에 CloudFront 액세스 로그를 저장하는 데 사용할 S3 버킷을 생성해야 합니다.
AWS Management Console에서
Services > All services > S3
선택합니다.
Create bucket
선택합니다.
Bucket name
을 입력하고 원하는
AWS region
을 선택합니다. (표준 로깅을 사용하는 경우 S3 버킷은 다음 섹션에서 생성하는 Lambda 함수와 동일한 리전에 있어야 합니다.)
Object ownership
섹션에서
ACLs enabled
선택합니다.
Create bucket
선택합니다.
이제 표준 또는 실시간 로깅을 활성화할 수 있습니다. 해당 옵션에 대한 지침은 계속 읽으십시오.
표준 로깅 사용
표준 로그를 활성화하도록 CloudFront 배포를 업데이트합니다.
AWS Management Console에서
Services > All Services > CloudFront
선택합니다.
배포판
ID
을 클릭하세요. 일반 탭의 설정 섹션에서
Edit
선택합니다.
Standard logging
섹션에서
On
선택하여 로깅을 활성화하고 로깅 구성 설정을 표시합니다.
S3 bucket
의 경우 위에서 생성한 S3 버킷 이름을 검색하여 선택합니다.
선택 사항:
cloudfront_logs
과 같은 로그 접두사를 추가할 수 있습니다.Save changes
선택합니다.
5분 이내에 다음 파일 이름 형식으로 S3 버킷에 로그 파일이 표시되기 시작해야 합니다.
<optional prefix>/<distribution ID>.YYYY-MM-DD-HH.unique-ID.gz
다음으로 S3의 액세스 로그를 New Relic으로 보내도록 AWS Lambda 함수 NewRelic-log-ingestion-s3
를 설치하고 구성해야 합니다. 적절한 LOG_TYPE
환경 변수를 설정할 수 있도록 Amazon CloudFront 로그에 대한 단일 Lambda 함수가 필요합니다. 이를 통해 CloudFront 내장 구문 분석 규칙 과 빠른 시작 대시보드를 사용할 수 있습니다. 이 Lambda 함수가 이미 한 지역에 설치되어 있고 이를 사용하여 다른 S3 로그를 New Relic(예: ALB/NLB 로그)으로 보내는 경우 다른 지역에 Lambda 함수를 다시 설치해야 합니다. 또한 앞서 언급했듯이 액세스 로그를 저장하기 위한 S3 버킷과 S3 로그를 New Relic으로 전송하기 위한 Lambda 함수는 동일한 리전에 있어야 합니다.
다음 단계를 수행하려면:
S3에서 로그를 전송하기 위해 AWS Lambda를 구성 하려면 여기 지침을 따르십시오.
Lambda 함수가 설치된 후
Functions > NewRelic-s3-log-ingestion
선택합니다.
S3 아래에서
+ Add trigger
버튼을 선택합니다.
Trigger Configuration
에 대해 S3을 선택합니다.
Bucket
의 경우 위에서 생성한 S3 버킷을 검색하여 선택합니다.
Recursive invocation
섹션에서 확인 상자를 선택한 후
Add
선택합니다.
함수의
Configuration
탭에서 왼쪽에 있는
Environment variables
옵션을 선택합니다.
Edit
선택하고
LOG_TYPE
에 대해cloudfront-web
입력합니다.Save
선택합니다.
5분 이내에 로그 UI에 로그가 표시되기 시작합니다. 로그를 수신하고 있는지 확인하려면 로그 UI 검색창에서 logtype:cloudfront-web
를 검색하거나 다음과 같이 NRQL 쿼리를 실행하세요. FROM Log SELECT * WHERE logtype='cloudfront-web'
실시간 로그 활성화
CloudFront 배포에 대한 실시간 로깅을 활성화하려면 먼저 CloudFront 로그를 수신하기 위한 Kinesis Data Stream을 생성해야 합니다.
AWS Management Console에서
Services > Kinesis
선택합니다.
Data streams
선택한 다음
Create data stream
선택합니다.
Data stream name
을 입력하세요. 예를 들어,
CloudFront-DataStream
.원하는 데이터 스트림 용량 모드를 선택합니다.
Create data stream
선택합니다.
Consumers
섹션에서
Process with delivery stream
선택합니다.
Destination
에 대해
New Relic
선택합니다.
Delivery stream name
을 입력하세요. 예를 들어,
CloudFront-DeliveryStream
.Destination
설정 섹션에서 HTTP 엔드포인트 URL에 대해
New Relic logs - US
또는
New Relic logs - EU
선택합니다.
API key
에 뉴렐릭 계정의
을 입력합니다.
Add parameter
선택합니다.
아래 21단계에서 로그인을 위해 모든 필드를 선택하려면
Key
에 대해
logtype
입력하고Value
에 대해
cloudfront-rtl
입력합니다. 아래 21단계에서 로그인할 필드의 하위 집합을 선택하려면cloudfront-rtl-custom
입력하세요. 모든 필드를 선택하지 않은 경우 아래의 실시간 로그 구문 분석 섹션에서 로그에 대한 사용자 지정 구문 분석 규칙을 만드는 방법에 대한 정보를 참조하세요.Backup settings
섹션에서 기본 설정에 따라
Failed data
만 선택하거나
Source record backup in Amazon S3
옵션에 대해
All data
선택할 수 있습니다.
S3 백업 버킷의 경우
Browse
선택하여 위에서 CloudFront 로그를 저장하기 위해 생성한 S3 버킷 이름을 검색하고 선택합니다.
Create delivery stream
선택합니다.
다음으로 실시간 로깅 구성을 생성하여 CloudFront 배포에 연결합니다.
AWS Management Console에서
Services > CloudFront
선택합니다.
왼쪽의
Telemetry section
에서
Logs
선택합니다.
Real-time configurations
탭을 클릭한 다음
Create configuration
선택합니다.
구성 이름을 입력합니다. 예:
CloudFront-RealTimeLogs
.1
에서100
사이의 샘플링 속도를 입력합니다.Fields
의 경우
All fields
선택하거나 로그에 포함할 필드를 선택합니다.
Endpoint
의 경우 3단계에서 생성한 데이터 스트림 이름을 선택합니다. 예:
CloudFront-DataStream
.Distrubutions
섹션에서 CloudFront 배포 ID를 선택합니다.
Cache behaviors
의 경우
Default (*)
확인하세요.
Create configuration
선택합니다.
몇 분 안에 로그 UI에 로그가 표시되기 시작합니다. 실시간 로그를 수신하고 있는지 확인하려면 로그 UI 검색창에서 또는 다음과 같은 NRQL 쿼리를 통해 logtype:cloudfront-rtl*
를 검색할 수 있습니다. FROM Log SELECT * WHERE logtype LIKE 'cloudfront-rtl%'
실시간 로그 파싱
실시간 로그에 대한 기본 제공 구문 분석 규칙은 모든 필드가 기록될 것이라고 가정합니다. 필드의 하위 집합만 기록하도록 선택한 경우 로그 형식과 일치하는 사용자 지정 구문 분석 규칙을 정의해야 합니다. 이는 로그가 올바르게 구문 분석되고 빠른 시작 대시보드 를 사용하는 데 필요합니다.
맞춤 구문 분석 규칙을 만들려면 로그 UI의 Manage data 섹션에서 Parsing 선택하세요.
Rule name
에 대해
CloudFront custom parsing rule
입력합니다.Filter logs based on NRQL
에 대해
logtype='cloundfront-rtl-custom'
입력합니다.대화 설정 로그에서 선택한 필드가
only
포함되도록 아래의 Grok 구문 분석 논리를 업데이트하세요. 예를 들어,
cs_headers
필드를 포함하지 않기로 선택한 경우 Grok에서%{SPACE}%{NOTSPACE:cs_headers}%
제거하는 식입니다.^%{NOTSPACE:timestamp}.\d{3}%{SPACE}%{NOTSPACE:c_ip}%{SPACE}%{NUMBER:time_to_first_byte:INT}%{SPACE}%{NUMBER:sc_status:INT}%{SPACE}%{NUMBER:sc_bytes:INT}%{SPACE}%{WORD:cs_method}%{SPACE}%{NOTSPACE:cs_protocol}%{SPACE}%{NOTSPACE:cs_host}%{SPACE}%{NOTSPACE:cs_uri_stem}%{SPACE}%{NUMBER:cs_bytes:INT}%{SPACE}%{NOTSPACE:x_edge_location}%{SPACE}%{NOTSPACE:x_edge_request_id}%{SPACE}%{NOTSPACE:x_host_header}%{SPACE}%{NUMBER:time_taken:INT}%{SPACE}%{NOTSPACE:cs_protocol_version}%{SPACE}%{NOTSPACE:cs_ip_version}%{SPACE}%{NOTSPACE:cs_user_agent}%{SPACE}%{NOTSPACE:cs_referer}%{SPACE}%{NOTSPACE:cs_cookie}%{SPACE}%{NOTSPACE:cs_uri_query}%{SPACE}%{NOTSPACE:x_edge_response_result_type}%{SPACE}%{NOTSPACE:x_forwarded_for}%{SPACE}%{NOTSPACE:ssl_protocol}%{SPACE}%{NOTSPACE:ssl_cipher}%{SPACE}%{NOTSPACE:x_edge_result_type}%{SPACE}%{NOTSPACE:fle_encrypted_fields}%{SPACE}%{NOTSPACE:fle_status}%{SPACE}%{NOTSPACE:sc_content_type}%{SPACE}%{NOTSPACE:sc_content_len}%{SPACE}%{NOTSPACE:sc_range_start}%{SPACE}%{NOTSPACE:sc_range_end}%{SPACE}%{NUMBER:c_port:INT}%{SPACE}%{NOTSPACE:x_edge_detailed_result_type}%{SPACE}%{NOTSPACE:c_country}%{SPACE}%{NOTSPACE:cs_accept_encoding}%{SPACE}%{NOTSPACE:cs_accept}%{SPACE}%{NOTSPACE:cache_behavior_path_pattern}%{SPACE}%{NOTSPACE:cs_headers}%{SPACE}%{NOTSPACE:cs_header_names}%{SPACE}%{NOTSPACE:cs_headers_count}$업데이트된 Grok을 구문 분석 논리 섹션에 붙여넣은 다음
Test grok
를 선택하여 파서가 작동하는지 확인합니다.
규칙을 활성화한 다음
Save parsing rule
선택합니다.
CloudFront 사용자 지정 구문 분석 구성의 스크린샷.
다음은 뭐지?
Amazon CloudFront 액세스 로그에 대한 빠른 시작에는 사전 구축된 대시보드가 포함되어 있습니다.
다음 단계에 대한 몇 가지 아이디어는 다음과 같습니다.
Amazon CloudFront 액세스 로그의 주요 지표를 확인하려면 사전 구축된 대시보드를 몇 분 만에 시작하세요. Amazon CloudFront 액세스 로그인 퀵스타트 로 이동하여
Install now
클릭합니다.
로그 UI를사용하여 플랫폼 전체에서 로깅 데이터를 탐색합니다.
컨텍스트 기능의 로그를 사용하여 로그를 전달하여 애플리케이션과 플랫폼 성능 데이터에 대한 더 깊은 가시성을 얻으십시오.
경고 를 설정합니다.
데이터를 쿼리 하고 대시보드를 만듭니다 .
로그 전달 사용 안함
로그 전달 기능을 비활성화하려면 두 가지 옵션이 있습니다. S3 로그를 New Relic으로 보내는 것을 중단하려면 NewRelic-log-ingestion-s3
Lambda 함수에서 S3 트리거를 삭제할 수 있습니다. Amazon CloudFront 액세스 로그를 완전히 비활성화하려면 트리거를 삭제하고 CloudFront 배포의 일반 설정에서 로깅을 꺼야 합니다.