GCE网络连通性超时故障:Cloud Logging需查询哪些诊断日志?
Cloud Function经VPC连接器访问GCE VM超时的Cloud Logging排查指南
前置准备:选对日志查询范围
检索前先把日志查询的资源范围覆盖四类对象,不要只查看Cloud Function的单一日志:
- Cloud Function 实例
- Serverless VPC Access 连接器
- 目标GCE VM实例
- VPC防火墙日志流
分模块检索规则&异常判定
1. VPC Access Connector 日志
在日志筛选器输入以下查询语句,替换占位符为实际资源名:
resource.type="vpc_access_connector" resource.labels.function_name="<你的Cloud Function名称>" "timeout" OR "drop" OR "connection refused" OR "port exhaustion" OR "health check failed"
重点排查三类异常:
- 端口耗尽:稳定运行数月突发超时的最高发诱因之一,连接器连接数打满后无可用源端口转发请求,所有新连接会直接超时
- 连接器实例异常:查看底层实例是否存在崩溃、重建、IP变更记录,实例重建窗口期内的所有转发请求都会失败
- 路由丢失:查看是否存在流量丢弃记录,确认VPC路由表近期是否被修改,导致连接器到10.X.X.X网段的转发路由失效
2. VPC防火墙日志
输入以下查询语句,替换目标IP为实际VM内网地址:
logName:"logs/compute.googleapis.com%2Ffirewall" jsonPayload.connection.dest_ip="10.X.X.X" jsonPayload.disposition="DENIED"
- 如果查询返回结果,直接定位根因为防火墙拦截:重点核对近期是否修改过入方向规则,是否放通VPC连接器使用的IP网段到VM服务端口的访问权限,是否存在优先级更高的拒绝规则覆盖了原有放通策略
- 额外补充查询VM系统内的防火墙拦截记录:
排查操作系统层面的ufw、firewalld、iptables规则是否误拦截流量resource.type="gce_instance" "REJECT" OR "DROP" "<你的服务监听端口号>"
3. GCE VM实例日志
输入以下查询语句,替换占位符为实际VM信息:
resource.type="gce_instance" resource.labels.instance_id="<目标VM的实例ID>" "<服务监听端口>" OR "out of memory" OR "process exit" OR "cpu throttled" OR "conntrack"
重点排查四类异常:
- 目标服务状态:确认服务进程是否崩溃、是否停止监听对应端口,服务不可用时所有连接请求都会超时
- 资源耗尽:查看VM的CPU、内存、磁盘IO是否存在跑满记录,资源耗尽时系统无法响应新连接请求
- 连接跟踪表溢出:如果出现
conntrack table full日志,说明VM内核连接跟踪表被打满,会直接丢弃新入站连接 - 实例变更:确认VM近期是否发生重启、热迁移、内网IP变更,如果VM内网IP变动,Cloud Function访问旧地址必然超时
4. Cloud Function侧配置校验日志
输入以下查询语句:
resource.type="cloud_function" resource.labels.function_name="<你的Cloud Function名称>" "vpc connector" OR "egress setting"
重点确认:
- VPC出口配置是否被改动:如果出口设置从「私有流量路由到VPC」被改为「仅公网出口」,访问10段内网地址的流量不会走到VPC连接器,直接公网路由必然超时
- 排除Function自身异常:确认是否存在实例内存溢出、执行超时等问题,导致请求根本没有正常发出
排查优先级建议
- 优先查防火墙拒绝日志,80%的突发连通性故障都是规则误改导致
- 其次查VPC连接器的端口耗尽、健康状态日志
- 最后核对VM侧服务状态、资源占用情况
内容的提问来源于stack exchange,提问作者jamiet
相关产品推荐
相关产品推荐

