请求日志记录概览

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

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

  • 大多数 Google Cloud 日志中显示的常规信息,例如严重性、项目 ID、项目编号和时间戳。
  • HttpRequest 日志字段。
  • 有关结构载荷中请求的其他元数据,包括:

    • 客户端 ASN
    • 客户端位置数据
    • 用于执行响应的缓存 ID(城市)
    • HTTP 级响应的首字节时间 (TTFB) 和首字节时间 (TTLB)(以毫秒为单位)
    • TLS SNI 主机名
    • 使用的 TLS 版本
    • 通用媒体客户端数据 (CMCD) 信息

缓存专用字段

媒体 CDN 日志的 jsonPayload 对象包含与媒体 CDN 如何传送对象、是否缓存了对象以及遇到的任何错误状态相关的元数据。

下表显示了这些字段以及示例值。

字段 示例值 详情
backendInitialLatency 0.126644940s

后端最初响应请求所需的 Duration。从 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 ASN(自治系统编号),基于连接客户端的 IP 地址。
clientCity Mountain View

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

此名称也可以添加到请求和响应标头中,并镜像 client_city 标头变量。

clientRegionCode US

与客户端 IP 地址关联的国家/地区(或区域)。 这是一个 Unicode CLDR 区域代码,例如 US 或 FR。对于大多数国家/地区,这些代码直接对应于 ISO-3166-2 代码。

此名称也可以添加到请求和响应标头中,并镜像 client_region 标头变量。

cmcd 客户端请求中的 CMCD 密钥,用于帮助告知客户端服务质量。媒体 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 定义的四位十六进制数字。对于未加密的客户端连接,此值为空。
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 支持设置自定义保留政策,包括针对每个接收器设置。

后续步骤