请求日志记录概览

媒体 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

用户与源 Shield 之间的每个缓存节点的缓存状态,其中最右侧的值表示最靠近用户的缓存。如需详细了解如何解读此字段,请参阅缓存状态值
clientAsn 基于连接客户端 IP 地址的 ASN(自治系统编号)。
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 版本)。
compressionAlgorithmApplied br 用于压缩相应日志条目中提及的响应的算法。可能的值包括 brgzip
enforcedSecurityPolicy 适用于客户端请求的 Google Cloud Armor 边缘安全政策。这包括有关政策名称、优先级和所采取行动的其他信息。还包括有关 Google Threat Intelligence 评估的信息(如适用)。
flexShieldingRegion US_EAST4 用于灵活防护的区域(如果有)。

此字段仅出现在从 EdgeCacheOrigin 资源填充缓存的日志中。

flexShieldingStatus SHIELDED 缓存填充请求的灵活屏蔽状态。值可以是以下值之一:
  • DEFAULT_GLOBAL:表示未配置灵活屏蔽
  • SHIELDED:表示使用通过 flexShieldingRegion 配置的区域来处理请求
  • SPILLED:表示使用 flexShieldingRegion 配置的区域无法用于相应请求;系统使用了默认来源

此字段仅出现在从 EdgeCacheOrigin 资源填充缓存的日志中。

httpTtfb 0.157228207s 从代理开始接收请求字节到发送(而非接收)响应的第一个字节所用的时间。
latency 0.157415635s 从代理开始接收请求字节到完成向客户端写入响应的持续时间。
location 响应中的 Location 标头。
metroIataCode MAA 距离代理最近的城市的 IATA(机场)代码。
origin 响应的代理来源 EdgeCacheOrigin 资源。
originalRequestId 19d92668-3948-49d8-9244-25f8252043e4 最初生成此响应的请求的唯一标识符。 仅当此值与缓存响应的 request_id 不同时填充。
originIp 用于联系 EdgeCacheOrigin 资源(响应通过该资源进行代理)的 IP 地址。
previewSecurityPolicy 适用于客户端请求的 Google Cloud Armor 边缘安全政策,其中考虑了预览规则。这包括有关政策名称、优先级和所采取行动的其他信息。
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",
    "compressionAlgorithmApplied": "br",
    "enforcedSecurityPolicy": {
      "outcome": "ACCEPT",
      "configuredAction": "ACCEPT",
      "name": "example_policy",
      "priority": 1000,
      "configuredAction": "DENY"
      threatIntelligence: {
        categories: [
          0: "iplist-public-clouds"
        ]
      }
    },
    "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 支持设置自定义保留政策,包括按接收器设置。

后续步骤