You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus与GCE服务通信异常问题求助

解决Prometheus v2.42.0 GCE服务发现失败问题

问题背景

  • 环境:Debian服务器,Prometheus从v2.24.1升级至v2.42.0
  • 现象:沿用原有prometheus.yml配置后,仅GCE服务发现功能失效,其余功能正常
  • 已配置:应用默认凭证存放于$HOME/.config/gcloud/application_default_credentials.json
  • GCE服务发现配置片段:
- job_name: cloud
  honor_labels: true
  gce_sd_configs:
     - project: 'dynamic-mystery-xxxxx'
       port: 80
       zone: 'us-west1-b'
       filter: '(status="RUNNING")'
       refresh_interval: 5s
  relabel_configs:
    - source_labels: ['__meta_gce_public_ip']
      regex: (.*)
      replacement: '${1}:80'
      target_label: '__address__'
    - source_labels: ['__meta_gce_instance_name']
      target_label: 'name'
  • 错误日志(截断):
caller=manager.go:317 level=error component="discovery manager scrape" msg="Cannot create service discovery" err="error setting up communication with GCE service: google>

解决步骤

1. 确保Prometheus进程能读取凭证文件

Prometheus通常以prometheus系统用户运行,默认无法访问当前用户$HOME下的凭证:

  • 复制凭证到Prometheus可访问的路径:
    cp $HOME/.config/gcloud/application_default_credentials.json /var/lib/prometheus/gce-credentials.json
    
  • 修改文件权限:
    chown prometheus:prometheus /var/lib/prometheus/gce-credentials.json
    chmod 600 /var/lib/prometheus/gce-credentials.json
    
  • 在gce_sd_configs中显式指定凭证路径:
    gce_sd_configs:
       - project: 'dynamic-mystery-xxxxx'
         port: 80
         zone: 'us-west1-b'
         filter: '(status="RUNNING")'
         refresh_interval: 5s
         credentials_file: '/var/lib/prometheus/gce-credentials.json'
    

2. 验证凭证有效性

用gcloud工具测试凭证能否正常访问GCE资源:

# 检查凭证是否能生成访问令牌
gcloud auth application-default print-access-token
# 检查能否列出目标项目的实例
gcloud compute instances list --project dynamic-mystery-xxxxx --zone us-west1-b

若命令失败,重新生成应用默认凭证:

gcloud auth application-default login

生成后再次复制到Prometheus路径并更新权限。

3. 检查账号权限

确保凭证对应的账号拥有GCE实例列表权限:

  • 为账号添加Compute Viewer角色(包含compute.instances.list权限):
    gcloud projects add-iam-policy-binding dynamic-mystery-xxxxx \
      --member="user:YOUR_EMAIL" \
      --role="roles/compute.viewer"
    

4. 获取完整错误日志

当前日志截断,查看完整错误信息以定位根因:

journalctl -u prometheus --since "10 minutes ago" | grep -A 5 "error setting up communication with GCE service"

完整日志可能提示权限不足、凭证过期、API未启用等具体问题。

5. 检查Compute Engine API是否启用

确认目标GCP项目已启用Compute Engine API:

gcloud services list --enabled --project dynamic-mystery-xxxxx | grep compute.googleapis.com

若未启用,执行启用命令:

gcloud services enable compute.googleapis.com --project dynamic-mystery-xxxxx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:10:19