代理网络负载均衡器日志记录和监控

本页面介绍了如何为代理网络负载均衡器配置和使用 Cloud LoggingCloud Monitoring

监控资源

下表指定了负载均衡器的资源名称。

区域级外部代理网络负载均衡器

区域级内部代理网络负载均衡器

跨区域内部代理网络负载均衡器

全球外部代理网络负载均衡器

传统代理网络负载均衡器
Logging 受监控的资源类型 “代理网络负载均衡器规则”
l4_proxy_rule
“全球外部代理网络负载均衡器规则”
tcp_ssl_proxy_rule
Monitoring 受监控的资源类型 “代理网络负载均衡器规则”
l4_proxy_rule
“全球外部代理网络负载均衡器规则”
tcp_ssl_proxy_rule

用于代理网络负载均衡器的日志记录

日志提供了对负载均衡器进行问题排查和监控的有用信息。系统会汇总每个连接的日志,可让您深入了解每个连接如何路由到服务后端。

使用日志无需额外费用。但是,根据您导入日志的方式,您需要按 Cloud Logging、BigQuery 或 Pub/Sub 的标准价格付费。此外,启用日志不会影响负载均衡器的性能。

日志采样和收集

系统会对离开和进入负载均衡器后端虚拟机 (VM) 实例的连接进行采样。然后,系统会处理这些采样的连接以生成日志。您可以根据 logConfig.sampleRate 参数控制系统以日志条目形式发出的连接的比例。当 logConfig.sampleRate1.0 (100%) 时,表示系统会为所有连接生成日志并写入 Cloud Logging。

为新的后端服务启用日志记录功能

gcloud

使用 gcloud compute backend-services create 命令

对于区域级外部代理网络负载均衡器和区域级内部代理网络负载均衡器,请使用以下命令:

    gcloud compute backend-services create BACKEND_SERVICE \
        --region=REGION \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

对于全球外部代理网络负载均衡器、传统代理网络负载均衡器或跨区域内部代理网络负载均衡器:

    gcloud compute backend-services create BACKEND_SERVICE \
        --global \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

替换以下内容:

  • BACKEND_SERVICE:后端服务的名称。
  • REGION:要创建的后端服务的区域。
  • SAMPLE_RATE:只有在为此后端服务启用日志记录功能时,才能指定此字段。

    该字段的值必须介于 0.0 to 1.0 之间,其中 0.0 表示未报告任何日志,1.0 表示记录所有连接。如果启用日志记录功能,但将采样率设置为 0.0,则相当于停用日志记录功能。默认值为 1.0

API

regionBackendServices.insert 方法发出 POST 请求:

对于区域级内部代理网络负载均衡器:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

对于区域级外部代理网络负载均衡器:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

对于全球外部代理网络负载均衡器,请使用以下命令:

backendServices.insert 方法发出 POST 请求:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

对于传统代理网络负载均衡器:

backendServices.insert 方法发出 POST 请求:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

对于跨区域内部代理网络负载均衡器:

backendServices.insert 方法发出 POST 请求:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

请替换以下内容:

  • BACKEND_SERVICE:后端服务的名称。
  • SAMPLE_RATE:只有在为此后端服务启用日志记录功能时,才能指定此字段。

    该字段的值必须介于 0.0 to 1.0 之间,其中 0.0 表示未报告任何日志,1.0 表示记录所有连接。如果启用日志记录功能,但将采样率设置为 0.0,则相当于停用日志记录功能。默认值为 1.0

为现有后端服务启用日志记录功能

gcloud

使用 gcloud compute backend-services update 命令

对于区域级外部代理网络负载均衡器和区域级内部代理网络负载均衡器,请使用以下命令:

    gcloud compute backend-services update BACKEND_SERVICE \
        --region=REGION \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

对于全球外部代理网络负载均衡器、传统代理网络负载均衡器或跨区域内部代理网络负载均衡器:

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

替换以下内容:

  • BACKEND_SERVICE:后端服务的名称。
  • REGION:要创建的后端服务的区域。
  • SAMPLE_RATE:只有在为此后端服务启用日志记录功能时,才能指定此字段。

    该字段的值必须介于 0.0 to 1.0 之间,其中 0.0 表示未报告任何日志,1.0 表示记录所有连接。如果启用日志记录功能,但将采样率设置为 0.0,则相当于停用日志记录功能。默认值为 1.0

