日志记录
您可以为外部应用负载均衡器后端服务启用和停用日志记录功能,还可以查看其日志。
您可以为每个后端服务启用或停用日志记录功能。您可以配置是记录所有请求还是记录随机采样的一小部分请求。
您必须确保没有适用于外部应用负载均衡器的日志排除项。如需了解如何验证是否允许 Cloud HTTP Load
Balancer
日志,请参阅查看资源类型排除项。
可选字段
日志记录包含必填字段和可选字段。记录的内容部分列出了哪些字段是可选字段,以及哪些是必填字段。所有必填字段始终包含在内。您可以自定义要保留哪些可选字段。
如果您选择包括所有可选字段,则日志记录格式中的所有可选字段都将包含在日志中。向记录格式添加新的可选字段后,日志会自动包含新字段。
如果您选择排除所有可选字段,则所有可选字段都将被省略。
如果您选择自定义,则可以指定要包含的可选字段,例如
tls.protocol,tls.cipher
。
如需了解如何自定义可选字段,请参阅在新的后端服务上启用日志记录。
针对新的后端服务启用日志记录功能
控制台
在 Google Cloud 控制台中,转到负载均衡页面。
点击您的负载均衡器的名称。
点击
修改。点击后端配置。
选择创建后端服务。
填写必填的后端服务字段。
在日志记录部分,选中启用日志记录复选框。
在采样率字段中,设置采样概率。您可以设置
0.0
到1.0
的数字,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。默认值为1.0
。可选:如需在日志中包含所有可选字段,请在可选字段部分中,点击包括所有可选字段。
如需完成后端服务的修改,请点击更新。
如需完成负载均衡器修改,请点击更新。
gcloud:区域模式
使用 gcloud compute backend-services create
命令创建后端服务并启用日志记录功能。
gcloud compute backend-services create BACKEND_SERVICE \ --region=REGION \ --enable-logging \ --logging-sample-rate=VALUE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
其中
--region
表示后端服务是区域性的。此字段用于与区域外部应用负载均衡器一起使用的后端服务。--enable-logging
表示对该后端服务启用日志记录功能。--logging-sample-rate
接受从0.0
到1.0
值,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。只有搭配使用--enable-logging
参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为0.0
,那么效果将相当于停用日志记录功能。默认值为1.0
。--logging-optional
允许您指定要包括在日志中的可选字段:INCLUDE_ALL_OPTIONAL
:包括所有可选字段。EXCLUDE_ALL_OPTIONAL
(默认值):排除所有可选字段。CUSTOM
:包括您在OPTIONAL_FIELDS
中指定的可选字段的自定义列表。
--logging-optional-fields
允许您以逗号分隔列表的形式指定要包括在日志中的可选字段。例如,仅当
LOGGING_OPTIONAL_MODE
设置为CUSTOM
时才能设置tls.protocol,tls.cipher
。
针对现有后端服务启用日志记录功能
控制台
在 Google Cloud 控制台中,转到负载均衡页面。
点击您的负载均衡器的名称。
点击
修改。点击后端配置。
点击后端服务旁边的
修改。在日志记录部分,选中启用日志记录复选框。
在采样率字段中,设置采样概率。您可以设置
0.0
到1.0
的数字,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。默认值为1.0
。可选:如需在日志中包含所有可选字段,请在可选字段部分中,点击包括所有可选字段。
如需完成后端服务的修改,请点击更新。
如需完成负载均衡器修改,请点击更新。
gcloud:区域模式
使用 gcloud compute backend-services update
命令在现有后端服务上启用日志记录。
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --enable-logging \ --logging-sample-rate=VALUE \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
其中
--region
表示后端服务是区域性的。此字段用于与区域外部应用负载均衡器一起使用的后端服务。--enable-logging
表示对该后端服务启用日志记录功能。--logging-sample-rate
接受从0.0
到1.0
值,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。只有搭配使用--enable-logging
参数时才有意义。启用日志记录功能的情况下,如果将采样率设置为0.0
,那么效果将相当于停用日志记录功能。默认值为1.0
。--logging-optional
允许您指定要包括在日志中的可选字段。INCLUDE_ALL_OPTIONAL
:包括所有可选字段。EXCLUDE_ALL_OPTIONAL
(默认值):排除所有可选字段。CUSTOM
:包括您在OPTIONAL_FIELDS
中指定的可选字段的自定义列表。
--logging-optional-fields
允许您以逗号分隔列表的形式指定要包括在日志中的可选字段。例如
tls.protocol,tls.cipher
。只有当LOGGING_OPTIONAL_MODE
设置为CUSTOM
时才能设置此项。
针对现有后端服务停用或修改日志记录功能
控制台
在 Google Cloud 控制台中,转到负载均衡页面。
点击您的负载均衡器的名称。
点击
修改。点击后端配置。
点击后端服务旁边的
修改。如需完全停用日志记录功能,请在日志记录部分中清除启用日志记录复选框。
如果要保持启用日志记录功能,可以在采样率字段中设置不同的采样概率。您可以设置
0.0
到1.0
的数字,其中0.0
表示不在日志中记录任何请求,1.0
表示在日志中记录所有请求。默认值为1.0
。 例如,要将日志存储量减到 20%,请将采样率设置为0.2
。如需完成后端服务的修改,请点击更新。
如需完成负载均衡器修改,请点击更新。
gcloud:区域模式
使用 gcloud compute backend-services update
命令停用后端服务的日志记录功能。
完全停用日志记录功能
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --no-enable-logging
其中
--region
表示后端服务是区域性的。此字段用于与区域外部应用负载均衡器一起使用的后端服务。--no-enable-logging
表示对该后端服务停用日志记录功能。
修改日志采样率
gcloud compute backend-services update BACKEND_SERVICE \ --global | --region=REGION \ --logging-sample-rate=VALUE
查看日志
如需查看日志,请进入 Logs Explorer 页面:
如需查看所有日志,请在资源过滤条件菜单中选择 Cloud HTTP 负载均衡器 > 所有转发规则。
如需查看一条转发规则的日志,请选择一个转发规则名称。
如需查看一个网址映射的日志,请选择一条转发规则,然后选择一个网址映射。
布尔值类型的日志字段通常仅在其值为 true
时才会显示。如果某个布尔值字段的值为 false
,则日志中将不会出现该字段。
系统为日志字段强制执行 UTF-8 编码。非 UTF-8 字符将被替换为问号。
对于区域级外部应用负载均衡器,您可以使用资源日志 (resource.type="http_external_regional_lb_rule"
) 导出基于日志的指标。
记录的内容
外部应用负载均衡器日志条目包含对监控和调试 HTTP(S) 流量有用的信息。日志记录包含必填字段,这些字段是每个日志记录的默认字段。日志记录包含可选字段,用于添加有关 HTTP(S) 流量的其他信息。可以省略可选字段,以节省存储费用。
某些日志字段采用多字段格式,在给定字段中包含多段数据。例如,tls
字段采用 TlsDetails
格式,它在单个字段中包含 TLS 协议和 TLS 加密。以下记录格式表介绍了这些采用多字段格式的字段。
字段 | 字段格式 | 字段类型:必填或可选 | 说明 |
---|---|---|---|
severity insertID timestamp logName |
LogEntry | 需要 | 日志条目中描述的常规字段。 |
httpRequest | HttpRequest | 需要 | 用于记录 HTTP 请求的通用协议。 |
resource | MonitoredResource | 需要 | MonitoredResource 是与日志条目关联的资源类型。 MonitoredResourceDescriptor 使用类型名称和一组标签来描述 |
jsonPayload | object (Struct format) | 需要 | 以 JSON 对象表示的日志条目载荷。JSON 对象包含以下字段:
|
字符串 | 需要 |
可能的值包括 |
|
TlsDetails | 可选 | tls 字段包含 TlsDetails,用于指定客户端与区域级外部应用负载均衡器之间的连接的 TLS 元数据。仅当客户端使用 TLS/SSL 加密时,此字段才可用。 |
|
MtlsDetails | 可选 | mtls 字段包含 MtlsDetails 值,用于指定客户端与区域级外部应用负载均衡器之间的连接的 mTLS 元数据。
仅当负载均衡器使用前端双向 TLS (mTLS) 时,此字段才可用。
|
TlsDetails 字段格式
字段 | 字段格式 | 字段类型:必填或可选 | 说明 |
---|---|---|---|
protocol | 字符串 | 可选 | 客户端用于与负载均衡器建立连接的 TLS 协议。可能的值包括 TLS 1.0, 1.1, 1.2,
1.3 或 QUIC 。如果客户端未使用 TLS/SSL 加密,则此值设置为 NULL 。 |
加密方式 | 字符串 | 可选 | 客户端用于与负载均衡器建立连接的 TLS 加密。如果客户端未使用 HTTP(S) 或客户端未使用 TLS/SSL 加密,则此值设置为 NULL 。 |
MtlsDetails 字段格式
字段 | 字段格式 | 字段类型:必填或可选 | 说明 |
---|---|---|---|
clientCertPresent | 布尔值 | 可选 | 如果客户端在 TLS 握手期间提供了证书,则为 |
clientCertChainVerified | 布尔值 | 可选 | 如果根据配置的 |
clientCertError | 字符串 | 可选 | 代表错误情况的预定义字符串。如需详细了解错误字符串,请参阅 mTLS 客户端验证模式。 |
clientCertSha256Fingerprint | 字符串 | 可选 | 客户端证书的 Base64 编码 SHA-256 指纹。 |
clientCertSerialNumber | 字符串 | 可选 | 客户端证书的序列号。如果序列号长度超过 50 字节,则将字符串 |
clientCertValidStartTime | 字符串 | 可选 | 在此时间戳(RFC 3339 日期字符串格式)之前,客户端证书无效。
例如 |
clientCertValidEndTime | 字符串 | 可选 | 在此时间戳(RFC 3339 日期字符串格式)之后,客户端证书无效。
例如 |
clientCertSpiffeId | 字符串 | 可选 | 主题备用名称 (SAN) 字段中的 SPIFFE ID。如果值无效或超过 2048 字节,则 SPIFFE ID 设置为空字符串。 如果 SPIFFE ID 长度超过 2048 字节,则将字符串 |
clientCertUriSans | 字符串 | 可选 | URI 类型的 SAN 扩展的 Base64 编码列表(以英文逗号分隔)。SAN 扩展从客户端证书中提取。
如果 |
clientCertDnsnameSans | 字符串 | 可选 | DNSName 类型的 SAN 扩展的 Base64 编码列表(以英文逗号分隔)。SAN 扩展从客户端证书中提取。 如果 |
clientCertIssuerDn | 字符串 | 可选 | 证书中采用 Base64 编码的完整“颁发者”字段。 如果 |
clientCertSubjectDn | 字符串 | 可选 | 证书中采用 Base64 编码的完整“主题”字段。 如果 |
clientCertLeaf | 字符串 | 可选 | 已建立的 mTLS 连接(证书在其中通过了验证)的客户端叶证书。证书编码符合 RFC 9440 标准:二进制 DER 证书使用 Base64 编码(不含换行符、空格或 Base64 字母表之外的其他字符),两侧都用英文冒号分隔。 如果 |
clientCertChain | 字符串 | 可选 | 已建立的 mTLS 连接(客户端证书在其中通过了验证)的客户端证书链的英文逗号分隔证书列表(按标准 TLS 顺序排列),不包括叶证书。证书编码符合 RFC 9440 标准。 如果 |
资源标签
下表列出了 resource.type="http_external_regional_lb_rule"
的资源标签。
字段 | 类型 | 说明 |
---|---|---|
backend_name |
字符串 | 后端实例组或网络端点组 (NEG) 的名称。 |
backend_scope |
字符串 |
后端的范围(可以是可用区名称或区域名称)。如果 backend_name 未知,该字段可能为 UNKNOWN 。 |
backend_scope_type |
字符串 | 后端的范围 (REGION /ZONE )。如果 backend_name 未知,该字段可能为 UNKNOWN 。 |
backend_target_name |
字符串 | 根据与请求匹配的网址映射路径规则或路由规则,为处理请求而选择的后端的名称。 |
backend_target_type |
字符串 |
后端目标的类型。可以是 BACKEND_SERVICE 或 UNKNOWN (如果未分配后端)。 |
backend_type |
字符串 |
后端组的类型。可以是 INSTANCE_GROUP 、NETWORK_ENDPOINT_GROUP 或 UNKNOWN (如果未分配后端)。 |
forwarding_rule_name |
字符串 | 转发规则对象的名称。 |
matched_url_path_rule |
字符串 |
作为网址映射键的一部分配置的网址映射路径规则或路由规则。可以是 UNMATCHED 或 UNKNOWN (用作回退)。
|
network_name |
字符串 | 负载均衡器的 VPC 网络名称。 |
project_id |
字符串 | 与相应资源关联的 Google Cloud 项目的标识符。 |
region |
字符串 | 在其中定义负载均衡器的区域。 |
target_proxy_name |
字符串 | 转发规则引用的目标代理对象的名称。 |
url_map_name |
字符串 | 配置为选择一项后端服务的网址映射对象的名称。 |
proxyStatus 消息
proxyStatus | 含义 | 通用的附带响应代码 |
---|---|---|
destination_unavailable
|
负载均衡器认为后端不可用。例如,最近尝试与后端通信失败,或者健康检查可能表示失败。 | 500、503 |
connection_timeout
|
负载均衡器尝试打开与后端的连接时超时。 | 504 |
connection_terminated
|
在收到完整响应之前,负载均衡器与后端的连接已关闭。 | 502、503 |
connection_refused
|
负载均衡器与后端的连接被拒绝。 | 502、503 |
connection_limit_reached
|
负载均衡器配置为限制其与后端的连接数,并且已超出该限制。 | 502、503 |
destination_not_found
|
负载均衡器无法确定要用于此请求的适当后端,例如可能没有配置后端。 | 500、404 |
dns_error
|
负载均衡器在尝试查找后端主机名的 IP 地址时遇到 DNS 错误。 | 502、503 |
http_response_timeout
|
负载均衡器已达到配置的时间限制,正在等待后端的完整响应。 | 504、408 |
http_request_error
|
负载均衡器将代表客户端生成客户端 (4xx) 响应。 | 400、403、405、406、408、411、413、414、415、416、417 或 429 |
proxy_configuration_error
|
负载均衡器存在与其配置相关的错误。 | 500 |
http_protocol_error
|
负载均衡器在与后端通信时遇到 HTTP 协议错误。 | 502 |
proxy_internal_error
|
负载均衡器遇到内部错误。 | 500、502 |
proxy_internal_response
|
负载均衡器在未尝试连接到后端的情况下生成响应。 | 根据问题类型,您可能会看到任何 HTTP 状态代码。例如,HTTP“410”状态代码表示后端因付款欠款而不可用。 |
与日志交互
您可以使用 Cloud Logging API 与外部应用负载均衡器日志进行交互。Logging API 提供了多种方法来以交互方式过滤包含特定字段集的日志。它会将匹配的日志导出到 Cloud Logging、Cloud Storage、BigQuery 或 Pub/Sub。如需详细了解 Logging API,请参阅 Cloud Logging API 概览。
监控
负载均衡器会将监控数据导出到 Cloud Monitoring。
您可以使用监控指标执行以下操作:
- 评估负载均衡器的配置、使用情况和性能
- 排查问题
- 提高资源利用率和改善用户体验
除了 Cloud Monitoring 中的预定义信息中心以外,您还可以通过 Cloud Monitoring API 创建自定义信息中心、设置提醒和查询指标。
定义提醒政策
您可以创建提醒政策来监控指标的值,当这些指标违反条件时便会通知您。
-
在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择 notifications 提醒:
- 如果您尚未创建通知渠道并希望收到通知,请点击修改通知渠道并添加通知渠道。添加渠道后,返回到提醒页面。
- 在提醒页面中,点击创建政策。
- 如需选择指标,请展开选择指标菜单,然后执行以下操作:
- 如需将菜单限制为相关条目,请在过滤栏中输入
Regional External Application Load Balancer Rule
。如果过滤菜单后没有显示任何结果,请停用仅显示活跃的资源和指标切换开关。 - 对于资源类型,请选择区域级外部应用负载均衡器规则。
- 选择指标类别和指标,然后选择应用。
- 如需将菜单限制为相关条目,请在过滤栏中输入
- 点击下一步。
- 配置提醒触发器页面中的设置决定了何时触发提醒。 选择条件类型,并在必要时指定阈值。如需了解详情,请参阅创建指标阈值提醒政策。
- 点击下一步。
- 可选:如需将通知添加到您的提醒政策中,请点击通知渠道。在对话框中,从菜单中选择一个或多个通知渠道,然后点击确定。
- 可选:更新突发事件自动关闭持续时间。此字段用于确定在缺少指标数据的情况下 Monitoring 何时关闭突发事件。
- 可选:点击文档,然后添加您希望包含在通知消息中的任何信息。
- 点击提醒名称,然后输入提醒政策的名称。
- 点击创建政策。
定义 Cloud Monitoring 自定义信息中心
您可以为负载均衡器的指标创建自定义 Cloud Monitoring 信息中心:
在 Google Cloud 控制台中,前往 Monitoring 页面。
选择信息中心 > 创建信息中心。
点击添加图表,然后为图表输入一个标题。
如需确定要显示的时序,请选择资源类型和指标类型:
- 在资源和指标部分,点击图表,然后在选择指标部分,从可用选项中进行选择:
- 对于区域级外部应用负载均衡器,请选择资源类型区域级外部应用负载均衡器规则。
- 点击应用。
如需指定监控过滤条件,请依次点击过滤条件 > 添加过滤条件。
点击保存。
指标报告频率和保留
系统会每隔 1 分钟将外部应用负载均衡器的指标批量导出到 Cloud Monitoring 中。监控数据会保留六 (6) 周。 指标基于抽样流量(采样率是动态的,且无法调整)。默认情况下,信息中心可按 1H(1 小时)、6H(6 小时)、1D(1 天)、1W(1 周)和 6W(6 周)时间间隔提供数据分析。您可以在 1 分钟到 6 周的范围内手动指定分析时间间隔。
监控指标
您可以监控外部应用负载均衡器的以下指标。
区域级外部应用负载均衡器的以下指标会报告给 Cloud Monitoring。这些指标以 loadbalancing.googleapis.com/
开头。
指标 | 名称 | 说明 |
---|---|---|
请求数 | https/external/regional/request_count |
区域级外部应用负载均衡器处理的请求数 |
请求字节数 | https/external/regional/request_bytes |
以请求形式从客户端发送到区域级外部应用负载均衡器的字节数。 |
响应字节数 | https/external/regional/response_bytes |
以响应形式从区域级外部应用负载均衡器发送到客户端的字节数。 |
总延迟时间 | https/external/regional/total_latencies |
延迟时间的分布(以毫秒为单位)。延迟时间从代理收到请求的第一个字节开始计算,直到代理发送响应的最后一个字节为止。 |
后端延迟时间 | https/external/regional/backend_latencies |
延迟时间的分布(以毫秒为单位)。延迟时间从代理向后端发送请求的第一个字节开始计算,直到代理收到来自后端的响应的最后一个字节为止。 |
过滤指标的维度
您可以为外部应用负载均衡器的指标应用过滤条件。
系统会为每个区域级外部应用负载均衡器汇总指标。您可以使用以下维度对 resource.type="http_external_regional_lb_rule"
过滤汇总的指标。
属性 | 说明 |
---|---|
backend_name |
后端实例组或网络端点组 (NEG) 的名称。 |
backend_scope |
后端的范围(可以是可用区名称或区域名称)。如果 backend_name 未知,该字段可能为 UNKNOWN 。 |
backend_scope_type |
后端的范围 (REGION /ZONE )。如果 backend_name 未知,该字段可能为 UNKNOWN 。
|
backend_target_name |
根据与请求匹配的网址映射路径规则或路由规则,为处理请求而选择的后端的名称。 |
backend_target_type |
后端目标的类型。可以是 BACKEND_SERVICE 或 UNKNOWN (如果未分配后端)。 |
backend_type |
后端组的类型。可以是 INSTANCE_GROUP 、NETWORK_ENDPOINT_GROUP 或 UNKNOWN (如果未分配后端)。 |
forwarding_rule_name |
转发规则对象的名称。 |
matched_url_path_rule |
作为网址映射键的一部分配置的网址映射路径规则或路由规则。可以是 UNMATCHED 或 UNKNOWN (用作回退)。
|
network_name |
负载均衡器的 VPC 网络名称。 |
project_id |
与相应资源关联的 Google Cloud 项目的标识符。 |
region |
在其中定义负载均衡器的区域。 |
target_proxy_name |
转发规则引用的目标代理对象的名称。 |
url_map_name |
配置为选择一项后端服务的网址映射对象的名称。 |