请求日志记录概览

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

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

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

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

缓存专用字段

Media CDN 日志的 jsonPayload 对象包含与 Media 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

用户和源屏蔽层之间的每个缓存节点的缓存状态,其中最右侧的值表示距离用户最近的缓存。如需详细了解如何解读此字段,请参阅缓存状态值
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 的 009C。对于未加密的客户端连接,此值为空。
tlsSniHostname 由客户端在传输层安全协议 (TLS) 期间提供的服务器名称指示(如 RFC 6066 中所定义) 或 QUIC 握手。系统会将主机名转换为小写字母并移除结尾的所有英文句点。
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 支持设置自定义保留 政策,包括针对每个接收器。

后续步骤