媒体 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 开始从源接收响应字节的时间结束。 此字段仅出现在从 |
backendLatency | 0.126666342s | 后端完全响应请求所需的时长。从 CDN 完成将请求代理到源站开始,直到 CDN 从后端收到完整响应为止。 此字段仅出现在从 |
cacheId | maa-123456 |
距离缓存最近的城市的 IATA(机场)代码以及缓存实例的不透明标识符。如果由于缓存完全或部分未命中而需要多个缓存层级来处理请求,则会提供缓存位置链,例如 del-234567, bom-345678, sin-456789 ,其中最右侧的缓存离用户最近。 |
cacheKeyFingerprint | f63925711b0dd8a9ff861cd303774e6e | 缓存键的不透明指纹。映射到同一缓存键的请求(例如,不包含查询参数或不包含主机的请求)应具有相同的指纹。 如果您的请求总数与唯一指纹总数相近,则可能表明您的缓存键过于具体。 |
cacheMode | USE_ORIGIN_HEADERS | 与相应请求匹配的路由上配置的 cdnPolicy.cacheMode 。
|
cacheStatus | Cache hit: Full cache miss: |
用户与源 Shield 之间的每个缓存节点的缓存状态,其中最右侧的值表示最靠近用户的缓存。如需详细了解如何解读此字段,请参阅缓存状态值。 |
clientAsn | 基于连接客户端 IP 地址的 ASN(自治系统编号)。 | |
clientCity | Mountain View | 发起请求的城市名称,例如加利福尼亚州山景城。 此变量还可以添加到请求标头和响应标头中,并且与 |
clientRegionCode | US | 与客户端 IP 地址相关联的国家/地区(或区域)。 这是 Unicode CLDR 区域代码,例如“US”或“FR”。对于大多数国家/地区,这些代码直接对应于 ISO-3166-2 代码。 此变量还可以添加到请求标头和响应标头中,并且与 |
cmcd | 客户端请求中的 CMCD 键,有助于提供客户端服务质量信息。Media CDN 支持通过 HTTP 请求标头或查询参数传输的数据,但不会记录以下键的值:dl (截止时间)、nor (下一个对象请求)、nrr (下一个范围请求)、ot (对象类型)、rtp (请求的最大吞吐量)、sf (流式传输格式)、su (启动)、tb (最高比特率)或 v (CMCD 版本)。
|
|
compressionAlgorithmApplied | br | 用于压缩相应日志条目中提及的响应的算法。可能的值包括 br 和 gzip 。
|
enforcedSecurityPolicy | 适用于客户端请求的 Google Cloud Armor 边缘安全政策。这包括有关政策名称、优先级和所采取行动的其他信息。还包括有关 Google Threat Intelligence 评估的信息(如适用)。 | |
flexShieldingRegion | US_EAST4 | 用于灵活防护的区域(如果有)。
此字段仅出现在从 |
flexShieldingStatus | SHIELDED | 缓存填充请求的灵活屏蔽状态。值可以是以下值之一:
此字段仅出现在从 |
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 支持设置自定义保留政策,包括按接收器设置。
后续步骤
- 如需详细了解如何设置基于日志的指标,以便根据已记录的请求定义自己的指标值,请参阅基于日志的指标概览。
- 如需详细了解 Logging 的价格,请参阅 Google Cloud Observability 价格。
- 如需了解审核日志记录的工作方式以及如何为管理活动启用和配置审核日志,请参阅 Cloud Audit Logs 文档。