请求日志记录概览

媒体 CDN 会将每个 HTTP 请求记录到 Cloud Logging。这些请求包括客户端对 EdgeCacheService 资源的请求,以及 EdgeCacheOrigin 资源向配置的源站发出的缓存填充请求。日志通常会近乎实时地传送。这包括可以在 Logging 中查询,以及可以导出到 Cloud Storage 和 Pub/Sub。

日志条目包含以下类型的信息:

  • 大多数 Google Cloud 日志中显示的常规信息,例如严重性、项目 ID、项目编号和时间戳。
  • 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 ASN(自治系统编号),基于连接客户端的 IP 地址。
clientCity Mountain View

发起请求的城市名称,例如加利福尼亚州山景城。

此变量还可添加到请求和响应标头中,并反映 client_city 标头变量。

clientRegionCode US

与客户端 IP 地址相关联的国家/地区(或区域)。 这是 Unicode CLDR 区域代码,例如 US 或 FR。对于大多数国家/地区,这些代码直接对应于 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 代理服务器所在的国家/区域。这是 Unicode CLDR 区域代码,例如 US 或 FR。对于大多数国家/地区,这些代码直接对应于 ISO-3166-2 代码。
proxyStatus 响应路径中的中间 HTTP 代理列表。此值由 RFC 9209 定义。 这对应于 proxy_status 动态标头变量
rangeHeader 请求中的 Range 标头。
requestId 4bde6381-cd17-47e1-8c2a-1aaa424a1156 代理为请求分配的唯一标识符。
tlsCipherSuite 009C 在 TLS 握手期间协商的加密套件。该值是由 IANA TLS 加密套件注册系统定义的四位十六进制数字,例如表示 TLS_RSA_WITH_AES_128_GCM_SHA256 的 009C。对于未加密的客户端连接,此值为空。
tlsSniHostname 由客户端在 TLS 或 QUIC 握手期间提供的服务器名称指示(如 RFC 6066 中所定义)。系统会将主机名转换为小写字母并移除结尾的任何英文句点。
tlsVersion TLS 1.3 客户端与 CDN 在 SSL 握手期间协商的 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 费用,您可以根据需要选择对日志进行抽样或过滤。

您还可以将日志路由到 Pub/Sub、Cloud Storage 或 BigQuery,以便在 Google Cloud 或现有日志分析工具中进行分析。

保留政策

Logging 支持设置自定义保留政策,包括按接收器设置。

后续步骤