API

regionBackendServices/patch 方法发出 PATCH 请求:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
     

对于区域级内部代理网络负载均衡器:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

对于区域级外部代理网络负载均衡器:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

对于全球外部代理网络负载均衡器,请使用以下命令:

backendServices/patch 方法发出 PATCH 请求:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

对于传统代理网络负载均衡器:

backendServices/patch 方法发出 PATCH 请求:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

对于跨区域内部代理网络负载均衡器:

backendServices/patch 方法发出 PATCH 请求:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

请替换以下内容:

  • PROJECT_ID:您的项目的名称。
  • BACKEND_SERVICE:后端服务的名称。
  • SAMPLE_RATE:只有在为此后端服务启用日志记录功能时,才能指定此字段。

    该字段的值必须介于 0.0 to 1.0 之间,其中 0.0 表示未报告任何日志,1.0 表示记录所有连接。如果启用日志记录功能,但将采样率设置为 0.0,则相当于停用日志记录功能。默认值为 1.0

为现有后端服务启用日志记录功能

gcloud

使用 gcloud compute backend-services update 命令

对于区域级外部代理网络负载均衡器和区域级内部代理网络负载均衡器,请使用以下命令:

gcloud compute backend-services update BACKEND_SERVICE \
   --region=REGION \
   --no-enable-logging

对于全球外部代理网络负载均衡器、传统代理网络负载均衡器或跨区域内部代理网络负载均衡器:

gcloud compute backend-services update BACKEND_SERVICE \
   --global \
   --no-enable-logging

替换以下内容:

  • BACKEND_SERVICE:后端服务的名称。
  • REGION:后端服务的区域。

API

对于区域级外部代理网络负载均衡器和区域级内部代理网络负载均衡器,请使用以下命令:

regionBackendServices/patch 方法发出 PATCH 请求:

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
  {
  "logConfig": {
    "enable": false
   }
  }
 

对于全球外部代理网络负载均衡器、传统代理网络负载均衡器或跨区域内部代理网络负载均衡器:

backendServices/patch 方法发出 PATCH 请求:

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
  {
  "logConfig": {
    "enable": false
   }
  }
 

请替换以下内容:

  • PROJECT_ID:您的项目的名称。
  • REGION:后端服务的区域。
  • BACKEND_SERVICE:后端服务的名称。

查看日志

如果日志注入到 Cloud Logging 中,并且未通过日志路由器接收器排除,则您可以使用 Cloud Logging APIGoogle Cloud CLI 读取日志。

如需查看所有日志,请完成以下步骤。

控制台

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 选择代理网络负载均衡器规则资源类型。

  3. 选择 loadbalancing.googleapis.com/connections 日志名称。

控制台查询

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 点击显示查询切换开关。

  3. 将以下内容粘贴到查询字段中。

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    
  4. 点击运行查询

替换以下内容:

  • LOG_RESOURCE_TYPE:设置为 l4_proxy_ruletcp_ssl_proxy_rule 的日志记录受监的控资源类型。
  • PROJECT_ID:您的项目的名称。

查看特定后端服务的日志

如需查看特定后端服务的日志,请完成以下步骤。

控制台查询

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 点击显示查询切换开关。

  3. 将以下内容粘贴到查询字段中。

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    resource.labels.backend_service_name="BACKEND_SERVICE_NAME"
    
  4. 点击运行查询

替换以下内容:

  • LOG_RESOURCE_TYPE:设置为 l4_proxy_ruletcp_ssl_proxy_rule 的日志记录受监的控资源类型。
  • PROJECT_ID:您的项目的名称。
  • BACKEND_SERVICE_NAME:后端服务的名称。

查看后端实例组的日志

如需查看特定后端实例组的日志,请完成以下步骤。

控制台查询

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 点击显示查询切换开关。

  3. 将以下内容粘贴到查询字段中。

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    resource.labels.backend_group_name="BACKEND_GROUP_NAME"
    
  4. 点击运行查询

