如何在GCP中实时监控VPC到SQL实例的连通性并配置告警?
实时监控VPC到SQL实例连通性的可行方案
针对你遇到的Connectivity tests只能单次执行的问题,下面几个方案可以实现持续监控+告警:
方案1:自定义监控指标+定时脚本
- 写个简单的连通性测试脚本,用
nc或者telnet检测SQL实例的私有IP和对应端口(比如MySQL用3306,PostgreSQL用5432),也可以直接用SQL客户端尝试建立短连接 - 把脚本部署在VPC内的虚拟机、Cloud Run(需配置VPC访问)或者GKE Pod里,用Cloud Scheduler每分钟触发一次
- 脚本执行后,把连通状态(成功=1,失败=0)写入Cloud Monitoring的自定义指标,比如
custom.googleapis.com/vpc_sql_connectivity - 示例bash脚本:
#!/bin/bash SQL_IP="your-sql-private-ip" SQL_PORT="3306" if nc -z -w 5 $SQL_IP $SQL_PORT; then gcloud monitoring write custom.googleapis.com/vpc_sql_connectivity --value=1 --labels=sql_instance=$SQL_IP else gcloud monitoring write custom.googleapis.com/vpc_sql_connectivity --value=0 --labels=sql_instance=$SQL_IP fi
- 给执行脚本的服务账号加上
monitoring.metricWriter权限,确保能正常写入指标 - 最后在Cloud Monitoring里建告警策略:当这个自定义指标连续3次(可调整)为0时,触发邮件、Slack或者PagerDuty告警
方案2:Cloud SQL内置指标+VPC流量指标联动
- Cloud SQL自带
cloudsql.googleapis.com/database/connections指标,能统计实例的活跃连接数 - 结合VPC的
vpc.googleapis.com/network/flow_dropped_bytes指标,筛选目标IP为SQL实例私有IP的流量丢弃数据 - 配置告警规则:当连接数骤降到阈值以下,同时存在针对该SQL实例的流量丢弃时触发告警
- 这个方案不用写额外脚本,但更偏向监控整体连通性,没法精准定位VPC内某个节点到实例的问题
方案3:VPC Reachability Monitor(托管式监控)
- 部分GCP区域支持VPC Reachability Monitor,它能持续监控VPC内资源到目标的连通性路径
- 在VPC控制台配置监控任务,指定源(比如VPC内的子网、VM)和目标(SQL实例私有IP+端口)
- 直接配置告警:当监控状态变为
UNREACHABLE时发送通知 - 优势是完全托管,不用自己维护脚本,适合监控端到端的路径连通性
内容的提问来源于stack exchange,提问作者DISCO
相关产品推荐
相关产品推荐

