Media CDN은 각 HTTP 요청을 Cloud Logging에 기록합니다. 이러한 요청에는 EdgeCacheService
리소스에 대한 클라이언트 요청과 EdgeCacheOrigin
리소스에서 캐시 채우기용으로 구성된 원본으로의 요청이 포함됩니다. 일반적으로 로그는 거의 실시간으로 제공됩니다. 여기에는 Logging의 쿼리 기능과 Cloud Storage 및 Pub/Sub로의 내보내기 기능이 포함됩니다.
로그 항목은 다음과 같은 유형의 정보를 담고 있습니다.
- 심각도, 프로젝트 ID, 프로젝트 번호, 타임스탬프 등과 같이 대부분의 Google Cloud 로그에 표시되는 일반 정보
- HttpRequest 로그 필드
다음을 포함하여 structPayload 내의 요청에 대한 추가 메타데이터
- 클라이언트 ASN
- 클라이언트 위치 데이터
- 응답을 처리하는 데 사용되는 캐시의 ID(도시)
- HTTP 수준 응답에 대한 첫 번째 바이트 시간(TTFB)와 마지막 바이트 시간(TTLB)(밀리초)
- TLS SNI 호스트 이름
- 사용된 TLS 버전
- 일반 미디어 클라이언트 데이터(CMCD) 정보
캐시별 필드
Media CDN 로그의 jsonPayload
객체에는 Media CDN이 객체를 제공하는 방법, 객체가 캐시되었는지 여부, 발생한 모든 오류 상태와 관련된 메타데이터가 포함됩니다.
이러한 필드는 예시 값과 함께 다음 표에 표시되어 있습니다.
필드 | 예시 값 | 세부정보 |
---|---|---|
backendInitialLatency | 0.126644940s | 백엔드가 요청에 처음 응답하는 데 걸리는 기간입니다. CDN이 원본에서 응답 바이트 수신을 시작할 때까지 CDN이 원본에 대한 요청 프록시를 완료한 시간으로부터 측정됩니다. 이 필드는 |
backendLatency | 0.126666342s | 백엔드가 요청에 완전히 응답하는 데 걸리는 기간입니다. CDN이 백엔드로부터 전체 응답을 수신할 때까지 CDN이 원본에 대한 요청 프록시를 완료한 시간으로부터 측정됩니다. 이 필드는 |
cacheId | maa-123456 |
캐시와 가장 가까운 도시의 IATA(공항) 코드 및 캐시 인스턴스의 불투명 식별자입니다. 전체 또는 부분 캐시 부적중으로 인해 요청 처리를 위해 여러 캐싱 계층이 필요한 경우 캐시 위치 체인이 제공됩니다. 예를 들면 del-234567, bom-345678, sin-456789 입니다. 여기서 가장 오른쪽 캐시가 사용자에게 가장 가까운 위치입니다. |
cacheKeyFingerprint | f63925711b0dd8a9ff861cd303774e6e | 캐시 키의 불투명 지문입니다. 동일한 캐시 키에 매핑되는 요청입니다. 예를 들어 쿼리 매개변수가 포함되지 않았거나 호스트가 포함되지 않은 요청에 동일한 지문이 포함됩니다. 총 요청 수가 총 고유 지문 수와 비슷하면 캐시 키가 너무 구체적임을 나타낼 수 있습니다. |
cacheMode | USE_ORIGIN_HEADERS | 이 요청과 일치한 경로에 구성된 cdnPolicy.cacheMode 입니다.
|
cacheStatus | Cache hit: Full cache miss: |
사용자와 원본 보호 사이의 각 캐시 노드에 표시되는 캐시 상태입니다. 가장 오른쪽 값은 사용자에게 가장 가까운 캐시를 나타냅니다. 이 필드의 해석 방법에 대한 자세한 내용은 캐시 상태 값을 참조하세요. |
clientAsn | 연결 중인 클라이언트 IP 주소를 기반으로 하는 ASN(자율 시스템 번호)입니다. | |
clientCity | Mountain View | 요청이 시작된 도시의 이름입니다(예: 캘리포니아주 마운틴뷰). 또한 요청 및 응답 헤더에도 추가할 수 있으며 |
clientRegionCode | US | 클라이언트의 IP 주소와 연관된 국가(또는 리전)입니다. 이는 US 또는 FR과 같은 유니코드 CLDR 리전 코드입니다. 대부분의 국가에서 이러한 코드는 ISO-3166-2 코드와 직접 연결됩니다. 또한 요청 및 응답 헤더에도 추가할 수 있으며 |
cmcd | 클라이언트 요청에서 클라이언트 측 서비스 품질을 알리는 데 도움이 되는 CMCD 키입니다. Media CDN은 HTTP 요청 헤더 또는 쿼리 매개변수를 통한 데이터 전송을 지원하며 다음 키에 대한 값을 기록하지 않습니다. dl (마감), nor (다음 객체 요청), nrr (다음 범위 요청), ot (객체 유형), rtp (요청된 최대 처리량), sf (스트리밍 형식), su (시작), tb (최고 비트 전송률), v (CMCD 버전).
|
|
enforcedSecurityPolicy | 클라이언트 요청에 적용되는 Google Cloud Armor 에지 보안 정책. 여기에는 정책 이름, 우선순위, 실행 조치에 대한 추가 정보가 포함됩니다. | |
httpTtfb | 0.157228207s | 응답의 첫 번째 바이트가 전송(수신 아님)될 때까지 프록시가 요청 바이트 수신을 시작하는 시점으로부터의 기간입니다. |
latency | 0.157415635s | 클라이언트에 응답 쓰기를 완료할 때까지 프록시가 요청 바이트 수신을 시작하는 시점으로부터의 기간입니다. |
location | 응답의 Location 헤더입니다.
|
|
metroIataCode | MAA | 프록시와 가장 가까운 도시의 IATA(공항) 코드입니다. |
origin | 응답이 프록시된 EdgeCacheOrigin 리소스입니다.
|
|
originalRequestId | 19d92668-3948-49d8-9244-25f8252043e4 | 원래 이 응답을 생성한 요청에 할당된 고유 식별자입니다.
캐시된 응답의 경우 request_id 와 다른 경우에만 채워집니다.
|
originIp | 응답이 프록시된 EdgeCacheOrigin 리소스에 연결하는 데 사용되는 IP 주소입니다.
|
|
proxyRegionCode | US | 프록시가 있는 국가(또는 리전)입니다. 이는 US 또는 FR과 같은 유니코드 CLDR 리전 코드입니다. 대부분의 국가에서 이러한 코드는 ISO-3166-2 코드와 직접 연결됩니다. |
proxyStatus | 응답 경로에 있는 중간 HTTP 프록시의 목록입니다. 이 값은 RFC 9209로 정의됩니다.
이는 proxy_status 동적 헤더 변수에 해당합니다.
|
|
rangeHeader | 요청의 Range 헤더입니다.
|
|
requestId | 4bde6381-cd17-47e1-8c2a-1aaa424a1156 | 프록시에서 요청에 할당된 고유 식별자입니다. |
tlsCipherSuite | 009C | TLS 핸드셰이크 중에 협상된 암호 모음입니다. 값은 IANA TLS Cipher Suite 레지스트리로 정의된 네 자리 16진수입니다(예: TLS_RSA_WITH_AES_128_GCM_SHA256의 경우 009C). 암호화되지 않은 클라이언트 연결의 경우 이 값은 비어 있습니다. |
tlsSniHostname | TLS 또는 QUIC 핸드셰이크 중에 클라이언트가 제공한 경우 서버 이름 표시(RFC 6066에 정의된 대로)입니다. 호스트 이름이 소문자로 변환되고 모든 후행 점이 삭제됩니다. | |
tlsVersion | TLS 1.3 | SSL 핸드셰이크 중 클라이언트와 CDN 사이에 협상된 TLS 버전입니다. 가능한 값은 TLS 1, TLS 1.1, TLS 1.2, TLS 1.3입니다. |
로그 항목 예시
다음은 캐시에서 제공되는 응답의 로그 항목 예시를 제공합니다.
{ "insertId": "617fa16e-0000-2ac9-9993-d4f547fe67d4@a1", "jsonPayload": { "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry", "tlsVersion": "TLS 1.3", "tlsCipherSuite": "009C", // hex digits for the cipher negotiated "cacheId": "maa-132eed13faa13", "clientAsn": "9299", // AS the client is associated with "origin": "example_origin", "clientRegionCode": "IN", "metroIataCode": "bom", "clientCity": "Mumbai", // City name, in English "latency": "0.005105200s", "proxyStatus": "Google-Edge-Cache", "httpTtfb": "0.005056080s", "cacheMode": "FORCE_CACHE_ALL", "cacheKeyFingerprint": "c360ac18849b6336", "cacheStatus": "hit,stale", "enforcedSecurityPolicy": { "outcome": "ACCEPT", "configuredAction": "ACCEPT", "name": "example_policy", "priority": 1000 }, "originalRequestId": "19d92668-3948-49d8-9244-25f8252043e5", "proxyRegionCode": "IN", "requestId": "4bde6381-cd17-47e1-8c2a-1aaa424a1156", "originIp": "74.125.128.128" }, "httpRequest": { "requestMethod": "GET", "requestUrl": "https://example.com/image.jpg", "requestSize": "3545", "status": 200, "responseSize": "3716", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36", "remoteIp": "62.36.0.43", "protocol": "HTTP/2" }, "resource": { "type": "edgecache.googleapis.com/EdgeCacheRouteRule", "labels": { "matched_path": "/", "path_matcher_name": "routes", "service_name": "example_service", "resource_container": "projects/123456789", "location": "global", "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example_origin", "route_type": "ORIGIN" } }, "timestamp": "2022-11-19T00:24:13.695328200Z", "logName": "projects/my-project/logs/edgecache.googleapis.com%2Fedge_cache_request", "receiveTimestamp": "2022-11-19T00:24:16.715871645Z" }
몇 가지 방법을 요청 로깅을 구성할 수 있습니다. 로그 볼륨과 전체 Logging 비용을 줄이려면 로그를 선택적으로 샘플링하거나 필요에 따라 필터링할 수 있습니다.
또한 Google Cloud 또는 기존 로그 분석 도구에서 분석을 위해 Pub/Sub, Cloud Storage, BigQuery로 로그를 라우팅할 수 있습니다.
보관 정책
Logging은 싱크당 기준을 포함하여 커스텀 보관 정책 설정을 지원합니다.
다음 단계
- 로깅된 요청을 기반으로 자체 측정항목 값을 정의하도록 로그 기반 측정항목을 설정하는 방법을 이해하려면 로그 기반 측정항목 개요를 참조하세요.
- Logging 가격 책정에 대한 자세한 내용은 Google Cloud Observability 가격 책정을 참조하세요.
- 감사 로깅 작동 방법, 관리자 활동에 대해 감사 로그를 사용 설정 및 구성하는 방법을 보려면 Cloud 감사 로그 문서를 참조하세요.