替换以下内容:

  • LOG_RESOURCE_TYPE:设置为 l4_proxy_ruletcp_ssl_proxy_rule 的日志记录受监的控资源类型。
  • PROJECT_ID:您的项目的名称。
  • BACKEND_GROUP_NAME:实例组的名称。

记录的内容

日志条目包含对监控和调试流量有用的信息。日志记录包含必填字段,这些字段是每个日志记录的默认字段。

字段 字段格式 字段类型:必填或可选 说明
severity
timestamp
receiveTimestamp
insertID
logName
LogEntry 需要 日志条目中描述的常规字段。
resource MonitoredResource 需要

MonitoredResource 是与日志条目关联的资源类型。

MonitoredResourceDescriptor 使用类型名称和一组标签来描述 MonitoredResource 对象的架构。如需了解详情,请参阅资源标签

jsonPayload object (Struct format) 需要 以 JSON 对象表示的日志条目载荷。JSON 对象包含以下字段:

日志字段

日志记录包含必填字段,这些字段是每个日志记录的默认字段。

某些日志字段在给定字段中包含多段数据,即这些日志字段采用多字段格式。例如,connection 字段采用 IpConnection 格式,它在单个字段中包含来源 IP 地址和目的地 IP 地址、端口以及协议。以下记录格式表介绍了这些采用多字段格式的日志字段。

下表列出了资源 l4_proxy_rule 的所有必填日志字段。

字段 字段格式 说明
连接 IpConnection 描述此连接的 5 元组。
startTime 字符串 负载均衡器接受来自客户端的连接时的时间戳(RFC 3339 日期字符串格式)。
endTime 字符串 客户端或后端终结连接时的时间戳(RFC 3339 日期字符串格式)。
bytesSent int64 从服务器发送到客户端的字节数。
bytesReceived int64 服务器从客户端接收的字节数。

IpConnection 字段格式

字段 类型 说明
clientIp 字符串 客户端 IP 地址
clientPort int32 客户端端口。仅针对 TCP 和 UDP 连接设置。
serverIp 字符串 服务器 IP 地址(转发规则 IP 地址)
serverPort int32 服务器端口。仅针对 TCP 和 UDP 连接设置。
protocol int32 IANA 协议编号

资源标签

下表列出了资源类型 l4_proxy_rule 的资源标签。

字段 类型 说明
network_name 字符串 负载均衡器的 VPC 网络名称。
project_id 字符串 与相应资源关联的 Google Cloud 项目的标识符。
区域 字符串 在其中定义了负载均衡器的区域。
target_proxy_name 字符串 转发规则引用的目标代理对象的名称。
forwarding_rule_name 字符串 转发规则对象的名称。
loadbalancing_scheme_name 字符串 负载均衡器的转发规则和后端服务的一个属性,指示负载均衡器是可用于内部流量还是外部流量。
backend_target_name 字符串 为处理请求而选择的后端的名称。
backend_target_type 字符串 后端目标的类型 (BACKEND_SERVICE / UNKNOWN)
backend_name 字符串 后端实例组或网络端点组 (NEG) 的名称。
backend_type 字符串

后端类型,可以是实例组或 NEG,或者未知。

当 backend_type 为 UNKNOWN 时,即使停用了日志记录功能,Cloud Logging 也会记录请求。例如,如果客户端在负载均衡器可以选择后端之前关闭与负载均衡器的连接,则系统会将 backend_type 设置为 UNKNOWN 并记录请求。这些日志提供了有关由于负载均衡器无法选择后端而关闭的客户端请求的有用调试信息。

backend_scope 字符串 后端的范围,可以是可用区名称或区域名称。如果 backend_name 未知,该字段可能为 UNKNOWN
backend_scope_type 字符串 后端的范围 (REGION/ZONE)。如果 backend_name 未知,该字段可能为 UNKNOWN

监控

代理网络负载均衡器会将监控数据导出到 Cloud Monitoring

监控指标可用于执行以下操作:

  • 评估负载均衡器的配置、使用情况和性能。
  • 排查问题。
  • 提高资源利用率并改善用户体验。

