요청 로깅 개요

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이 원본에 대한 요청 프록시를 완료한 시간으로부터 측정됩니다.

이 필드는 EdgeCacheOrigin 리소스의 캐시 채우기 로그에만 표시됩니다.

backendLatency 0.126666342s

백엔드가 요청에 완전히 응답하는 데 걸리는 기간입니다. CDN이 백엔드로부터 전체 응답을 수신할 때까지 CDN이 원본에 대한 요청 프록시를 완료한 시간으로부터 측정됩니다.

이 필드는 EdgeCacheOrigin 리소스의 캐시 채우기 로그에만 표시됩니다.

cacheId maa-123456 캐시와 가장 가까운 도시의 IATA(공항) 코드 및 캐시 인스턴스의 불투명 식별자입니다. 전체 또는 부분 캐시 부적중으로 인해 요청 처리를 위해 여러 캐싱 계층이 필요한 경우 캐시 위치 체인이 제공됩니다. 예를 들면 del-234567, bom-345678, sin-456789입니다. 여기서 가장 오른쪽 캐시가 사용자에게 가장 가까운 위치입니다.
cacheKeyFingerprint f63925711b0dd8a9ff861cd303774e6e

캐시 키의 불투명 지문입니다. 동일한 캐시 키에 매핑되는 요청입니다. 예를 들어 쿼리 매개변수가 포함되지 않았거나 호스트가 포함되지 않은 요청에 동일한 지문이 포함됩니다.

총 요청 수가 총 고유 지문 수와 비슷하면 캐시 키가 너무 구체적임을 나타낼 수 있습니다.

cacheMode USE_ORIGIN_HEADERS 이 요청과 일치한 경로에 구성된 cdnPolicy.cacheMode입니다.
cacheStatus

Cache hit: hit

Full cache miss: fetch, miss, miss

사용자와 원본 보호 사이의 각 캐시 노드에 표시되는 캐시 상태입니다. 가장 오른쪽 값은 사용자에게 가장 가까운 캐시를 나타냅니다. 이 필드의 해석 방법에 대한 자세한 내용은 캐시 상태 값을 참조하세요.
clientAsn 연결 중인 클라이언트 IP 주소를 기반으로 하는 ASN(자율 시스템 번호)입니다.
clientCity Mountain View

요청이 시작된 도시의 이름입니다(예: 캘리포니아주 마운틴뷰).

또한 요청 및 응답 헤더에도 추가할 수 있으며 client_city 헤더 변수를 미러링합니다.

clientRegionCode US

클라이언트의 IP 주소와 연관된 국가(또는 리전)입니다. 이는 US 또는 FR과 같은 유니코드 CLDR 리전 코드입니다. 대부분의 국가에서 이러한 코드는 ISO-3166-2 코드와 직접 연결됩니다.

또한 요청 및 응답 헤더에도 추가할 수 있으며 client_region 헤더 변수를 미러링합니다.

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은 싱크당 기준을 포함하여 커스텀 보관 정책 설정을 지원합니다.

다음 단계