ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Google Cloud Networking Observability 之 VPC Flow Logs 流量分析实战指南

Google Cloud Networking Observability 之 VPC Flow Logs 流量分析实战指南 Google Cloud Networking Observability 之 VPC Flow Logs 流量分析实战指南【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills导读本文面向需要在 Google CloudGCP中基于VPC Flow LogsVPC 流日志分析流量模式、流量规模与延迟RTT的开发者、SRE 与 AI Agent。文章以skills/cloud/google-cloud-networking-observability技能仓库中的 VPC Flow Analysis 参考文档 为主体系统讲解从单条日志的探索式排查到大数据量趋势聚合的完整方法通过 Cloud Logging MCP 查看日志、通过 BigQuery MCP 做高吞吐量聚合、以gcloud/bqCLI 作为兜底方案并给出 RTT 延迟分析的字段选型与 Flow Analyzer 可视化手段。读完本文你将掌握一套可直接复制运行的日志过滤器、SQL 模板与字段速查表并能基于仓库源码理解这套分析流程在 Agent 工作流中的定位与边界。1. VPC Flow Logs 是什么何时选择它VPC Flow Logs 捕获进出网络接口的 IP 流量采样。在google-cloud-networking-observability技能的整体日志与遥测全景中见 SKILL.md它与以下几类数据源分工明确数据源用途定位VPC Flow Logs流量分析、流量规模趋势、Top Talkers流量大户Firewall Logscompute.googleapis.com/firewall校验规则是 ALLOW 还是 DENYCloud NAT Logscompute.googleapis.com/nat_flows审计 NAT 网关出口流量、排查端口耗尽Threat Logs基于深度包检测识别恶意流量模式Networking Metrics吞吐、RTT、丢包的历史趋势与性能监控Connectivity Tests端到端路径的静态诊断因此当问题属于谁在跟谁通信、流量有多大、延迟多高时首选 VPC Flow Logs而某条防火墙规则是否放行/拦截了连接则应交给防火墙日志分析firewall-analysis.mdNAT 端口是否耗尽则应交给 Cloud NAT 分析cloud-nat-analysis.md。值得注意的是该技能仓库还提供了配套的 VPC Flow Logs 成本估算参考二者是互补关系前者回答流量如何、后者回答要花多少钱。SKILL.md 中明确要求成本估算任务必须使用独立的成本估算文档不可与本文混用。2. 两种分析模式Exploratory Analysis 与 High-Volume Trends在对 VPC Flow Logs 动手之前先明确分析意图这决定了选择哪条查询路径探索式分析Exploratory Analysis查看单条或少量日志条目用于理解特定事件、调试问题或调查异常。这种场景通常需要过滤并查看日志记录完整细节适合用 Cloud Logging 的list_log_entries。高吞吐量趋势分析High-Volume Trends对海量日志按时间聚合识别模式、度量流量规模、分析延迟分布或找出 Top Talkers。这类分析通常用 SQL 汇总数据而不是逐条翻日志适合用 BigQuery 对_AllLogs数据集执行聚合查询。仓库的 MCP 使用文档mcp-usage.md给出了对应工具链Cloud Logging MCP提供list_log_entries高级过滤器检索日志条目与list_log_names发现项目中可用的日志BigQuery MCP提供list_dataset_ids、list_table_ids、get_table_info以及只读执行 SQL 的首选工具execute_sql_readonly注本文原文档中该工具写作execute_sql实际以 MCP 服务器暴露的工具名为准SKILL.md 中的用法模式为execute_sql_readonly用于SELECT类日志分析。3. 查看日志Cloud Logging MCP 过滤器必查两个来源使用list_log_entries时务必同时检索两个 VPC Flow Logs 来源缺一不可compute.googleapis.com/vpc_flows来自 Compute Engine 子网的 VPC 流日志networkmanagement.googleapis.com/vpc_flows来自 Network Management网络智能中心的流日志数据。完整过滤器模板(logName:projects/{project_id}/logs/compute.googleapis.com%2Fvpc_flows OR logName:projects/{project_id}/logs/networkmanagement.googleapis.com%2Fvpc_flows) resource.typegce_subnetwork要点说明{project_id}需替换为实际项目 ID注意日志名中的%2F是对/的 URL 编码即vpc_flows对应compute.googleapis.com/vpc_flows不要手写为未编码的斜杠两个来源用OR组合外层再用括号包裹整个logName条件避免与resource.type的AND优先级混淆resource.typegce_subnetwork将结果收敛到子网维度。此过滤器也适用于仓库中同目录其他参考文档的查询模式如防火墙日志compute.googleapis.com/firewall、NAT 日志compute.googleapis.com/nat_flows只是logName与resource.type不同。4. 聚合趋势BigQuery SQL 模板对于高吞吐量场景优先检查项目中是否已关联 BigQuery 数据集例如big_query_linked_dataset或_AllLogs。使用 BigQuery MCP 的execute_sql只读执行对应execute_sql_readonly执行以下 SQL 模式SELECT timestamp, JSON_VALUE(jsonPayload.connection.src_ip) AS src_ip, JSON_VALUE(jsonPayload.connection.dest_ip) AS dest_ip, CAST(JSON_VALUE(jsonPayload.bytes_sent) AS INT64) AS bytes_sent FROM {project_id}.{dataset_id}._AllLogs WHERE log_name IN ( projects/{project_id}/logs/compute.googleapis.com%2Fvpc_flows, projects/{project_id}/logs/networkmanagement.googleapis.com%2Fvpc_flows ) AND timestamp TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) ORDER BY timestamp DESC LIMIT 10逐段拆解_AllLogs是 Cloud Logging 关联到 BigQuery 后的统一日志数据集表{dataset_id}需替换为实际数据集名log_name IN (...)与日志过滤器一致同时覆盖两个来源JSON_VALUE(...)从jsonPayload中提取 JSON 字段这是 BigQuery 侧读取流日志负载的标准方式CAST(... AS INT64)把bytes_sent字符串转为整数便于后续求和、排序时间窗口用TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)限定最近 1 小时生产环境中可按需改为INTERVAL 6 HOUR/INTERVAL 24 HOUR等。4.1 CLI 兜底gcloud logging read 与 bq query当 MCP 工具不可用时使用gcloud与bq命令完成同样工作。查看日志gcloudgcloud logging read (logName:projects/{project_id}/logs/compute.googleapis.com%2Fvpc_flows OR logName:projects/{project_id}/logs/networkmanagement.googleapis.com%2Fvpc_flows) AND resource.typegce_subnetwork --project {project_id} --limit 10 --format json --quiet聚合趋势bqbq query --use_legacy_sqlfalse --project_id {project_id} SELECT timestamp, JSON_VALUE(json_payload.connection.src_ip) AS src_ip, JSON_VALUE(json_payload.connection.dest_ip) AS dest_ip, CAST(JSON_VALUE(json_payload.bytes_sent) AS INT64) AS bytes_sent FROM {project_id}.{dataset_id}._AllLogs WHERE log_name IN ( projects/{project_id}/logs/compute.googleapis.com%2Fvpc_flows, projects/{project_id}/logs/networkmanagement.googleapis.com%2Fvpc_flows ) AND timestamp TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) ORDER BY timestamp DESC LIMIT 10 注意 BigQuery 侧字段使用下划线命名json_payload、log_name而 Cloud Logging 侧是驼峰命名jsonPayload、logName两者不要混用。这一点在通用 BigQuery 指南中有专门强调。5. 通用 BigQuery 指南Schema 校验、RTT 聚合与防重复计数5.1 Schema 校验先bq show --schema再执行在不确定字段大小写例如jsonPayload还是json_payload时必须先运行bq show --schema source校验 schema 后再执行查询。仓库 SKILL.md 给出了完整的错误恢复流程适用于Unrecognized name或 schema 不匹配错误校验 Schemabq show --schema --formatjson {project_id}:{dataset_id}.{table_id}确认字段名与大小写Dry Run用bq query --use_legacy_sqlfalse --dry_run {query_text}做试运行在不产生执行成本的前提下验证字段引用是否合法重试修正后重新执行查询。5.2 延迟RTT聚合首选round_trip_time.median_msecVPC Flow Logs 中用于 RTT 分析的主要字段是json_payload.round_trip_time.median_msec类型为double提供亚毫秒精度的中位数延迟同时覆盖TCP 与 FalconFalcon 是 Google 内部的拥塞控制/传输协议两类流量分析时按reporterSRC或DEST过滤避免流量规模被重复计数。5.3 备选TCP-only 的rtt_msec对于纯 TCP 流量还可以使用json_payload.rtt_msec类型为int64RTT 取整毫秒精度仅对 TCP 流量填充覆盖范围比round_trip_time.median_msec更窄可按下述方式做聚合统计SELECT AVG(json_payload.rtt_msec) AS average_rtt_msec, MAX(json_payload.rtt_msec) AS max_rtt_msec FROM ...字段选型结论一般情况下round_trip_time.median_msec因精度更高、覆盖更广而优先于rtt_msec只有在确认场景为纯 TCP 且对整毫秒精度足够时才使用后者。6. 可视化分析Flow Analyzer除了日志与 SQLGoogle Cloud 控制台的Flow Analyzer网络智能中心提供可视化流量分析用于识别 Top Talkers支持可视化展示区域region、VPC 与实例之间的流量流向按源或目的维度过滤识别高带宽或高延迟连接。在使用该技能的所有分析任务中SKILL.md 的边界条款要求始终在答复中包含指向 Flow Analyzer 的 Google Cloud Console 链接https://console.cloud.google.com/net-intelligence/flow-analyzer以便用户从文本结果快速跳到可视化界面交叉验证。7. 关键字段速查表下表汇总了 VPC Flow Logs 分析中最常用的字段及其语义出处vpc-flow-analysis.md字段类型含义与使用要点src_ip/dest_ipstring连接源/目的 IP 地址位于jsonPayload.connection下如jsonPayload.connection.src_ipbytes_sent/packets_sentint流量规模bytes_sent常用于计算传输量并排序识别 Top Talkersround_trip_time.median_msecdoubleRTT 分析首选字段亚毫秒精度覆盖 TCP 与 Falcon 流量rtt_msecint64整毫秒 RTT仅 TCP 流量精度与覆盖均弱于median_msecreporterstring通常为src或dest标识哪一侧记录了该流聚合流量规模时必须按它过滤以避免重复计数结合仓库中 mcp-usage.md 与 SKILL.md 的补充说明还有两个实战细节元数据感知子网可能配置了EXCLUDE_ALL_METADATA导致 VPC Flow Logs 中 VM 名为 NULL。若按 VM 名查询无结果应改用内部 IPjsonPayload.connection.src_ip重试字段大小写BigQuery 侧统一使用json_payload下划线命名如json_payload.connection.src_ip、json_payload.bytes_sent、json_payload.round_trip_time.median_msecCloud Logging 过滤器侧使用jsonPayload驼峰命名二者不可混用。8. 在 Agent 工作流中的定位与执行边界理解这份参考文档在 Agent 工作流中的位置有助于正确使用它。根据 SKILL.md 的编排先查 BigQuery 关联数据集再查 Cloud Logging高吞吐量分析或聚合一律优先走_AllLogs这是找趋势与 Top Talkers 的首选路径BigQuery 数据一旦可用即为最终结论不要再用 Monitoring API 复核计数Top-N / 流量规模类任务统一走 BigQuery 聚合禁止对单条时间序列手动聚合结果导向及时终止一旦拿到直接答案即使结果是 0、无流量立即汇报并结束不要为了更漂亮的答案去翻更活跃的资源同时禁止在度量与日志之间做对账式二次验证除非用户明确询问为何两者不一致禁止辅助脚本所有数据获取与解析都应通过直接的bq、curl、gcloud工具调用完成不写落地到磁盘的.sh/.py脚本以减少环境与权限错误导致的调查超时。此外仓库要求在执行任何 BigQuery 查询前先打印生成的 SQL 供审查且禁止在未获用户许可的情况下做第二次探查例如发现防火墙拦截后再去查 VPC 流日志。9. 快速上手一次典型排查的最小路径综合全文一次完整的 VPC 流量分析可归纳为四步确认目标与模式判断是看单条事件Cloud Logging还是看趋势/规模BigQuery探索可选用list_log_entries加本文第 3 节的双来源过滤器查看最近日志细节聚合对_AllLogs执行本文第 4 节的 SQL 模板按reporter过滤避免重复计数用round_trip_time.median_msec做延迟分析不确定字段大小写时先bq show --schema校验可视化兜底把 Flow Analyzer 链接随结论一并交付便于用户直观查看区域、VPC、实例间的流量流向与 Top Talkers。仓库中其余参考文档firewall-analysis.md、cloud-nat-analysis.md、metrics-analysis.md、connectivity-tests.md、vpc-flow-logs-cost-estimation.md与本文相互配合分别覆盖防火墙规则校验、NAT 审计、指标趋势、路径诊断与成本估算共同构成完整的网络可观测性工具箱。【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表