You need to enable JavaScript to run this app. 如何配置GCP上的Prometheus自动抓取新增Compute Engine实例指标
优惠活动
大模型
产品
解决方案
定价
更多

如何配置GCP上的Prometheus自动抓取新增Compute Engine实例指标

完全可以靠Prometheus原生的GCE服务发现能力实现自动识别新实例的需求,不需要K8s环境,也不用每次新实例上线就改配置、重载服务。

实现逻辑

Prometheus 自带的GCE服务发现模块(gce_sd_config)会按固定周期(默认1分钟)调用GCE API拉取当前项目下的实例元数据,你可以提前定义好目标筛选规则,符合规则的实例会被自动纳入抓取列表。新增实例只要匹配预设规则,就会被自动识别,不需要手动维护静态实例清单。

前置准备
  • 找到运行Prometheus的Compute Engine实例绑定的服务账号,为其添加Compute Instance Viewer权限,保证服务账号可以正常查询项目下的实例列表。直接复用实例内置的服务账号鉴权即可,不需要额外生成离线密钥文件,减少密钥泄露风险。
  • 提前给同类被监控实例定义统一的识别标识,比如统一打自定义标签、固定实例命名前缀,方便Prometheus精准筛选目标,避免误抓其他业务的实例。
核心配置参考

下面是适配Nginx监控场景的配置示例,替换项目ID、zone、筛选规则、端口即可使用:

scrape_configs:
  - job_name: 'auto-discovered-nginx'
    # GCE服务发现核心配置
    gce_sd_configs:
      - project: '你的GCP项目ID'
        # 如果实例分布在多个可用区,可以重复添加多个zone配置
        zone: 'asia-northeast1-a'
        port: 9100 # 对应你部署的nginx-exporter/node_exporter端口
        # 筛选规则:只抓打了monitoring_target=nginx标签、处于运行状态的实例
        filter: 'labels.monitoring_target = nginx AND status = RUNNING'
    # 重写抓取地址,用实例内网IP通信
    relabel_configs:
      - source_labels: [__meta_gce_instance_network_interface_0_network_ip]
        target_label: __address__
        replacement: '$1:9100'
      # 把实例元数据附加到指标上,方便后续查询
      - source_labels: [__meta_gce_instance_name]
        target_label: gce_instance_name
      - source_labels: [__meta_gce_instance_zone]
        target_label: gce_zone
日常使用流程

后续新增Nginx实例时,只要满足两个条件就会被自动采集:

  • 新建实例时打上约定的monitoring_target=nginx自定义标签(或者匹配你设置的实例名前缀规则)
  • 实例上正常运行监控指标暴露服务,对应端口可被Prometheus通过内网访问

Prometheus在1分钟的发现周期结束后就会自动把新实例加入抓取列表,全程不需要调整任何配置。

常见注意事项
  • 筛选规则尽量精确,不要漏加运行状态判断,避免把已停机、其他业务的实例纳入抓取范围,产生无效请求。
  • 因为默认用实例内网IP做抓取地址,要保证Prometheus和所有被监控实例网络互通,同一VPC下默认满足这个要求,跨VPC需要提前配置对等连接。
  • 如果不想用标签做识别规则,也可以把filter改写成实例名前缀匹配的形式,比如name = nginx-*,只要新实例名以nginx-开头且处于运行状态,就会被自动发现。

内容的提问来源于stack exchange,提问作者rschirin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 10:06:09