除了 Monitoring 中的预定义信息中心以外,您还可以使用 Cloud Monitoring API 创建自定义信息中心、设置提醒和查询指标。

查看 Monitoring 信息中心

  1. 在 Google Cloud 控制台中,前往 Monitoring 页面。

    进入 Monitoring

  2. 如果导航窗格中出现资源,请选择资源,然后选择 Google Cloud 负载均衡器。否则,选择信息中心,然后选择名为 Google Cloud 负载均衡器的信息中心。

  3. 点击您的负载均衡器的名称。

在左侧窗格中,您可以看到此负载均衡器的各种详细信息。 在右侧窗格中,您可以看到时间序列图表。如需查看具体的细分信息,请点击细分信息

指标报告频率和保留

每隔 1 分钟,系统就会将负载均衡器的指标批量导出到 Monitoring 中。监控数据会保留六 (6) 周。 指标基于采样的流量(采样率是动态的,且无法调整)。

默认情况下,信息中心可按 1H(1 小时)、6H(6 小时)、1D(1 天)、1W(1 周)和 6W(6 周)时间间隔提供数据分析。您可以在 6 周到 1 分钟的时间间隔内手动请求执行分析。

传统代理网络负载均衡器的指标

传统代理网络负载均衡器的以下指标会报告给 Monitoring。

指标 名称 说明
入站流量 tcp_ssl_proxy/ingress_bytes_count 通过 Google Front End (GFE) 从外部端点发送到已配置的后端的字节数(以每秒字节数为单位)。
出站流量 tcp_ssl_proxy/egress_bytes_count 通过 GFE 从已配置的后端发送到外部端点的字节数(以每秒字节数为单位)。
打开的连接数 tcp_ssl_proxy/open_connections 在给定的采样时间点打开的连接数。采样间隔时间为一分钟。
每秒新的连接数 tcp_ssl_proxy/new_connections 创建的连接数(客户端成功连接到后端)。计算粒度是每分钟,但是图表会调整为显示每秒的值。如需了解详情,请参阅 Monitoring 文档
每秒关闭的连接数 tcp_ssl_proxy/closed_connections 已关闭的连接数。计算粒度是每分钟,但是图表会调整为显示每秒的值。如需了解详情,请参阅 Monitoring 文档
前端 RTT tcp_ssl_proxy/frontend_tcp_rtt 为客户端和 GFE 之间的每个连接测量得到的平滑往返时间 (RTT) 分布(通过 GFE 的 TCP 栈测量,每次应用层字节从 GFE 传递到客户端时)。 平滑 RTT 是一种算法,用于处理 RTT 测量中可能发生的变体和异常。

其他负载均衡器的指标

区域级内部代理网络负载均衡器、区域级外部代理网络负载均衡器、跨区域内部代理网络负载均衡器和全球外部代理网络负载均衡器的以下指标会报告给 Monitoring。

指标 名称 说明
入站流量 l4_proxy/ingress_bytes_count 使用代理从客户端发送到后端虚拟机的字节数。每 60 秒采样一次。采样后,数据在最长 210 秒的时间内不会显示。
出站流量 l4_proxy/egress_bytes_count 使用代理从后端虚拟机发送到客户端的字节数。每 60 秒采样一次。采样后,数据在最长 210 秒的时间内不会显示。
每秒关闭的连接数 l4_proxy/tcp/closed_connections_count 使用 TCP RST 或 TCP FIN 消息终结的连接数。每 60 秒采样一次。采样后,数据在最长 210 秒的时间内不会显示。

过滤指标的维度

系统会为每个负载均衡器汇总指标。指标可以进一步细分为以下几个维度。

属性 说明
后端范围 发起连接的实例组的范围(区域或地区)。
后端区域 如果实例组为可用区级实例组,则指为连接提供服务的实例组所在的可用区。
后端地区 如果实例组为区域级实例组,则指为连接提供服务的实例组所在的区域。
代理所在的洲 终结了用户 TCP/SSL 连接的 GFE 所在的大洲,例如 AmericaEuropeAsia
实例组 接收用户连接的实例组的名称。
转发规则 用于连接到 GFE 的转发规则的名称。
客户所在的国家/地区 用户所在国家/地区的名称。

后续步骤