1.
准备工作与先决条件
- Google Cloud 项目已创建且你有 Owner 或 Editor 权限。
- 已启用 API:Compute Engine、Cloud Logging、Cloud Monitoring、BigQuery(如需导出)。运行:gcloud services enable compute.googleapis.com logging.googleapis.com monitoring.googleapis.com bigquery.googleapis.com。
- 安装并配置 gcloud CLI,设置默认项目与区域(gcloud config set project PROJECT_ID; gcloud config set compute/region asia-east1)。
2.
在台湾区域预留静态外部IP(原生IP)
- 预留区域性静态IP:gcloud compute addresses create taiwan-static-ip --region=asia-east1。
- 查看IP详情:gcloud compute addresses describe taiwan-static-ip --region=asia-east1。记录 address 字段(例如 34.x.x.x)。
- 将该IP分配给VM:gcloud compute instances add-access-config INSTANCE_NAME --zone=asia-east1-a --address=34.x.x.x(若创建新实例,可在创建时指定 --address)。
3.
启用VPC子网流量日志(VPC Flow Logs)以收集网络层数据
- 找到子网并启用流日志:gcloud compute networks subnets update SUBNET_NAME --region=asia-east1 --enable-flow-logs。
- 流日志默认发送到 Cloud Logging,可在Cloud Console的 Logging → Logs Explorer 搜索 resource.type="gce_subnetwork" 或 logging.googleapis.com/flow。
- 可调整采样率与聚合选项:在 Console 子网设置中修改 Flow logs 配置,或使用 gcloud patch 命令传入 --enable-flow-logs 和相关参数。
4.
在实例上安装 Google Ops Agent(收集系统与应用日志与指标)
- 下载安装脚本并执行(Debian/Ubuntu 与 RHEL/CentOS 通用):curl -sSO https://dl.google.com/cloudagents/install-ops-agent.sh && sudo bash install-ops-agent.sh。
- 编辑配置文件(/etc/google-cloud-ops-agent/config.yaml)来定义要收集的日志路径、metrics、采集频率等,例如收集 /var/log/nginx/*.log。
- 重启或检查服务状态:sudo systemctl status google-cloud-ops-agent;在 Cloud Logging 与 Cloud Monitoring 中验证数据是否到达。
5.
将日志导出到 BigQuery、Cloud Storage 或第三方(便于分析)
- 创建 BigQuery 数据集(bq mk --location=ASIA dataset_name)。
- 新建日志导出(sink)到 BigQuery:gcloud logging sinks create sink-to-bq bigquery.googleapis.com/projects/PROJECT_ID/datasets/dataset_name --log-filter='resource.type="gce_instance"'。
- 授权 sink 的服务账号对 BigQuery 数据集具有写权限:按照命令输出的服务账号,在 BigQuery IAM 中赋予 roles/bigquery.dataEditor 或 dataViewer 写权限。
6.
在 Cloud Monitoring 中创建仪表盘与告警(监控台湾IP相关服务)
- 打开 Cloud Monitoring → Dashboards → Create Dashboard,添加 chart 选择 metric(例如 VM 内存、CPU、网络收发包);用 filter 限定 resource.labels.instance_id 或 region=asia-east1。
- 创建告警策略:Monitoring → Alerting → Create Policy,选择条件(如 network egress 突增或 VPC Flow Logs 中的拒绝流量增加),并配置通知渠道(电子邮件、Slack、PagerDuty)。
- 建议设置基于流量异常的告警(例如五分钟内外发包量突增 3 倍),以及实例健康检查与可用性检测(Uptime Checks)。
7.
集成 Grafana / Prometheus(可视化高级分析)
- 使用 Managed Service 或自建 Grafana:若使用 Managed Grafana,可直接在 Grafana 中添加 Google Cloud Monitoring Data Source(需创建服务账号并下载 JSON key)。
- 若导出到 BigQuery,可在 Grafana 中添加 BigQuery 插件并配置项目与数据集,编写 SQL 仪表查询台湾 IP 的流量趋势。
- 对于 Prometheus,使用 Prometheus Remote Write 至 Cloud Monitoring 或在 VM 上运行 node_exporter,并通过 exporter 将指标转发到 Monitoring 或 Grafana。
8.
常见故障排除与最佳实践
- 若日志未到达 Logging:检查 Ops Agent 是否运行、日志路径配置是否正确、API 是否启用与网络出口策略。
- 若 Flow Logs 没数据:确认子网是否启用 flow logs,检查 IAM 权限及日志采样设置。
- 最佳实践:对重要日志设置导出备份到 Cloud Storage;对敏感数据做日志过滤或脱敏;对导出到 BigQuery 的表设置分区以节省费用。
9.
示例一:端到端操作命令清单(快速复刻)
- 启用 API:gcloud services enable compute.googleapis.com logging.googleapis.com monitoring.googleapis.com bigquery.googleapis.com。
- 预留 IP:gcloud compute addresses create taiwan-static-ip --region=asia-east1。
- 启用子网 flow logs:gcloud compute networks subnets update SUBNET --region=asia-east1 --enable-flow-logs。
- 安装 ops agent:curl -sSO https://dl.google.com/cloudagents/install-ops-agent.sh && sudo bash install-ops-agent.sh。
- 创建 BigQuery sink:gcloud logging sinks create to_bq bigquery.googleapis.com/projects/PROJECT_ID/datasets/dataset_name --log-filter='resource.type="gce_instance"'.
10.
问:如何确认分配到台湾的外部IP是真正来自 asia-east1 区域?
- 答:在控制台或使用 gcloud describe 命令查看地址属性,执行 gcloud compute addresses describe taiwan-static-ip --region=asia-east1,检查返回的 region 字段应为 asia-east1,并确认 address 字段在实例的 access-config 中被使用。若 IP 被错误区域分配,需释放并在正确区域重新创建。
11.
问:VPC Flow Logs 能否分析到具体到台湾IP的入站/出站目标并生成告警?
- 答:可以。启用 Flow Logs 后日志会记录五元组(源/目的IP与端口、协议等),将日志导出到 BigQuery 后可按目的IP(即你的台湾外部IP)聚合查询并在 Monitoring 中基于查询结果创建告警或在 BigQuery 上建立定时查询触发通知。
12.
问:若我要把日志发送到第三方 ELK/Grafana,推荐哪种方式最稳定?
- 答:推荐先将日志导出到 Cloud Storage 或 Pub/Sub,再由第三方系统通过 connector 或 Logstash 从 Storage/Pub/Sub 拉取数据。Pub/Sub 方式延迟低且可扩展,适合实时分析;Storage 适合归档与批处理。确保服务账号权限与网络连通性正确配置。
来源:gcp 台湾原生ip 日志分析与监控工具集成案例